![使用 INDEX 在列表中查找多个值](https://linux22.com/image/1446556/%E4%BD%BF%E7%94%A8%20INDEX%20%E5%9C%A8%E5%88%97%E8%A1%A8%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%A4%9A%E4%B8%AA%E5%80%BC.png)
我正在使用这个公式来查找工作簿第一张表的 B 列中 CUCUMBERS 的所有实例:“ITS”与 X 列中的 B 列相同。
到目前为止,效果很好,正如我所希望的那样,只是它只返回部分 CUCUMBERS,而不是全部。我使用相同的公式交换位置来查找在 D 列中找到的 PO#,这样我就能知道它返回给我的是哪些 CUCUMBERS,并且它会跳过此搜索中的前两个。
请记住,我的数据包括其他农产品,如菠菜、猕猴桃、胡萝卜等……所有这些都位于黄瓜条目的上方和下方,这就是黄瓜位于第 24:30 行的原因。此公式需要能够从整个列中提取数据,并返回名称的每个实例;因此,如果黄瓜有 15 个条目,我需要它在我的第二张表上反映 15 个条目。
这里的基本目标是找到特定农产品的每个实例,并从列出该产品的每一行中提取所有数据。如果有更简单的方法可以做到这一点,我也会接受。以下是信息:
=INDEX(ITS!$B$4:$X$56,SMALL(IF(ITS!$B$4:B56=$B$1,ROW(ITS!$B$4:B56)),ROW(ITS!3:56))-3,23)
以下是 ITS 表的一个示例:
B C D
24 CUCUMBER ANDREW&WILLIAM 381873
25 CUCUMBER ANDREW&WILLIAM 381873
26 CUCUMBER ANDREW&WILLIAM 381873
27 CUCUMBER DIVINE 611881
28 CUCUMBER WHOLESUM 100328
29 CUCUMBER WHOLESUM 100328
30 CUCUMBER DIVINE 1002874
问题是,当我运行公式时;我只返回最后 5 个,而它跳过了前两个条目。
答案1
您从第 3 行开始计算公式,因此它从第 3 个结果开始。从第一行开始或使用ROW(ITS!3:56)-2
。
为什么你需要使用公式?我会使用数据透视表(如果你需要在每一行显示黄瓜,你可以设置“重复项目标签”)。
答案2
这个ROW(ITS!3:56)
论点SMALL
没有意义。
你的公式现在的作用是:
该SMALL
函数正在调用{3,4,5,...,56}
匹配数组中第最小的项目在单个细胞中纯属偶然,这给人一种按预期工作的错觉,因为在单单元格公式中只使用了此数组中的第一个项。因此,在第一个条目中,您得到的是第三小项。
当你向下填充时,它会调用{4,5,6,...,57}
第 1 个项目,碰巧的是,调用第 4 个最小项目。依此类推。
您希望公式执行的操作:
您希望的最后一个参数SMALL
是一个数字(而不是数组),当公式向下填充时,该数字会增加 1。
您可以使用来实现这一点ROWS
。在第一个公式中,将其用作中的最后一个参数SMALL
:
`ROWS($1:1)`
随着您填写公式,该值将增加 1。