Макрос Excel для извлечения строк в зависимости от значения за предыдущие дни и 30 элементов плюс полная категория?

У меня есть файл Excel, который изначально импортирует данные о запасах из нашей облачной бухгалтерской программы через веб-запрос .iqy.

Заголовки столбцов:

A1= Quantity B1= Item C1= Description D1= Bin Code

Теперь я создал макрос, который;

  1. Обновить данные

     Range("A1").QueryTable.Refresh False
    
  2. Удалить все товары с нулевым запасом

     Dim intRow
     Dim intLastRow
     intLastRow = Range("A65536").End(xlUp).Row
     For intRow = intLastRow To 1 Step -1
     Rows(intRow).Select
     If Cells(intRow, 1).Value = 0 Or Cells(intRow, 1) = "" Then
     Cells(intRow, 1).Select
     Selection.EntireRow.Delete
     End If
     Next intRow
    
  3. Автосортировка по бин-коду

     Range("A1:D1").Select
     Selection.AutoFilter
     Range("A2").Select
     Range("A1:D1668").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:= _
     xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
     DataOption1:=xlSortNormal
    
  4. Сохранить главный список

     Dim sFileName As String, sPath As String
     sPath = "C:\stock\ms\Master List " 
     sFileName = Format(Now(), "dd'mm'yy")
     ActiveWorkbook.SaveAs (sPath & sFileName)
    

Теперь это сложный момент,

Необходимо проверять не менее 30 единиц в день, однако корзина не может быть неполной! Таким образом, после выбора 30 элементов скрипту необходимо проверить, находится ли следующий элемент в той же корзине, что и 30-й элемент, и включить его в извлечение. Допустим, элемент 30 находится в корзине 10A2, а также элемент 31, 32, 33, 34, поэтому в целом 34 элемента (строки) необходимо извлечь в новую книгу и сохранить.

Этот процесс должен начинаться с образца предыдущих дней, поэтому механика должна выглядеть так:

  1. посмотрите в c \ stock \ sl \ Sample List -1 dd'mm'yy образец списка за -1 день, посмотрите на номер ячейки последнего элемента, скажем 10A1,

  2. возьмите номер ячейки следующих строк, 10A2,

  3. из первой строки, которая имеет 10A2, выберите 30 строк,

  4. Продолжайте, пока номер ячейки не изменится.

  5. сохраните этот файл как Sample List dd'mm'yy в c \ stock \ sl \

  6. отправить по электронной почте образец списка dd'mm'yy на [email protected]

Это должно иметь возможность повторяться. Также в субботу и воскресенье компания закрыта, поэтому по понедельникам следует вспомнить пятницу и т. Д., Также учитывая государственные праздники.

Любая помощь с этим спасет жизнь? Я не возражаю, если вы хотите изменить имена файлов, чтобы решить эту проблему с праздниками. Однако где-то для файлов необходимо поставить отметку времени.


person user1027365    schedule 04.11.2011    source источник


Ответы (2)


Возможно, вы захотите проверить объект Dictionary, он, вероятно, поможет в этой задаче. Если у вас возникнут какие-либо вопросы, задайте другой вопрос. Не уверен, что кто-то еще захочет дать вам более подробный ответ на этот вопрос.

Ваш проект может быть достаточно большим, чтобы вы могли работать с классами. тоже.

person Jon49    schedule 04.11.2011

Пожалуйста, избегайте каждого Select в вашем коде.

Например,

Range("A1:D1").Select
Selection.AutoFilter

можно заменить на:

Range("A1:D1").AutoFilter
person JMax    schedule 04.11.2011