使用SMALL函数检索范围中的最低值,尝试与OFFSET组合以获取左侧的值

时间:2014-11-24 06:47:19

标签: excel-formula

我在H2中使用SMALL公式来找到行中的最低价格,效果很好。 =IF(ISERROR(SMALL(A2:F2,COUNTIF(A2:F2,0)+1)),"",SMALL(A2:F2,COUNTIF(A2:F2,0)+1))

我无法使用OFFSET检索左侧的值(对应的项目#)。

  A   |  B    |   C   |  D    |   E   |   F   |          G         |          H
item# | price | item# | price | item# | price | lowest value item# | lowest value
123   |  70   | 456   | 80    | 789   | 67.89 |   ?                | 67.89

另外,我不知道哪个列的值最低,A-F可以更改。 我花了几个小时搜索并尝试使用原始公式作为OFFSET的参考部分: =OFFSET(IF(ISERROR(SMALL(A2:F2,COUNTIF(A2:F2,0)+1)),"",SMALL(A2:F2,COUNTIF(A2:F2,0)+1)),0,-1,1,1)及其变体。这将返回#Value!

我是否在正确的轨道上? OFFSET是正确的方法吗?感谢

2 个答案:

答案 0 :(得分:2)

我也会通过替换H2来删除对H2的依赖,只需添加 MIN 函数

=INDEX(A2:F2;MATCH(MIN(A2:F2);A2:F2;0)-1)


但是,您始终需要区分商品编号和价格。有时项目价值可能低于价格,然后您的公式将无法运作。它会将项值返回为最低值,然后返回前一项的价格。这将是一个烂摊子。
因此,要解决此问题,您需要添加两个 MATCH 条件以查找完全匹配:
这里的公式是最低价值项

=INDEX(A2:F2;(MATCH(MIN(IF(A1:F1="Price";A2:F2));A2:F2;0)-1)*(MATCH("Item#";A1:F1;0)))


以及找到 LOEWST VALUE PRICE

的公式
=MIN(IF(A1:F1="Price";A2:F2))

例如以下内容:

enter image description here

C2 中的值是最低的,但它不是最低的价格值,它本身位于 F2 中这就是为什么你需要添加这些匹配条件才能找到项目以上的值价格。 因此,对于价格,我使用 MIN(IF 项目#,我使用 MATCH 条件。


这是the excel sheet example downloadable from dropbox

P.S。
不要忘记通过替换&#34 ;;"来调整表格到您的区域设置。与","

告诉我它是否有效。

答案 1 :(得分:1)

OFFSET是正确的方法吗? - 没有

OFFSET期望第一个参数是范围引用,而不是值。

如果您的价格是唯一的,请使用此(如果不是,我不确定您会期望什么结果)

=INDEX(A2:F2,MATCH(H2,A2:F2,0)-1)

那就是说,你的SMALL公式看起来很可疑。如果所有价格均为"",您似乎想要返回0。但在这种情况下,您的公式将返回最小的item#。你能确认一下吗?