Нужен простой макрос. Обычно необходимые мне макросы создаю сам с помощью опции "Запись Макроса". Но тут не пойму как его записать.
А макрос нужен элементарный. На Листе1 нужно найти значение активной ячейки из Листа2, остановиться на найденной ячейке, продвинуться на 8 ячеек вправо и стоп. Все действия возможно проделать и записать, кроме "на Листе1 найти значение активной ячейки из Листа2".
Кто-нибудь может подсказать эту часть?
Другие языки программирования и технологии
Excel. Макрос. Найти в Листе1 значение активной ячейки из Листа2.
Адрес активной ячейки определяется параметрами
ActiveCell.Row - строка и ActiveCell.Column - столбец.
И нам нужно на листе "Лист1" (допустим, на поле 1000х100 ячеек) найти значение той ячейки.
Значит, надо сделать что-то типа такого:
Dim i As Long, k As Long, ACR As Long, ACC As Long
Dim Flag As Boolean, Msg As String
Workbook("Лист2").Activate
With Workbook("Лист2")
ACR = .ActiveCell.Row : ACC = .ActiveCell.Column ' обратите внимание на точки!
End With
Workbook("Лист1").Activate
Flag = False
For i = 1 To 1000
For k = 1 To 100
If Workbook("Лист1").Cells(i, k) = Workbook("Лист2").Cells(ACR, ACC) Then
' Нашли на Листе1 ячейку, в которой записано то же самое, что в активной ячейке на Листе2
Workbook("Лист1").Cells(i, k+8).Select ' Ставим курсор на ячейку на 8 правее найденной
Msg = "Строка " & ACR & "; Колонка " & ACC ' Сообщаем миру о нашей находке
MsgBox (Msg) ' Выводим это сообщение на экран (если нужно)
Flag = True ' Устанавливаем признак, что ячейка найдена
End If
If Flag Then Exit For ' Выскакиваем из цикла, так как ячейка найдена и искать дальше не нужно
Next k
If Flag Then Exit For ' Выскакиваем из этого цикла тоже
Next i
End Sub
Можно, конечно, поискать и на ВСЁМ Листе1, но это будет ОЧЕНЬ долго.
i = 1048576 строк и k = 16384 колонки.
ActiveCell.Row - строка и ActiveCell.Column - столбец.
И нам нужно на листе "Лист1" (допустим, на поле 1000х100 ячеек) найти значение той ячейки.
Значит, надо сделать что-то типа такого:
Dim i As Long, k As Long, ACR As Long, ACC As Long
Dim Flag As Boolean, Msg As String
Workbook("Лист2").Activate
With Workbook("Лист2")
ACR = .ActiveCell.Row : ACC = .ActiveCell.Column ' обратите внимание на точки!
End With
Workbook("Лист1").Activate
Flag = False
For i = 1 To 1000
For k = 1 To 100
If Workbook("Лист1").Cells(i, k) = Workbook("Лист2").Cells(ACR, ACC) Then
' Нашли на Листе1 ячейку, в которой записано то же самое, что в активной ячейке на Листе2
Workbook("Лист1").Cells(i, k+8).Select ' Ставим курсор на ячейку на 8 правее найденной
Msg = "Строка " & ACR & "; Колонка " & ACC ' Сообщаем миру о нашей находке
MsgBox (Msg) ' Выводим это сообщение на экран (если нужно)
Flag = True ' Устанавливаем признак, что ячейка найдена
End If
If Flag Then Exit For ' Выскакиваем из цикла, так как ячейка найдена и искать дальше не нужно
Next k
If Flag Then Exit For ' Выскакиваем из этого цикла тоже
Next i
End Sub
Можно, конечно, поискать и на ВСЁМ Листе1, но это будет ОЧЕНЬ долго.
i = 1048576 строк и k = 16384 колонки.
Похожие вопросы
- Как менять значение в ячейке Excel ежедневно
- Как в Excel 2007 посчитать сумму чисел в окрашенных ячейках
- Не могу разобраться с VBA Excel 2003 как копировать содер жимое одной ячейки в другую
- Excel макросы
- Подскажите, как в Excel (в фунцуии ВПР) относительные значения перевести в абсолютные?
- VBA EXCEL. Где найти список формул по английски??? чтоб потом вписывать формулы через VBA.
- Сформировать файл из действительных чисел. Найти: наибольшее из значений модулей компонентов с четными номерами. С++
- в матрице Х (8,5) найти среднее арифметическое значение максимальных элементов в каждой строке
- Как найти самое большое значение в DBGrid (тип поля числовой)?
- Помогите решить задачу по программированию, пожалуйста. Найти сумму наименьших значений элементов строк. (вложенные циклы)
"Найти в Листе1 значение активной ячейки из Листа2" - можете написать здесь только этот макрос?