动态 Excel 公式

Dynamic Excel formula

我有一个母版 table,它提供 4 种类型的代码和每个代码的子 table。我希望每个子 table 有一个动态公式,这样无论在主 table 中输入新代码,公式都会自动将新条目添加到相应的子 [=22] =].

示例: 如果我在主 table 中的代码 B 旁边输入代码 A,新代码将显示在子 table A 下及其 info1 和 info2 条目。

我的母语不是英语,所以我希望我的解释不会使事情复杂化。 :)

注意:table 不限于三列。

使用 Insert > Table 将数据条目 table 转换为 Excel Table 对象。

现在您可以构建三个显示 Info1 和 Info2 的枢轴 table。筛选每个枢轴 table 以分别显示代码 A、B 或 C。

当您在数据条目 table 中输入新数据时,使用“数据”>“全部刷新”,数据透视表 tables 将更新。您可以创建一个工作表更改事件,当数据条目 table 中的单元格发生更改时,该事件将自动更新数据透视表 tables。

公式方法只能通过用数组公式预填充固定范围来实现。在下面的屏幕截图中,E 列中的黄色单元格被 select 编辑,输入以下公式并使用 Ctrl-Shift-Enter 确认:

=IFERROR(INDEX(B:B,SMALL(IF($A:$A=$E,ROW($A:$A)),ROW()-2)),"")

复制到 F 列。

H 列中的公式为

=IFERROR(INDEX(B:B,SMALL(IF($A:$A=$H,ROW($A:$A)),ROW()-2)),"")

复制到第一列。

在 K 列中,公式为

=IFERROR(INDEX(B:B,SMALL(IF($A:$A=$K,ROW($A:$A)),ROW()-2)),"")

复制到 L 列。

请注意,这些数组公式不允许编辑单个单元格。您将始终需要 select 所有具有相同数组公式的单元格,进行编辑,然后使用 Ctrl-Shift-Enter 再次确认。

一旦 A 至 C 列中的数据超出第 20 行,您将需要相应地调整数组公式。

这种方法不是很有效,因为无论数据输入列中存在多少行,预填充的公式总是会计算。

请注意,数组公式不应使用整列引用,因为这会大大降低工作簿的运行速度。

Pivot table 的方法效率更高,设置工作更少,如果设置正确则无需维护。

我想出了一个不包含索引的公式,但需要另一列作为 'index'。

{=IFERROR(SMALL(IF($AB:$AB0=$BG,$AJ:$AJ0),$BB11),"")}

其中 $BB11 是第一个列表的编号 1。很有魅力!