Return 列表中的最小值,其中只有某些值符合条件 - excel
Return the smallest value from a list, in which only certain values are eligeble - excel
我在表达我的问题时遇到了一些麻烦,但我希望你能理解!
我有 table 家公司在某些年份在国外建厂。 (A 至 C 列)。
在单独的 table 中,我有所谓的跨国距离测量(基于各国国内生产总值的差异)。 (G 至 M 列)。请注意,距离每年都在变化。
excel 的简化版本如下所示:
https://new.wu.ac.at/fileadmin/wu/d/i/iib/photo/stack.JPG
我想要的是在 D 列中手动输入结果的公式。它会给我一个如下结果:
- 它应该查看特定公司以前(几年前)在哪些国家/地区建厂
- 它将找到从当前国家到之前输入的任何国家的最小跨国距离
- 该值应为当前工厂建设的年份
让我用单元格 D8 中想要的示例结果来说明我的请求:
- 该公式必须找到先前在本例中输入的国家/地区列表土耳其和保加利亚
- 然后它必须进入第二个 table 并给我从科索沃到土耳其和保加利亚的最小距离
- 这必须在 2008 年(当年)的行中完成
我真的希望你们能帮助我,我找到了一种在列表中找到最小值的方法,我也可以在某些年内做到这一点,但我遇到的问题 excel 首先需要找到以前输入的国家,将它们存储在某种数组中,然后仅使用这些国家来考虑最小距离。
非常感谢!
尝试将此 "array formula" 复制下来 D2
=IFERROR(SMALL(IF(COUNTIFS(A:A,A2,B:B,"<"&B2,C:C,"<>"&C2,C:C,I:M)*(G:G=B2)*(H:H=C2),I:M),1),"N/A")
已通过 CTRL+SHIFT+ENTER
确认
这会检查您的较大 table 的三个条件 - header 行与符合条件的国家/地区相匹配(使用 COUNTIFS
函数基于小 table 中的条件) ,该列 G
匹配当前年份,而列 H
匹配当前国家/地区。
如果满足所有这些条件,则返回 table 中的相关值,并且 SMALL
找到最小的值。如果出现错误(因为没有符合条件的值),则返回 N/A
在 Excel 2010
或更高版本中,您可以使用 AGGREGATE
函数代替 SMALL
- 这很有用,因为它不需要 "array entry"
=IFERROR(AGGREGATE(15,6,I:M/(COUNTIFS(A:A,A2,B:B,"<"&B2,C:C,"<>"&C2,C:C,I:M)>0)/(G:G=B2)/(H:H=C2),1),"N/A")
我在表达我的问题时遇到了一些麻烦,但我希望你能理解!
我有 table 家公司在某些年份在国外建厂。 (A 至 C 列)。
在单独的 table 中,我有所谓的跨国距离测量(基于各国国内生产总值的差异)。 (G 至 M 列)。请注意,距离每年都在变化。
excel 的简化版本如下所示: https://new.wu.ac.at/fileadmin/wu/d/i/iib/photo/stack.JPG
我想要的是在 D 列中手动输入结果的公式。它会给我一个如下结果:
- 它应该查看特定公司以前(几年前)在哪些国家/地区建厂
- 它将找到从当前国家到之前输入的任何国家的最小跨国距离
- 该值应为当前工厂建设的年份
让我用单元格 D8 中想要的示例结果来说明我的请求:
- 该公式必须找到先前在本例中输入的国家/地区列表土耳其和保加利亚
- 然后它必须进入第二个 table 并给我从科索沃到土耳其和保加利亚的最小距离
- 这必须在 2008 年(当年)的行中完成
我真的希望你们能帮助我,我找到了一种在列表中找到最小值的方法,我也可以在某些年内做到这一点,但我遇到的问题 excel 首先需要找到以前输入的国家,将它们存储在某种数组中,然后仅使用这些国家来考虑最小距离。
非常感谢!
尝试将此 "array formula" 复制下来 D2
=IFERROR(SMALL(IF(COUNTIFS(A:A,A2,B:B,"<"&B2,C:C,"<>"&C2,C:C,I:M)*(G:G=B2)*(H:H=C2),I:M),1),"N/A")
已通过 CTRL+SHIFT+ENTER
确认这会检查您的较大 table 的三个条件 - header 行与符合条件的国家/地区相匹配(使用 COUNTIFS
函数基于小 table 中的条件) ,该列 G
匹配当前年份,而列 H
匹配当前国家/地区。
如果满足所有这些条件,则返回 table 中的相关值,并且 SMALL
找到最小的值。如果出现错误(因为没有符合条件的值),则返回 N/A
在 Excel 2010
或更高版本中,您可以使用 AGGREGATE
函数代替 SMALL
- 这很有用,因为它不需要 "array entry"
=IFERROR(AGGREGATE(15,6,I:M/(COUNTIFS(A:A,A2,B:B,"<"&B2,C:C,"<>"&C2,C:C,I:M)>0)/(G:G=B2)/(H:H=C2),1),"N/A")