Описание проблемы: Прокрутите ряды Excel Max (около 10000000), чтобы найти инстр. После нахождения instr, возьмите значения и скопируйте значения на другой лист. Каждый раз, когда вы найдете совпадение, которое является instr, скопируйте значение только совпадения и вставьте его на другой лист.
Проблема: я использую вложенный цикл, и мой цикл работает медленно, поэтому для 10 миллионов строк это занимает около 19:37 минут. Я рассчитал это. Итак, первый вопрос: есть ли другие способы сделать это или как сделать это быстрее, чем 20 минут, можно ли сравнить 20 миллионов (каждый лист 10 миллионов строк, 10 миллионов строк) строк в течение 1 минуты или двух. Вот мой текущий код
Sub zym()
Dim x As Long, lastrow As Long, lastrowx As Long, i As Long, ii As Long
Dim ws As Worksheet, ws2 As Worksheet, b As String
Dim j As Long
Set ws = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set ws3 = Worksheets("Sheet3")
j = 1
T1 = GetTickCount
lastrow = ws.UsedRange.Rows.Count + 1
lastrowx = ws2.UsedRange.Rows.Count + 1
ReDim sheet1array(1 To lastrow)
ReDim sheet2array(1 To lastrowx)
For i = LBound(sheet1array) To UBound(sheet1array)
b = "-" & ws.Range("A" & i) & "-"
For ii = LBound(sheet2array) To UBound(sheet2array)
If InStr(1, ws2.Range("A" & ii), b) > 0 Then
ws3.Range("A" & j) = ws2.Range("A" & ii)
j = j + 1
End If
Next ii
Next i
Debug.Print "Array Time = " & (GetTickCount - T1) / 1000#
Debug.Print "Array Count = " & Format(ii, "#,###")
End Sub