繁体   English   中英

如何了解组合单元格的列?

[英]How do I get to know the columns of a combined cell?

刚才有人问我是否可以使用组合列作为参考点,我不知道该怎么回答,因为他们我在这里。

这个想法是这样的:

在此处输入图片说明

因此,当您选择组合单元格 A 时,您可以获得该组合单元格的列。

为了什么? 好吧,当添加一个新列时,这个新列将被添加到合并单元格中,所以当我们使用 VBA 时我们会得到该段的列,因为本意是不依赖于“范围(“A1:A5”) "如此静态,即使在组合单元格所在的位置添加了新列,也能够选择该范围的列。

因为我们的意图是组合单元格作为段,我们只需要组合列,这可以是动态的。

如果有人知道更好的方法来做到这一点,那么欢迎。

您可以使用两个用户定义的函数确定合并范围的开始和结束。 一个用户定义函数确定合并范围的起始单元格,另一个确定合并范围内的结束单元格。

这是如何在公式中使用 UDF 的示例。

  • 合并的范围是 D16:E16。
  • 单元格 D6 是合并范围的起始列号的 UDF。 MergedCellColumnStart(D14)
  • 单元格 D7 是合并范围结束列号的 UDF。 MergedCellColumnEnd(D14)
  • 单元格 D4 使用 D6 和 D7 的结果来构建合并单元格的地址范围。 ADDRESS(ROW(D$16),D6)&":"&ADDRESS(ROW(D$16),D7)

  • 每个公式的相应公式也显示在单元格 E4、E6 和 E7 中。

在此处输入图片说明

Private Function MergedCellColumnStart(MergedCell As Range) As Integer

    Dim rng As Range
    Dim rngStart As Range
    Dim rngEnd As Range

        Set rng = MergedCell
        Set rng = rng.MergeArea
        Set rngStart = rng.Cells(1, 1)
        Set rngEnd = rng.Cells(rng.Rows.Count, rng.Columns.Count)

        MergedCellColumnStart = rngStart.Column


End Function

Private Function MergedCellColumnEnd(MergedCell As Range) As Integer

    Dim rng As Range
    Dim rngStart As Range
    Dim rngEnd As Range

        Set rng = MergedCell
        Set rng = rng.MergeArea
        Set rngStart = rng.Cells(1, 1)
        Set rngEnd = rng.Cells(rng.Rows.Count, rng.Columns.Count)

        MergedCellColumnEnd = rngEnd.Column

End Function

刚才有人问我是否可以将组合栏用作参考点,我不知道该怎么回答,因为他们在这里。

想法是这样的:

在此处输入图片说明

因此,当您选择组合单元格A时,可以获得该组合单元格的列。

为了什么? 好吧,当添加新列时,此新列将被添加到合并单元格,因此,当我们使用VBA时,我们将获得该段的列,因为其目的不是要依赖“ Range(“ A1:A5”) ”这样的静态值,即使将新列添加到组合单元格所在的位置,也能够选择该范围的列。

因为我们的意图是合并的单元格充当段,所以我们只需要合并的列,并且这可以是动态的。

如果有人知道更好的方法,那么欢迎您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM