Я застрял с довольно странной ошибкой (?), Используя функцию Find.По какой-то причине он не может найти следующую строку (n + 1), хотя он находит любую другую строку в определенном диапазоне.
Sub band()
Dim laik As String
Dim row1 As Integer
Dim DbSh As Worksheet
Set DbSh = ThisWorkbook.Sheets("Sheet1")
eil = 9 'row in sheet
On Error Resume Next
Do While DbSh.Cells(eil, 1).Value <> ""
laik = DbSh.Cells(eil, 3).Value
row1 = DbSh.Range("C" & eil + 1 & ":C1000").Find(laik, LookIn:=xlValues, LookAt:=xlWhole).row
If Err.Number <> 0 Then Err.Number = 0: GoTo next1
If DbSh.Cells(eil, 4).Value = DbSh.Cells(row1, 4).Value And DbSh.Cells(eil, 6).Value = DbSh.Cells(row1, 6).Value And DbSh.Cells(eil, 8).Value = DbSh.Cells(row1, 8).Value Then
DbSh.Cells(eil, 5).Value = DbSh.Cells(eil, 5).Value & ", " & DbSh.Cells(row1, 5).Value
DbSh.Range(row1 & ":" & row1).EntireRow.Delete
eil = eil - 1 'subtract, still looking for more same values
End If
next1:
eil = eil + 1
Loop
End Sub
По сути, он ищет те же значения ячеек (eil, 3) и, если он соответствует некоторым критериям в столбцах D, F и H, найденная строка добавляется в строку «eil» (столбец E)а затем он удаляется.Если одинаковые значения в столбце C находятся рядом друг с другом (eil и eil + 1),
row1 = DbSh.Range("C" & eil + 1 & ":C1000").Find(laik, LookIn:=xlValues, LookAt:=xlWhole).row
находит вторую доступную строку (из eil + 2, eil + 3 и т. Д.), Пропуская eil +1 рядЕсли я удаляю +1 из Range («C» & eil + 1 & «: C1000»), оставляя только Range («C» & eil & «: C1000»), он находит ту же строку.Пока у меня есть обходной путь, но было бы здорово узнать, почему «Find» пропускает следующую строку.