Excel 2016 数组公式

Posted

技术标签:

【中文标题】Excel 2016 数组公式【英文标题】:Excel 2016 Array formula 【发布时间】:2018-05-30 12:45:12 【问题描述】:

我在excel中有以下公式(我过去创建的),

=IFERROR(INDEX(Tasks!$H$2:$H$65536;SMALL(IF(A2=Tasks!$A$2:$A$65536;ROW(Tasks!$A$2:$A$65536)-ROW(Tasks!$A$2)+1);ROW($1:$1)));"")

该公式按我的意愿工作,但每个月 a 列都在变化,例如,这里的“A”列可能是下个月的“C”列,因此行数正在变化。我正在尝试修改我不必逐月调整的公式。

为此,我首先在网上找到了一个 VBA 脚本:

  Function Col_Letter(lngCol As Long) As String
        Dim vArr
        vArr = Split(Cells(1, lngCol).Address(True, False), "$")
        Col_Letter = vArr(0)
    End Function

因此,如果我输入例如: =Col_Letter(COLUMN(Table8[[#Headers];[ID]])) 它会给我字母“B”,因为这个标题可以在“B”列中找到。

因此,利用这个 VBA 脚本的优势,我试图创建一个公式,每次都会调整原始公式中的列字母。

所以这个公式:

=("Tasks!" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[Owned By]])) & "$" & "2" & ":" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[Owned By]])) & "$" & ROW(INDEX(Table32;1;1))+ROWS(Table32)-1) is giving me this as the result Tasks!$H$2:$H$65536.

什么是公式的一部分,所以我认为它很好。

这是我试图以这种方式重新创建的整个公式:

=Index((("Tasks!" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[Owned By]])) & "$" & ROW() & ":" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[Owned By]])) & "$" & ROW(INDEX(Table32;1;1))+ROWS(Table32)-1);SMALL(IF((((Col_Letter(COLUMN(Table8[[#Headers];[ID]])) & ROW()) & "=" & (("Tasks!" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[ID]])) & "$" & "2"& ":" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[ID]])) & "$" & ROW(INDEX(Table32;1;1))+ROWS(Table32)-1))));Row((("Tasks!" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[ID]])) & "$" & "2"& ":" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[ID]])) & "$" & ROW(INDEX(Table32;1;1))+ROWS(Table32)-1)))-ROW(("Tasks!" & "$" & Col_Letter(COLUMN(Table32[[#Headers];[ID]])) & "$" & "2"))+1);ROWS($1:$1))))

【问题讨论】:

公式有什么问题?你有错误吗?它返回的内容是否与预期不同? 我已经添加了错误信息 【参考方案1】:

Excel 表格具有轻松解决此类问题的潜力。由于列可以通过它们的名称来引用,因此您不必担心它们的位置。同样,由于您按列名而不是行号引用数据,因此您的引用将涵盖该表中的所有行,无论添加或删除多少行。

因此,首先,通过选择并使用 Insert / Table 尝试将您的范围转换为表格。在此之后,您应该将公式转换为包含表格引用而不是单元格引用。

【讨论】:

以上是关于Excel 2016 数组公式的主要内容,如果未能解决你的问题,请参考以下文章

Excel - 多对列的缩小数组公式

Excel表格中数组公式都有哪些使用方法

在excel中如何得到一维内存数组

Excel 公式学习笔记:数组用法

将公式从数组放入 Excel 表格列

Excel:通过单元格引用将数组参数传递给公式