Я новичок в макросах Excel и vba. У меня есть файл Excel с примерно 300000 строками на первом листе, где есть идентификаторы элементов в первом столбце (их может быть несколько, которые имеют одинаковое значение), и около 1000 строк на втором листе (первый столбец также содержит идентификаторы элементов, но они уникальны здесь). мне нужно написать макрос, который скрывает строки на первом листе на основе второго листа. Я имею в виду, что мне нужно перебросить все строки на первом листе, и если значение первой ячейки не соответствует ни одной ячейке первого столбца второго листа, скрыть эту строку.
Я знаю, что это будет очень медленно, поскольку каждый раз, когда мне нужно сравнивать значение ячейки с другими значениями ячейки 1000, а у меня 300 000 строк. Как мне это сделать? не могли бы вы предложить самый быстрый способ? любая помощь будет оценена, заранее спасибо.
ИЗМЕНИТЬ после долгих поисков, я сделал свой собственный макрос
Sub hide()
Dim MyCell, Rng As Range, Rn2 As Range
Dim MyCell2
Dim id(1 To 1392) As String
Set Rng = Sheets("Sheet0").Range("C162403:C339579")
Set Rng2 = Sheets("IT stuff").Range("A1:A22031")
i = 1
For Each MyCell2 In Rng2
If Not MyCell2.EntireRow.Hidden Then
id(i) = MyCell2.Value
i = i + 1
End If
Next MyCell2
j = 0
For Each MyCell In Rng
For A = 1 To 1392
If MyCell = id(A) Then
j = 1
End If
Next A
If j = 0 Then
MyCell.EntireRow.Hidden = True
ElseIf j = 1 Then
j = 0
End If
Next MyCell
End Sub
сейчас он обрабатывает мой файл Excel, но он очень медленный ... как я могу его улучшить ??
vba hide columns
... см. Это: ТАК поиск - person d-stroyer   schedule 07.08.2013