Нет прямого способа исправить это неожиданное поведение. Насколько я понимаю, в отношении объединенных ячеек ссылка на смещение основывается на всей ячейке, и что объединенные ячейки обрабатываются как одна ячейка вместо множества ячеек.
В вашем случае, если Range("B1:C1")
объединен, то следующий столбец (т. Е. Offset(0,1)
) - это столбец D. Excel рассматривает объединенный диапазон как одну ячейку, и поэтому с визуальной точки зрения следующий столбец вдоль столбца D и не столбец C. На мой взгляд, это может сбивать с толку.
Лучший способ обойти это - избегать использования объединенных ячеек в качестве заголовков, а вместо этого использовать Centre Across Selection
форматирование:
1) Диапазон слияния («B1: C1»)
2) Выберите диапазон («B1: C1»)> Формат> Ячейки
3) В диалоговом окне «Горизонтально» выберите «Центр по всему выделению»
Если вы сделаете это, будет работать следующий код:
Sub GetOffsets()
Dim rng As Range
Set rng = Range("B1")
Debug.Print rng.Offset(1, 0) // H2
Debug.Print rng.Offset(2, 0) // 1
Debug.Print rng.Offset(3, 0) // 3
Debug.Print rng.Offset(1, 1) // H3
Debug.Print rng.Offset(2, 1) // 2
Debug.Print rng.Offset(3, 1) // 4
End Sub