В настоящий момент у меня есть электронная таблица с набором данных приличного размера, состоящим из 55 тысяч строк, и, скажем, 15 столбцов, которые не все заполнены.Я хотел бы настроить макрос на другой вкладке, где вы можете выбрать код продукта из выпадающего меню.После выбора вы нажмете кнопку, и программа будет выполнять итерацию по набору данных, добавляя любые значения ячеек в массив перед выпуском результатов.
Набор данных выглядит примерно так:
prod1 code garbage info1 info2 ... info10
1 23 1 k a b ... j
2 27 1 k a2 b
3 57 2 k a b c
4 ...
5
6
7
8
9
10
Я пытаюсь установить значение для условий на значение раскрывающегося списка в ведомости утверждений и перебрать столбец F, где совпадает код ing.и если он находит совпадение, итерирует горизонтально по столбцам info #, пока не достигнет пустого.В этот момент он снова начнет двигаться вертикально вниз, пока либо не достигнет последнего значения в таблице, либо не найдет другое совпадение и не запишет новые информационные значения.
В идеале каждое информационное значение отправляется в массив и распечатывается в ячейке C5: CX в электронной таблице.было бы еще лучше, если бы это могло удалить дубликаты, но я боюсь, что не знаю достаточно о VBA, чтобы заставить его работать.
До сих пор я пытался изменить значения, изменить классы, изменить порядок и просто не могу понять, что я делаю.Все, что я смог найти, было конкретным, и я не мог заставить его работать.
Sub refresh()
Let ing = ThisWorkbook.Sheets("claim_report").Range("B2").Value
Dim Claims
Dim i As Integer, j As Integer
j = 0
For Each cell In ThisWorkbook.Sheets("fulldb").Range("F2:F56000")
If cell.Value = ing Then
For i = 6 To 15
While cell.Offset(columnOffset:=i) <> ""
Claims(j) = cell.Value
i = i + 1
Wend
Next
End If
Next
Range("C4:C100") = Claims
End Sub
Причина, по которой у меня есть i 6-> 15, заключается в том, что строки смещены от столбца F на 6 столбцов.поэтому мысль заключалась в том, что он перебирал ячейки M2, N2, O2 ... V2, пока я не нашел пустую ячейку.
В некоторых строках некоторые из информационных столбцов пустые, поэтому вы можете заполнить 1,2,3,4, оставшиеся пустыми или 1-10, поэтому я решил использовать пустую ячейкусломать функцию.
Что бы я хотел, используя мой набор данных в качестве примера, это ввести код 1, чтобы макрос создал массив Claims, добавил значения столбцов, где код соответствует входному коду в другой электронной таблице, [a, b, ..., j, a2].Затем он будет введен в другой лист в ячейке C4 как транспонированный список.
Например,
C4 : a
C5 : b
C6 : ...
C14 : j
C15 : a2