【问题标题】:VBA Excel - Offset with merged cellsVBA Excel - 合并单元格的偏移量
【发布时间】:2022-08-19 20:46:43
【问题描述】:

是的,你可能会想,他为什么还要使用合并单元格。让我解释:

我们以 Excel 格式接收来自世界各地不同公司的被保险人的保险期限。我必须自动读取这些数据,但我遇到的问题是这些 Excel 文件包含合并的单元格。这些总是以不同的方式合并。但是,始终相同的是起始单元格右侧的下一个单元格包含所需的信息。所以我需要一个代码来始终确定起始单元格右侧的数据,但考虑到它们是合并的单元格。 .offset 可以做到这一点吗?

例子: A5:C5 合并,D5 未合并,E5:H5 合并,I5:P5 合并--> 我需要 D5、E5 和 I5 的数据(右侧的单元格)

对于下一个被保险人,相同的数据格式如下: A5:B5 合并、C5:F5 合并、G5:J5 合并、K5:O5 合并--> 我需要来自 C5、G5 和 K5 的数据(右侧的单元格)

所以它总是它右边的 3 个单元格,但就合并单元格而言。

有人能帮我吗?谢谢!

    标签: excel vba offset


    【解决方案1】:

    如果您有合并单元格,.Offset(0, 1) 将始终为您提供合并区域右侧的第一个单元格。因此,如果合并单元格“A5:C5”,Range("A5").Offset(0, 1) 将为您提供“D5”。

    假设您从“A5”开始,以下应该可以为您解决问题:

    With ActiveSheet       ' Specify the sheet you want to work with
    Set r = .Range("A5")
    For i = 1 To 3       
        Set r = r.Offset(0, 1)
        Debug.Print r.Address, r.MergeArea.Address, r.Value
    Next
    

    【讨论】: