Пытаюсь создать макрос по переносу данных с "Лист3" на "Лист1". При переносе данных они поочередно сохраняются в трех ячейках на "Лист1". Далее я пытаюсь с помощью цикла If пройти по столбцу О, сравнивая их с данными в ячейке cells(1,1). При запуске макроса в строке If Cells(row1, col1) = Cells(1, 1) Then возникает ошибка 1004, указанная в теме. Сначала я исправил формат (числовые данные передавались в текстовом формате). Ошибка не ушла. Создал отдельный модуль, он сравнивает эти ячейки и выдает желаемый результат. Часть кода
Код
For x = 25 To 77 'проверка всех ячеек диапазона'
b = Cells(7, 47)
For i = 1 To a 'проверка ячейки массива на соответствие номеру блока'
v = 1
If Cells(c, r) = b Then 'сравнение с номером блока'
Cells(c, r).Select
Selection.Copy
Sheets("Лист1").Select
Cells(1, 1).Select
ActiveSheet.Paste
Selection.NumberFormat = "General" 'форматирование ячеек из текстового формата в числовой'
Selection.Value = Selection.Value
Sheets("Лист3").Select
If Cells(c + 1, t) = "Сигнал, 0" Then 'проверка соответствия строки сигнал,0'
For y = t + 1 To 45
If Cells(c + 1, y) <> 0 Then
If v <= s Then
Cells(c + 1, y).Select 'разделение на диапазоны идущие вверх и вниз'
Selection.Copy
Sheets("Лист1").Select
Cells(1, 3).Select
ActiveSheet.Paste
Cells(1, 3).Select
Selection.NumberFormat = "General"
Selection.Value = Selection.Value
For z = 1 To 45
If Cells(row1, col1) = Cells(1, 1) Then 'СТРОКА, ГДЕ ПРОИСХОДИТ ОШИБКА 1004'
Cells(row2, col2) = Cells(1, 3)
col2 = col2 + 1
End If
row1 = row1 - 6
Next z
Sheets("Лист3").Select
v = v + 1
Else
Sheets("Лист3").Select
Cells(c + 1, y).Select
Selection.Copy
Sheets("Лист1").Select
Cells(1, 4).Select
ActiveSheet.Paste
Sheets("Лист3").Select
End If
End If
Next y
End If
Число задаваемых точек, в данном случае равно 9. Код громоздкий, но я еще учусь.
коллега, я сам в вба 0 без палочки, но у вас там ячейка а1 сравнивается с ячейкой а1 причем на 1м листе. + Не уверен что корректно так прописывать, т.к. rov 1 - строка 1 со столбцом тоже самое. Эквивалент cells(1,1) а не между листами ли сравнение?? просто тогда надо листы на которых сравнимые ячейки прописать, в вашем коде не вижу этого. Если фигню сказал, то прошу сторожил меня поправить.
Код
if Лист1.cells(1,1).value = лист3.cells(1,1).value
и это. Код в примере не просматривал, сорри. Т.к. зашел с телефона и в помощь мне только гугл таблици.
опозорился)))) но в защиту себя - я изначально говорил что 0 без палки я))) на счет коллеги, это потому что мультиметр мало кто правильно называет)) спасибо за