如何在数组公式中正确地制作 IFNA?

如何在数组公式中正确地制作 IFNA?

背景

我遇到了一个问题,我想引用一个命名范围并显示其值。该范围是一个值列表,但我事先不知道列表中有多少个元素。假设列表中的值介于 1 到 8 个之间。

我的做法是使用 8 长范围内的数组公式,并使用 IFNA() 来屏蔽 #N/A 输出。输出中有一些空白是可以接受的,但显示 #N/A 看起来不太专业。ISNA 不起作用,我怀疑这是因为数组公式改变了 ISNA 行为。下图中的示例。

Microsoft Excel 的图片展示了我对数组公式的尝试。

解决方案的局限性

这些数据将在稍后阶段用于数据透视表,因此简单地将数据屏蔽为不可见是行不通的 - 我真的不想得到任何 #N/A 值。不过空字符串也可以;空字符串也不是一个正确的答案,但至少它失败得更优雅一些。

由于我正在为一些同事开发模型,他们可能希望在稍后阶段进行进一步的更改,因此解决方案必须相对易于其他人维护。因此,我希望避免使用非常长的公式和大量使用名称管理器。

问题

简单地对变量大小范围进行数组复制而不得到 N/A 的“正确”方法是什么?

...其中“适当”意味着简单、紧凑的公式,易于维护并且不会携带隐藏数据。

答案1

改用 INDEX,将其放在输出的第一个单元格中并复制所需的行数:

=IFERROR(INDEX(rng_1,ROW(1:1)),"")

ROW(1:1) 将在向下复制时迭代,拉动行中的下一行。用完时将引发错误并""放置在其位置。

在此处输入图片描述

答案2

简单地“数组复制”一定范围的变量大小而不得到 N/A 的正确方法是什么?

我认为没有,但也许其他方法可以解决您的问题,例如使用数组对列进行条件格式化或使用非数组公式。

命名范围列表解决方案的示例

条件格式:

有条件地格式化列/范围以将错误单元格文本的格式更改为白色或与单元格颜色混合的颜色。

条件格式

公式示例:

使用非数组公式并让公式处理错误。

=IFERROR(IF(INDEX(Pets,ROWS($J$1:J1),COLUMNS($J$1:J1))="","",INDEX(Pets,ROWS($J$1:J1),COLUMNS($J$1:J1))),"")

答案3

在 Scott Craners 的回答的帮助下,我决定如下:带有建议答案的 Excel 表

ROWS由于命令引用与输出写入相同的区域,因此错误率应该会稍微低一些。这样,就不会在不知情的情况下插入严重破坏公式的行。

我对这个解决方案并不满意,但我想它必须这样做......

相关内容