Я новичок в Excel VBA, поэтому я прошу прощения за очень элементарный уровень кодирования. В основном у меня есть таблица с заголовками, такими как Age и Name.
Я пытаюсь написать код, чтобы найти все заголовки с «Возрастом» и скопировать значения в другую ячейку, компилируя все возрасты в отдельной таблице.
Снимок экранамоего рабочего листа
Я включил переменную searchAge
, равную ""Age " & i"
, с i
, увеличивающейся после каждого цикла. Затем это помещается в функцию Find в findAge. Проблема, с которой я сталкиваюсь, заключается в том, что ячейка, которую находит findAge
, всегда имеет значение «Возраст 1» и не обновляется до «Возраст 2» при увеличении i
.
Dim rngSearch As Range
Dim rngLast As Range
Dim rngFound As Range
Dim firstCellAddress As String
Dim findAge As Range
Dim searchAge As String
Dim i As Integer
i = 1
'set the search range
Set rngSearch = ActiveSheet.Range("A1:R100")
'specify last cell in the range
Set rngLast = rngSearch.Cells(rngSearch.Cells.Count)
searchAge = "Age " & i
Set findAge = rngSearch.Find(What:=searchAge, MatchByte:=False, SearchFormat:=False)
Set rngFound = rngSearch.Find(What:="Age", After:=rngLast, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not rngFound Is Nothing Then
firstCellAddress = rngFound.Address
Do
Set rngFound = rngSearch.FindNext(rngFound)
MsgBox (rngFound.Offset(1, 0).Value & findAge.Value & i)
findAge.Offset(1, 0) = rngFound.Offset(1, 0).Value
i = i + 1
Loop Until rngFound.Address = firstCellAddress
End If
End Sub
Может кто-нибудь пролить свет на это?
Спасибо!