我正在创建一个工作表,用于比较在不同日期提取的两组数据。提取所有内容的列由数组公式创建,该公式由来自两组数据的组合唯一值组成。以前,我手动输入列表(List1 和 List2)的标题,因此效果很好:
=IFERROR(IFERROR(INDEX(List1,MATCH(0,IF(ISBLANK(List1),1,COUNTIF($B$3:B3,List1)),0)),INDEX(List2,MATCH(0,IF(ISBLANK(List2),1,COUNTIF($B$3:B3,List2)),0))),"")
现在,我尝试设置工作表以保存多个日期,并使用菜单来选择日期。我设置了一个参考表,以便每个电子表格都有自己的列表,这些列表基于提取日期:
DATES TAB LIST
2/4/2015 Requireds A ListA
2/5/2015 Requireds B ListB
2/6/2015 Requireds C ListC
2/7/2015 Requireds D ListD
2/8/2015 Requireds E ListE
我已更新我的原始公式,将“List1”替换为引用第一个下拉菜单以查找参考表中的列表列,并将“List2”替换为使用 Index 和 Match 查找第二个日期:
=IFERROR(IFERROR(INDEX(
(INDEX(DropDownTable!A:C,MATCH(Comparison!B1,DropDownTable!A:A,0),3))
,MATCH(0,IF(ISBLANK(
(INDEX(DropDownTable!A:C,MATCH(Comparison!B1,DropDownTable!A:A,0),3))
),1,COUNTIF($B$3:B3,
(INDEX(DropDownTable!A:C,MATCH(Comparison!B1,DropDownTable!A:A,0),3))
)),0)),INDEX(
(INDEX(DropDownTable!A:C,MATCH(Comparison!D1,DropDownTable!A:A,0),3))
,MATCH(0,IF(ISBLANK(
(INDEX(DropDownTable!A:C,MATCH(Comparison!D1,DropDownTable!A:A,0),3))
),1,COUNTIF($B$3:B3,
(INDEX(DropDownTable!A:C,MATCH(Comparison!D1,DropDownTable!A:A,0),3))
)),0))),"")
然而,我的问题在于,当我运行“评估公式”时,似乎大多数新查找都会提取列表名称,但有一两个却不会。它提取列表名称的单元格。因此,它没有给我带来“ListA”,而是给我带来了:
DropDownTable!$C$2
我不知道这是否是公式中唯一的错误;我不确定“ListA”这个词是否等同于引用列表本身。那可能也是我搞砸了的事情。
任何指导都很好,但我不明白为什么它不像应该的那样告诉我“ListA”。
答案1
我不确定你是什么意思。
您的第一个 INDEX 期望以范围作为第一个参数,因此结果是:
INDEX(DropDownTable!A:C,MATCH(Comparison!B1,DropDownTable!A:A,0),3)
必定如此。
INDEX 是一个足够灵活的函数,因此生成的结果可以是实际的单元格价值或细胞参考。正如您所想象的,这是一个极其有用的属性。
这就是我不太理解你的公式的地方。上述表达式的结果将产生一个单元格引用,例如 DropDownTable!$C$8,然后将其作为范围传递给第一个 INDEX,它将变成类似这样的内容:
INDEX((DropDownTable!$C$8,MATCH(0,...
因此,无论以下表达式的结果如何,您仍然无法取得太大的成就:对单个单元格进行索引没有多大意义!
很难进一步帮助你。这实际上可能是一个你最好不是发布您现有的公式,而只是简单地给出您想要实现的目标的细分。从头开始给出解决方案通常比检查其他人的解决方案要容易得多,特别是如果它们涉及的结构和您的一样长且难以剖析,就像您的情况一样。
问候