Страницы: 1
RSS
Изменить способ поиска по столбцам.
 
Название темы: Изменить способ поиска по столбцам.


Всем Добрый вечер, когда то давным давно, тут на форуме мне помогли с одним макросом:
Код
Dim shs As Object, rs As Range
    Application.ScreenUpdating = False
    For Each shs In Worksheets
        With shs
            Set rs = .Columns(4).Find("Итог")
            If Not rs Is Nothing Then
                .Columns(rs.Column).Resize(, 1).Copy .Range("Q1")
                .Columns(rs.Column).Resize(, 1).Delete Shift:=xlToLeft
            End If
        End With
    Next
    Application.ScreenUpdating = True
По стечению разных обстоятельств, Set rs = .Columns(4).Find("Итог"),  слово "Итог" теперь находится и в 4 и в 5 и иногда даже в 6 столбце.
Как это можно исправить и какие есть варианты решения проблемы?
Всем спасибо за помощь.
Изменено: karim81 - 13.06.2019 21:07:44
 
Цитата
karim81 написал: и в 4й и в 5й и иногда даже в 6й колонне.
Так в каком столбце искать-то, если это 'итого' может быть в 3-х столбцах одновременно?
Согласие есть продукт при полном непротивлении сторон
 
Все верно, может быть и там и там и там :)  
 
Ну например Ваш 'Итог' сразу во всех трех столбцах присутствует. Вам то какой нужен? Первый найденный? Последний?
Согласие есть продукт при полном непротивлении сторон
 
Так как это несколько листов, нужно что бы учитывались все возможные позиции. Если к примеру (раньше) это был четко 4 столбец, то теперь это значение стало "плавать" на всех страницах.
 
karim81, то, что Вы называете колоннами, принято называть столбцами.
 
Может есть возможность как то добавить and, or или что то в этом духе?
 
karim81, Вы же не отвечаете на важные вопросы:
Цитата
Sanja написал:
например Ваш 'Итог' сразу во всех трех столбцах присутствует. Вам то какой нужен? Первый найденный? Последний?
Нашли во всех трёх - что дальше делать?
 
Во всех трех не будет. Только в одном из трех.

Цитата
Юрий М написал: Нашли во всех трёх - что дальше делать?
Может есть просто возможность сделать поиск на всем листе? А не только в 4ом столбце?
Так как "Итог" будет присутствовать только строго в одном столбце. В других его не будет.
 
Код
Sub Macro1()
Dim Rng As Range
    Set Rng = Union(Columns(4), Columns(5), Columns(6)).Find(what:="Итог", LookIn:=xlFormulas, LookAt:=xlWhole)
    If Not Rng Is Nothing Then
        MsgBox "Найдено в столбце " & Rng.Column
    End If
End Sub
 
Можно и не указывать столбцы, если искомое будет только в одной ячейке:
Код
Set Rng = Cells.Find(what:="Итог",...
 
Пошел обдумывать и тестировать оба варианта. Спасибо.
Страницы: 1
Наверх