从数组公式返回逗号分隔列表

时间:2013-12-02 19:07:06

标签: excel excel-formula excel-2010

我可能会在VBA中解决这个问题,但如果可能的话,我宁愿不必使用这种方法,而且这似乎是Excel的内置函数应该能够管理的。

我有一个电子表格,我们最近停止打印,我们将用它来验证来自我们各个网站的数据,以及哪些天。列标题对应于站点编号(此电子表格为$ D $ 1:$ AU $ 1),行为日期(12月份为$ A $ 3:$ 24 $ - 我们不会在周末进行此数据验证)。 “B”列包含其信息应该进入的日期,例如12/4,我们应该从每个站点的12/2收到信息。

过去,我们使用“C”列来编写后面的网站。如果站点3仅在4日从12/1发送信息,我们将在该列中写入“3”。我想继续这个大会,因为这是办公室理解的。改变是坏的,所有这一切。

到目前为止,我自己一直混淆并写了一个数组公式,如果只有站点3落后,则返回{0,0,1,0,...,0}。该公式为=IFERROR(SEARCH(B3,D3:AU3)-SEARCH(B3,D3:AU3),1)

从这里开始,=IF(ISBLANK(D4),"",INDEX(D1:AU1,1,MATCH(1,IFERROR(SEARCH(B3,D3:AU3)-SEARCH(B3,D3:AU3),1)),0))做得很好,只要只有一个网站落后,这是微不足道的。如果我们后面有多个站点,则返回第一个值(如预期的那样)。

如果站点3和站点6都落后,我们希望看到“3,6”(或任何其他人类可读格式),但我找到的唯一解决方案是编写自定义VBA脚本来连接数组。如果人性化,我宁愿远离定制VBA。

谢谢,
亚当

1 个答案:

答案 0 :(得分:2)

在BA3中尝试这个“数组公式”

=IFERROR(INDEX($D1:$AU1,SMALL(IF(ISERROR(SEARCH($B3,$D3:$AU3)),COLUMN($D3:$AU3)-COLUMN($D3)+1),COLUMNS($BA3:BA3))),"")

确认 CTRL + SHIFT + ENTER 并复制以获取所有匹配

正如你所说,你可以将它们连接回C3