Братцы, доброго выходного дня вам всем! Есть у кого-нибудь желание отвлечься и подсобить?) Есть умная таблица с одной строкой шапки(заголовки). На другом листе есть два комбобокса, в которых отбираются значения из не смежных столбцов этой самой умной таблицы . Нужно определить номер строки, в которой есть и значение комбобокса1 и значение комбобокса2. Первое же совпадение будет и последним, другого не дано. Есть соображения на сей счет?)
iMrTidy, к сожалению, у меня под рукой сейчас нет своего файла - лежу в палате, домой отпустят только завтра. Пока лежал перебирал в голове недоделанное, придумать ничего не смог вот и обратился за помощью. Если есть идеи по написанному выше, набросайте, пожалуйста, а я уже доведу до нужной кондиции.)
Например, если значения находятся в первом и четвертом столбцах, тогда можно так попробовать:
Код
For i = 2 To Cells(Rows.Count, 1).End(xlUp).row
If Cells(i, 1).Value = ComboBox1.Value And _
Cells(i, 4).Value = ComboBox2.Value Then
MsgBox "Совпадение в строке " & (i)
Exit For
End If
Next i
_Igor_61, спасибо большое, что откликнулись! Примерно так я себе это и представлял в голове, но не могу сложить в ней же - в голове - как без MsgBoxа загнать этот i (этот номер строки) в переменную (задать как переменную), чтобы использовать ее дальше в коде для копирования нужных ячеек из искомой строки на другой лист.
Эльбрус написал: загнать этот i (этот номер строки) в переменную (задать как переменную), чтобы использовать ее дальше в коде для копирования нужных ячеек из искомой строки на другой лист
Зачем еще какая-то переменная если она (i) и так уже переменная? Да и копирование можно тут же организовать
Код
For I = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(I, 1) = ComboBox1.Value And Cells(I, 4) = ComboBox2.Value Then
Cells(I, 3).Copy Worksheets("Другой_лист").Range("A1")
Exit For
End If
Next I
Согласие есть продукт при полном непротивлении сторон
переменная уже задана i и № строки в нее загонит написанная _Igor_61, процедура а MsgBox - ничего никуда не загоняет, а сообщает, в какой строке найдено совпадение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Sanja, и Вам моя искренняя благодарность! Да, пожалуй, Вы правы. Просто я изначально замысливал (не очень грамотно, наверное) первым макросом определить номер строки, а вторым уже копировать нужные ячейки. Но Ваш вариант лучше, конечно же. Когда файла перед глазами нет, то трудновато приходится, особенно мне, который с vba на очень почтительное ВЫ. Спасибо ещё раз!
Привет! Наверное,я погорячился: если в пределах одного столбца есть повторяющиеся значения, то придётся перебирать тем или иным способом - Find ведь найдёт только первое (или последнее) значение. Если же дубликатов в каждом из столбцов не будет, то можно ))
Sub Macro1()
Dim Rng As Range, iRow As Long
With Sheets("Лист1")
Set Rng = .Columns(1).Find(what:=Me.ComboBox1, LookIn:=xlValues, LookAt:=xlWhole)
If Not Rng Is Nothing Then
iRow = Rng.Row
Set Rng = .Columns(3).Find(what:=Me.ComboBox2, LookIn:=xlValues, LookAt:=xlWhole)
If Not Rng Is Nothing Then
If Rng.Row = iRow Then MsgBox "Совпадение найдено в строке " & iRow
End If
End If
End With
End Sub
Если делать в стандартном модуле, то вместо Ме указать имя второго листа.
Sub Macro2()
Dim Rng As Range
With Sheets("Лист1")
Set Rng = .Columns(1).Find(what:=Me.ComboBox1, LookIn:=xlValues, LookAt:=xlWhole)
If Not Rng Is Nothing Then
If Rng.Offset(0, 2) = Me.ComboBox2 Then MsgBox "Совпадение найдено в строке " & Rng.Row
End If
End With
End Sub
Юрий М, повторений сочетания двух ячеек у меня не будет, так что об этой проблеме я не волнуюсь. Опробовать Ваш код не могу до завтра, но и так знаю, что это будет то, что надо.) Спасибо ещё раз!