从合并范围读取值(Excel)
我有一个列头是B1:C1的范围。 数据更像
+ —- + —- +
| 标题|
+ —- + —- +
| H2 | H3 |
+ —- + —- +
| 1 | 2 |
| 3 | 4 |
+ —- + —- +
我有一个名为rng的variables,如
Set rng = Range("B1:C1")
现在使用rngvariables,我想select值“H3”或“2”或“4”。 我用下面的语法
rng.Offset(1,1).value
而不是给我“H3”,它给了我从下一个柱子即d2的价值。
有没有一个简单的方法来解决这种意想不到的行为。 我的理解是,关于合并的单元格,偏移的参考是基于整个单元格的,合并的单元格被视为一个单元格而不是许多单元格。
在你的实例中,如果Range("B1:C1")
被合并,那么下一列(即Offset(0,1)
)就是D列.Excel将合并范围视为单个单元格,从视觉angular度看下一列是D列而不是 C列。在我看来,这可能是令人困惑的。
解决此问题的最佳方法是避免使用合并的单元格作为标题,而是使用Centre Across Selection
格式:
1)取消范围(“B1:C1”)
2)select范围(“B1:C1”)>格式>单元格
3)在水平对话框中select“中心select”
如果你这样做,那么下面的代码将工作:
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
如果你真的需要使用合并的单元格,Excel有这个“问题”,当涉及到合并单元格的偏移量。 在上面的例子中,单元格D2从B1偏移(1,1)是有意义的。
一种解决scheme是使用嵌套偏移量:
你有你的variables:
Set rng = Range("B1:C1")
然后使用下面的代码进行调整:
rng.Offset(1,0).offset(0,1).value
这样,你首先按行偏移,向下移动到B2,然后按列偏移到C2。