=VLOOKUP(VLOOKUP(A7,InventoryLog,5,FALSE),Price_list,IF(Q2InventoryLog!F7="S",2,3),FALSE)
我希望我的函数查找订单 ID 号并根据该号将其与商品名称匹配。如果商品描述为小号(“S”),则它应该在第 1 列中返回价格,如果商品不小,则应该在第 3 列中返回商品。
问题是,有时我会遇到空白行,所以它会把所有内容都扔掉。所以,当空白行出现时,它会落后一行。
我希望公式跳过空白行,并使用下一行中的值。我尝试调整 IF 函数,但也没有用。
有 3 种可能性:
IF(Q2InventoryLog!F7="L"...),
IF(Q2InventoryLog!F7="S"...)
IF(Q2InventoryLog!F7=""...)
答案1
我可能离题太远了(以前也发生过……)但读了你的公式,我觉得你正在寻找的东西并没有在公式中得到充分的针对。我读到的是:
=VLOOKUP(VLOOKUP(A7,InventoryLog,5,FALSE),Price_list,IF(Q2InventoryLog!F7="S",2,3),FALSE)
VLOOKUP(A7,InventoryLog,5,FALSE:
A7 有一些订单 ID 号,查找使用它在 InventoryLog 中找到的记录的第 5 列中查找 ItemName。
然后,外部查找使用该项目名称在 Price_list 中查找记录,并根据 Q2InventoryLog 中的行,返回 Price_list 中该记录的第 2 列或第 3 列。
从逻辑上讲,问题来了:为什么 F7 应该是包含 A7 所需记录的行?显然,这可能没有任何联系:您脑子里想的是“7”,然后就输入了“F”和“7”。但为什么是“F”,我们怎么知道该找什么呢?也许 Q2InventoryLog 应该逐行匹配 InventoryLog,而且做得非常好(或者……在数据被使用、更新几次之后,这将毫无意义!)除了偶尔会因为某种原因而出现空白行。
您的问题并未解决为什么记录匹配(为什么 F7 是要硬编码到此处的单元格,而不是其他单元格)。您似乎每次都在一遍又一遍地询问这个问题,而且每次都提供更详细的信息,所以也许您会在下一次迭代中解决这个问题。有人可以为您提供更切题的帮助,更巧妙的帮助。范围要小一些。但在此之前,我会给出两个提示:
您可能希望尝试以某种方式组织 Q2InventoryLog 数据,其中包括内部查找找到的项目名称或启动一切的订单 ID 号(第一种在某种程度上是黄金标准,因为它是“更好”的数据(尤其是因为它具有更广泛的用途),但第二种方法是一种非常有效的方法,因为人们会怀疑这里“实际”的数据将包括订单相关信息中的尺寸信息,尽管它不一定适用于您问题的更通用版本)。但如果是其中一种,您可以使用第二个内部查找来查找确切的记录并选择 F7 列所代表的数据恰好包含并在测试中使用它
IF()
。您可以花点功夫清理数据中的空白行。我的意思并不是传统的数据清理或找出 Q2InventoryLog 数据中插入空白行的原因。大概,如果您愿意或可以这样做,您就会这样做,问题就会消失(好吧,等着在糟糕的时刻突然出现)。
我的意思是做一些非常简单的事情。用来FILTER()
简单地过滤掉空白行。不要使用 Excel 的过滤功能,因为它会保留行地址,并且仍然需要做更多工作才能实现这一点。但只需使用FILTER()
简单的“某事 <> 空白”条件设置实际的 Q2InventoryLog 数据集,这样它就会省去造成困难的空白行。由于 Q2InventoryLog 数据似乎应该一对一匹配,所以这样做就可以了。在查找中,使用FILTER()
生成的表/范围而不是实际数据。
以这种方式使用的函数的简单版本FILTER()
可能是:
(假设 Q2InventoryLog 中的记录是 C7:F7,并且整行都是空白的,而不仅仅是一行中的一些单元格。因此,如果 C12 为空白,则整行都是有问题的,需要删除,因为第 12 行所需的数据当前在第 13 行,如果第 12 行消失,则会向上移动到右行。另外,假设数据在 C3:F27。)
=FILTER(C3:F27,C3:C27<>"")
显然,您会对其进行调整以适合您的数据。
上面要记住的一点是,有时可以从不同的概念路径来处理问题,并找到简单的解决方案。与其想办法让公式知道向下跳一行(第一次跳一行,然后在该点以下的所有后续查找中跳行,直到出现另一个空白行,之后所有人都必须知道向下跳行,而且不只是一行,而是两行,直到……),不如想办法让引起问题的行消失。如果你这样做了,就像这里一样,可能只会看到麻烦的数据清理或与数据源的争论是唯一的方法,但结果可能会像这里一样,还有另一种方法可以做到这一点,而不需要做这些工作或争论。
最后,如果确实没有一一对应关系,并且不幸插入了随机空白行,那么这将无法解决问题(嗯……除非事实证明您可以使用 Q2InventoryLog 结构来支持额外的内部查找)。所以您需要再次尝试询问……
如果是这样,请尝试忘记电话公司技术方法,即一次进行一点点改进,然后花几年时间从中获利,然后再进行一点点改进,然后提供完整的信息。您会发现这对您来说更有帮助。
答案2
因此,为了使您的公式能够容忍空白单元格,我们将使用 ISBLANK():
=IF(ISBLANK(A7), "", VLOOKUP(VLOOKUP(A7,InventoryLog,5,FALSE),Price_list,IF(Q2InventoryLog!F7="S",2,3),FALSE))
如果 A7 为空,这将返回空文本。但是,如果您想返回 A8 商品的价格,只需将“”替换为 A8 的公式:
=IF(ISBLANK(A7), VLOOKUP(VLOOKUP(A8,InventoryLog,5,FALSE),Price_list,IF(Q2InventoryLog!F8="S",2,3),FALSE), VLOOKUP(VLOOKUP(A7,InventoryLog,5,FALSE),Price_list,IF(Q2InventoryLog!F7="S",2,3),FALSE))