感谢stackoverflow的Excel大师,帮助我完成一个看似不可能的项目。我有另一个问题:
我有2个工作表,Sheet1和Sheet2。
Sheet1
包含A
中的产品代码列表以及Sheet2
中B
的最低价格公式:
A B C
A100 $10
A200 $12
A300 $45
Sheet2
有一个产品代码,价格和说明列表:
A B C
A100 $20 Product One
A100 $10 Product Two
A100 $12 Product Three
A100 $0 Not Found
A200 $25 Product A
A200 $12 Product B
etc, etc, etc
在Sheet1
,列B
中,我使用以下公式查找最低的非零价格:
=MIN(IF('Sheet2'!$A$1:$A$20000=A1,IF('Sheet2'!$B$1:$B$20000>0,'Sheet2'!$B$1:$B$20000)))
如何修改此内容以获取C
列中的说明并将其放入Sheet1
列C
?
一如既往,感谢您的时间和精力!
答案 0 :(得分:1)
我想我得到了答案)将以下内容放在C1中:
=IFERROR(INDIRECT("Sheet2!C"&MATCH(A1&MIN(IF(Sheet2!$A$1:$A$20000=A1,IF(Sheet2!$B$1:$B$20000>0,Sheet2!$B$1:$B$20000))),Sheet2!$A$1:$A$20000&Sheet2!$B$1:$B$20000,0)),"No price / description found")
并且不要忘记按 CTRL + SHIFT + ENTER 而不是通常的 ENTER - 这将定义ARRAY公式并在其周围生成{}
括号(但不要手动输入!)。还包括错误处理。
如果需要组合价格和描述的单细胞解决方案 - 使用此怪物:
=IFERROR("$"&MIN(IF(Sheet2!$A$1:$A$20000=A1,IF(Sheet2!$B$1:$B$20000>0,Sheet2!$B$1:$B$20000)))&": "&INDIRECT("Sheet2!C"&MATCH(A1&MIN(IF(Sheet2!$A$1:$A$20000=A1,IF(Sheet2!$B$1:$B$20000>0,Sheet2!$B$1:$B$20000))),Sheet2!$A$1:$A$20000&Sheet2!$B$1:$B$20000,0)),"No price / description found")
示例文件也可用:https://www.dropbox.com/s/tnb3ov7o1s2sper/PriceWithDescr.xlsx
答案 1 :(得分:1)
您可以使用INDEX/MATCH
解决方案,例如对于C1
=INDEX(Sheet2!C$1:C$20000,MATCH(1,(Sheet2!A$1:A$20000=A1)*(Sheet2!B$1:B$20000=B1),0))
与CTRL+SHIFT+ENTER
确认
答案 2 :(得分:0)
由于Sheet2中的产品代码和价格列可能都有重复值,因此我建议您在Sheet2中创建一个唯一值,以便区分不同的价格/产品代码组合。以下是我解决这个问题的方法:
步骤1 - 在Sheet2中插入新列
我在当前列A之前添加了一个新列,其中包含以下公式:
=CONCATENATE(B2,"-",C2)
此版本现在将为Sheet2产生以下值:
A B C D
A100-20 A100 20 Product One
A100-10 A100 10 Product Two
A100-12 A100 12 Product Three
A100-0 A100 0 Not Found
步骤2 - 在Sheet2的C列中输入新公式
=VLOOKUP(CONCATENATE(A2,"-",B2),Sheet2!A:D,4,FALSE)
这将从Sheet2中的数据中查找Sheet1中A列和B列中的值组合。可以添加额外的错误检查以忽略零价产品,但我没有将其包括在我的公式中,因为您在Sheet1列B的先前公式中已经考虑到这一点。当我测试它时,这产生了正确的描述。 / p>
如果您无法在此范围内修改工作表,您还可以使用基于VBA的迭代解决方案,我很乐意在必要时进行演示。
祝你好运!