【问题标题】:In pure Excel, how to reference a column in a range (no VBA)在纯 Excel 中,如何引用范围内的列(无 VBA)
【发布时间】:2012-02-02 03:32:00
【问题描述】:

我在工作表上有一系列数字,在该范围内,我如何引用索引给出的完整列或行?

我正在使用 2007.. 我查看了 HLookup/Vlookup/Index 没有成功

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    我猜你的意思是在另一个公式中将整个列/行作为范围/数组引用?

    如果是这样,我能想到的唯一方法就是使用OFFSET

    =OFFSET($A:$A,,MyColIndex-1)
    =OFFSET($1:$1,MyRowIndex-1,)
    

    那就是……

    =OFFSET(reference,rows,cols,[height],[width])
    

    但是,如果您在 A 的左侧插入一列,或在 1 上方插入一行,这将不起作用。

    编辑:刚刚找到解决这个小问题的方法......

    =OFFSET($A:$A,,MyColIndex-Column($A:$A))
    =OFFSET($1:$1,MyRowIndex-Row($1:$1),)
    

    【讨论】:

      【解决方案2】:

      如果您可以将范围转换为表格,那么您可以使用结构化引用来引用表格中的列。

      例子

      • 您的表被称为Table1 并有列Column1Column2Column3
      • 单元格E1 具有列名(例如Column1

      在这种情况下,您可以计算(例如)由 E1 指定的列的总和:

      =SUM(INDIRECT("Table1["& E1 &"]"))
      

      【讨论】:

      • 如果您不熟悉它们,表格就像列表一样,但经过改进。在 Excel 2007 中,选择范围并按 Ctrl-L 现在会创建一个表格而不是列表。
      • 很好的调用表,但你不需要使用间接。您可以只使用 =SUM(Table1[Header1]) 其中 Header1 是列标题标题。如果可能,最好避免间接。
      • Jesse,如果您可以将 Header1 硬编码到公式中,这将起作用。但是,如果您想根据其他单元格的值指定列,我只知道如何使用INDIRECT...
      【解决方案3】:

      怎么样:

      =SUM(INDEX(2:1048576,0,2))
      

      这对指定范围内的整个第二列求和,即 B2:B1048576。它之所以有效,是因为索引函数的行参数中的 0 返回整个列 - 在指定的范围内。以下将仅总结 B2:B3:

      =SUM(INDEX(2:3,0,2))
      

      ... 这就是 C2:C3 的总和

      =SUM(INDEX(B2:F3,0,2))
      

      【讨论】:

      • +1 做得很好。 Index 函数对于 VBA 数组上的相同应用程序非常方便。
      • @brettdj,我不知道。这可能非常方便。
      • Doug,我在stackoverflow.com/q/8994141/641067 中使用了这种技术,通过变量数组获取两个切片。
      猜你喜欢
      • 2017-10-31
      • 1970-01-01
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 2018-12-05
      • 2018-02-25
      相关资源
      最近更新 更多