Мне не удалось это найти, надеюсь, вы все можете помочь.
Я пытаюсь выполнить в Excel следующее:
Если ячейка соответствует значению из таблицы1, выделите эту ячейку. Затем выделите ячейку под ней и продолжайте выделять ячейки под ней, пока не дойдете до ячейки, которая соответствует значению из таблицы2.
Я не могу понять, как работать с функцией цикла для этого
заранее спасибо
Посмотрите примеры Do Loop
здесь
Я написал простой цикл for, который выполняет итерацию по диапазону данных. Моя таблица данных состоит из целых чисел от 1 до 15, названных «Данные». Начальная точка называется «Точка_1», а конечная точка - «Точка_2».
Код ниже с аннотациями для ясности. По сути, это просто включение выделения, когда ячейка соответствует Point_1, и выделение, пока оно не будет выключено обратно, когда ячейка соответствует Point_2.
Sub HighlightRange()
Dim cel As Range
Dim dataRange As Range
Dim highlighting As Boolean
highlighting = False
With Application.ActiveWorkbook.Sheets("Sheet1")
Set dataRange = .Range("Data") 'This is your data range. I named mine 'Data'
For Each cel In dataRange
'Check for beginning or end values
If cel = .Range("Point_1").Value Then 'This is your starting value. I named mine 'Point_1'
highlighting = True
ElseIf cel = .Range("Point_2").Value Then 'This is your ending value. I named mine 'Point_2'
highlighting = False
End If
'While highlighting is activated, highlight the current cell
If highlighting = True Then
cel.Interior.ColorIndex = 5
End If
Next cel 'Check all cells in dataRange
End With
End Sub
Примечательно, что конечная точка не выделяется. Однако вы можете переместить оператор ElseIf, который отключает выделение, в конец цикла for после команды выделения. Это отключит выделение ПОСЛЕ выделения Point_2, а не непосредственно перед ним. Код для этого случая ниже.
Sub HighlightRange()
Dim cel As Range
Dim dataRange As Range
Dim highlighting As Boolean
highlighting = False
With Application.ActiveWorkbook.Sheets("Sheet1")
'This code also highlights Point_2.
Set dataRange = .Range("Data") 'This is your data range. I named mine 'Data'
For Each cel In dataRange
'Check for beginning or end values
If cel = .Range("Point_1").Value Then 'This is your starting value. I named mine 'Point_1'
highlighting = True
End If
'While highlighting is activated, highlight the current cell
If highlighting = True Then
cel.Interior.ColorIndex = 5
End If
If cel = .Range("Point_2").Value Then 'This is your ending value. I named mine 'Point_2'
highlighting = False
End If
Next cel 'Check all cells in dataRange
End With
End Sub
Надеюсь, это помогло! Вы можете изменить цвет выделения с синего (colorIndex = 5) на любой понравившийся вам цвет. Если вы нажмете «Записать макрос» и отформатируете ячейку так, как хотите, вы можете скопировать сгенерированный код в этот макрос вместо следующей строки:
cel.Interior.ColorIndex = 5
Ура и удачи!
Пожалуйста, обновите свой вопрос конкретным примером.