如何获得范围的MIN,以及第二个单元格在同一行?

感谢您的Excel大师的计算器帮助我似乎是一个不可能的项目。 我有另一个问题:

我有2个工作表,Sheet1和Sheet2。

Sheet1具有A中的产品代码列表,以及一个在BSheet2中获得最低价格的公式:

 ABC A100 $10 A200 $12 A300 $45 

Sheet2具有产品代码,价格和说明的列表:

 ABC 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 

Sheet1B ,我使用以下公式来查找最低的非零价格:

 =MIN(IF('Sheet2'!$A$1:$A$20000=A1,IF('Sheet2'!$B$1:$B$20000>0,'Sheet2'!$B$1:$B$20000))) 

如何修改它以抓取C列中的描述并将其放置在Sheet1C

一如既往,感谢您的时间和精力!

我想我得到了答案)把下面的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公式,并且会在{}括号内产生(但不要手动input)。 error handling也包括在内。

如果需要组合价格和描述的1单元解决scheme – 使用这个怪物:

=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

您可以使用INDEX/MATCH解决scheme,例如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

由于Sheet2中的“产品代码”和“价格”列都可能有重复的值,因此我build议在Sheet2中创build一个独特的值,以便区分不同的价格/产品代码组合。 以下是我如何解决这个问题:

第1步 – 在Sheet2中插入新列

我在当前列A之前添加了一个新列,其公式如下:

 =CONCATENATE(B2,"-",C2) 

此版本现在将为Sheet2生成以下值:

 ABCD 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中input新的公式

 =VLOOKUP(CONCATENATE(A2,"-",B2),Sheet2!A:D,4,FALSE) 

这将从Sheet1中的数据中查找来自Sheet1的列A和B中的值的组合。 额外的错误检查可以被添加到忽略零价格的产品,但是我没有在我的公式中包括这个,因为你已经在Sheet1列B的前面的公式中考虑了这一点。当我testing它时,这产生了正确的描述。

如果你不能修改工作表到这个范围,你也可以使用一个迭代的基于VBA的解决scheme,如果有必要,我很乐意演示。

祝你好运!