我有2个这样的excel工作簿:
Workbook1
A (Delivery Date) B (Item Code) C (Expected Delivery quantity) D (Received Stock)
01/11/2016 412 100 0
31/10/2016 234 200 200
02/11/2016 111 10 6
练习册2
A (Item Code) B (Status)
412 Delivery expected 01/11/2016
234 Delivered
111 Insufficient Stock Delivered
我正在尝试在workbook2的B列中运行excel公式,该公式将更新用户项目代码匹配的交付状态。
工作簿1给出了A列中每个项目的预期交货日期,以及COlumn C中交付项目的预期数量。
我想在工作簿2中创建一个If公式放入B列,这将检查每个项目(C列)的预期数量是否与D列中的收到库存相匹配。
如果收到的库存多于或与预期的交货数量匹配,我希望状态为“已交货”。
如果收到的库存少于预期交货数量,那么我希望状态为“库存不足”。
如果收到的库存为0,我希望状态显示“预期交货”并从A栏开始交货日期。因此,您将获得'交货预期01/11/2016'。
到目前为止,我正试图将if语句组合在一起:
=IF('[workbook1.xlsm]Sheet1'!$D$1:$D$10000=0,"Delivery Due"&Index('[workbook1.xlsm]Sheet1'!$A$1:$A$10000',Match(B1,'[workbook1.xlsm]Sheet1'!$B$1:$B$10000),0),IF('[workbook1.xlsm]Sheet1'!$D$1:$D$10000<'[workbook1.xlsm]Sheet1'!$C$1:$C$10000,"Insufficient Stock Deliverd","Delivered")
我的公式不起作用,我得到#Value错误。请有人告诉我我哪里出错了,以及我如何才能达到最终结果?
答案 0 :(得分:0)
这是一个很长的公式。
=IF(INDEX([WorkBook1.xlsm]Sheet1!A:D,MATCH(A2,[WorkBook1.xlsm]Sheet1!B:B,0),3)=INDEX([WorkBook1.xlsm]Sheet1!A:D,MATCH(A2,[WorkBook1.xlsm]Sheet1!B:B,0),4),"Delivered",IF(0=INDEX([WorkBook1.xlsm]Sheet1!A:D,MATCH(A2,[WorkBook1.xlsm]Sheet1!B:B,0),4),CONCATENATE("Delivery Expected ",TEXT(INDEX([WorkBook1.xlsm]Sheet1!A:D,MATCH(A2,[WorkBook1.xlsm]Sheet1!B:B,0),1),"DD/MM/YYYY")),IF(INDEX([WorkBook1.xlsm]Sheet1!A:D,MATCH(A2,[WorkBook1.xlsm]Sheet1!B:B,0),3)>INDEX([WorkBook1.xlsm]Sheet1!A:D,MATCH(A2,[WorkBook1.xlsm]Sheet1!B:B,0),4),"Insufficient Stock Delivered",)))
转到名称管理员并将此公式指定为任何名称,例如“状态”
并且B2到B1000的所有单元格都只有 =status
作为公式。
让我知道它是否有效。