我需要引用 3 个工作表,“发货”、“设备”和“库存”,其中发货中的 A 列和设备中的 A 列均引用位置编号,设备类型由文本指定并在“库存”中的数据透视表中计数。每个位置编号关联多种类型的设备,有些位置编号尚未关联。
用简单的英语来说,我想说的是“如果运输中的位置编号与设备中的位置编号相匹配并且设备类型与库存 A9 相匹配或设备类型与库存 A8 相匹配,则返回 K 列中的跟踪号,否则返回空白值”。
我的公式是
=IF(AND(Equipment!A:A=Shipping!A2,OR(Equipment!C:C=Inentory!A8,Equipment!C:C=Inentory!A9)),Equipment!K:K,"").
虽然我知道要返回正确的值,并且从逻辑上讲,这应该可行,但我得到的是错误的值返回,所以我知道我忽略了一个复杂性。有什么帮助吗?
答案1
这里有几个问题。
通常,Excel 公式不将数组作为输入处理(如果您只是按回车键),因此您的公式只比较范围的第一个单元格。
如果您使用以下方式输入数组公式Ctrl+Shift+回车它将与整个范围进行比较,但您的或者和和函数将简化为整个范围(而不是针对每一行单独)的单个真/假。
因此,使用数组公式,您可以使用类似这样的方法:但请注意,如果您使用整个列数组,数组公式可能会变得非常慢(因为它们每个都包含~1M 个单元格,因此您最好实际定义范围。
=index(Equipment!K:K,
match(Shipping!A2,
if(((Equipment!C:C=Inentory!A8)+(Equipment!C:C=Inentory!A9))>0,Equipment!A:A,0)
,0)
)