Michael_S, вроде бы оно! вопрос еще можно - в каких случаях при сравнении ячеек с числом значение ячейки может "искажаться" т.е. поиск ее находит а макрос упорно пропускает?
Michael_S, вроде бы оно! вопрос еще можно - в каких случаях при сравнении ячеек с числом значение ячейки может "искажаться" т.е. поиск ее находит а макрос упорно пропускает?luny
Последний вопрос не совсем понял. Если в параметрах поиска снят поиска снят флажок "Ячейка целиком", то, например ячейка с числом 55,35 будет найдена и при поиске "55", и при поиске "35", и при поиске просто запятой. В макросах тоже ТАК можно искать, если поставить цель. Но это уже вопрос другой темы.
Последний вопрос не совсем понял. Если в параметрах поиска снят поиска снят флажок "Ячейка целиком", то, например ячейка с числом 55,35 будет найдена и при поиске "55", и при поиске "35", и при поиске просто запятой. В макросах тоже ТАК можно искать, если поставить цель. Но это уже вопрос другой темы.Michael_S
Michael_S, я пробовал на оригинальном файле под который все делается - на одном листе ячейка предположим 12122 и другом 12122 - у обеих формат число и ноль знаков после запятой а макрос не удаляет почему то строку - при том что поиск находит ячейку ... - у меня недоумение
Michael_S, я пробовал на оригинальном файле под который все делается - на одном листе ячейка предположим 12122 и другом 12122 - у обеих формат число и ноль знаков после запятой а макрос не удаляет почему то строку - при том что поиск находит ячейку ... - у меня недоумениеluny
Сообщение отредактировал luny - Пятница, 09.05.2014, 17:41
Sub удаление№() Application.ScreenUpdating = False For rw1 = 2 To Sheets("список").Cells(Rows.Count, 1).End(xlUp).Row With Sheets("удаление") For rw2 = 1 To .Cells(Rows.Count, 1).End(xlUp).Row If .Cells(rw2, 1) <> "" And .Cells(rw2, 1) <> "~*" Then If Sheets("список").Cells(rw1, 1) = .Cells(rw2, 1) Then .Cells(rw2, 4) = Sheets("список").Cells(rw1, 2) Sheets("список").Rows(rw1).Delete Exit For End If End If Next End With Next Application.ScreenUpdating = True End Sub
[/vba] то цикл For rw1 = 2 To Sheets("список").Cells(Rows.Count, 1).End(xlUp).Row лучше проходить снизу вверх - тогда при удалении строк номера строк не сбиваются: For rw1 = Sheets("список").Cells(Rows.Count, 1).End(xlUp).Row to 2 step -1 ..может в этом дело...
Если вы про этот макрос: [vba]
Код
Sub удаление№() Application.ScreenUpdating = False For rw1 = 2 To Sheets("список").Cells(Rows.Count, 1).End(xlUp).Row With Sheets("удаление") For rw2 = 1 To .Cells(Rows.Count, 1).End(xlUp).Row If .Cells(rw2, 1) <> "" And .Cells(rw2, 1) <> "~*" Then If Sheets("список").Cells(rw1, 1) = .Cells(rw2, 1) Then .Cells(rw2, 4) = Sheets("список").Cells(rw1, 2) Sheets("список").Rows(rw1).Delete Exit For End If End If Next End With Next Application.ScreenUpdating = True End Sub
[/vba] то цикл For rw1 = 2 To Sheets("список").Cells(Rows.Count, 1).End(xlUp).Row лучше проходить снизу вверх - тогда при удалении строк номера строк не сбиваются: For rw1 = Sheets("список").Cells(Rows.Count, 1).End(xlUp).Row to 2 step -1 ..может в этом дело...Michael_S
Michael_S, я не на столько грамотный чтоб некоторые вещи понять с первого раза... "ок" нужно для того чтоб потом просмотреть как отработал макрос и только вы грамотный человек и сделали любопытный код ... - вероятность того что вы завязали в этой проверке какую либо переменную я не исключил - лучше спросить чем испортить....
Цитата
If .Cells(rw1, 1) <> "" and .Cells(rw1, 4) = "" Then
так потенциально вопрос закрывается?
Michael_S, я не на столько грамотный чтоб некоторые вещи понять с первого раза... "ок" нужно для того чтоб потом просмотреть как отработал макрос и только вы грамотный человек и сделали любопытный код ... - вероятность того что вы завязали в этой проверке какую либо переменную я не исключил - лучше спросить чем испортить....
Цитата
If .Cells(rw1, 1) <> "" and .Cells(rw1, 4) = "" Then