Пытаясь сохранить это общее правило, чтобы быть полезным для других людей, основной процесс, который необходимо выполнить, будет следующим:
find the next hotel/resort combination
find each passenger for that hotel/resort
add in the details for the other attributes
move on to the next passenger
move on to the next hotel/resort
Если мы начнем с поиска комбинации отель / курорт и предположим, что этона листе 1 в столбце A в отдельной ячейке, а в столбце A ничего больше нет, тогда нам понадобится этот макрос:
Option Explicit
Sub main()
Dim lngCurrRow As Long
Dim lngMaxRow As Long
With ThisWorkbook.Worksheets("Sheet1")
lngMaxRow = .UsedRange.Rows.Count
For lngCurrRow = 1 To lngMaxRow
If (.Cells(lngCurrRow, 1).Value <> "") Then
MsgBox .Cells(lngCurrRow, 1).Value
End If
Next lngCurrRow
End With
End Sub
При этом должно появиться окно сообщения с названием каждого отеля / курорта по очереди..
Все, что делает код, это определяет количество используемых строк на листе (и сохраняет их в lngMaxRow
), а затем обрабатывает каждую использованную строку (используя lngCurrRow
, чтобы отслеживать, какая строкамы проверяем значение ячейки в столбце A в этой строке (часть .Cells(lngCurrRow, 1).Value
).Если в этой ячейке что-то есть ((<> ""
часть), тогда она отображает значение этой ячейки.
Более сложный случай - когда в столбце A есть другие данные (например, если имена пассажиров былитакже в столбце A). В этом сценарии нам нужен способ, позволяющий легко распознать, что такое комбинация отель / курорт и какое имя пассажира, но у меня недостаточно информации о вашей нынешней структуре, чтобы определить, как это сделать