我是使用索引/匹配的新手,我遇到了一些麻烦。我有两个工作表,一个包含表act
,另一个包含表wa
。 act
包含7,199行; wa
有25,099行。
我正在尝试匹配订单号和日期,以便将文档编号从wa
提取到act
。订单号将完全匹配,但act
上的日期略小于wa
上的日期。
我的公式是:
=INDEX(WA[BillingDocumentNumber],(MATCH([@[Customer PO Number]],WA[PO],0)+MATCH([@[GL Posting Date]],WA[CostPostedOn],-1)))
根据我对wa
数据的排序方式,我得到了以下结果:
wa
中的单元格中拉出应该返回的单元格下方),其余为#N/A
; #N/A
或#REF
任何人都可以帮助我吗?我没有VBA的实际知识,但我是常驻Excel"专家" (对我来说很有趣)在我的公司,所以我是面对解决这个问题的人...我已经梳理了现有的论坛,但我还没有找到任何似乎提供(非VBA)解决我的问题。任何想法将不胜感激!
感谢您的时间。
答案 0 :(得分:0)
这是我未经测试的建议解决方案:
{=CONCATENATE(IFERROR(IF(AND(WA[PO]=@[Customer PO Number],WA[CostPostedOn]>@[GL Posting Date]),WA[BillingDocumentNumber],""),""))}
使用CTRL + SHIFT + ENTER输入为数组公式。
这将在一个文本字符串中返回与PO编号匹配且行为日期早于wa日期的所有结果。您可以修改第二个条件并在AND中添加第三个条件以创建日期范围(即WA[CostPostedOn]>=@[GL Posting Date]+7
或WA[CostPostedOn]<=@[GL Posting Date]-7
)。
在使用数组时,虽然将此扩展为7,000多个公式时可能会出现一些性能问题。遗憾的是,你无法通过2个条件进行VLOOKUP
。
希望这会有所帮助。欢呼声,