以下是我的2栏
A B
Spain [EMPTY]
France Euros
Spain Euros
在另一个单元格中,我想写一个能够写出每个国家货币的公式。就像我有:
C1 =西班牙,C2 =法国,
我想要有
D1 =欧元,D2 =欧元。
我用VLOOKUP
试了一下,但它给了我
C1 = [空],C2 =欧元
非常感谢你的时间
答案 0 :(得分:2)
正如其他人所评论的那样,VLOOKUP
会返回找到的第一个匹配项,这就是[EMPTY]
获得Spain
的原因。
您可以通过添加中间列来解决此问题。假设您使用公式B
插入列=IF(C1="","",A1)
并向下复制所有已使用的行。
D列是Spain
,France
等
E栏现在是=VLOOKUP(D1,B:C,2,0)
答案 1 :(得分:2)
如果您可以对列进行排序,请按列A排序,然后按B降序排序(Z-A),然后使用您尝试使用的vlookup。这将使该国家的价值为1,因此V-Lookup将返回一个谷而不是空。当返回empty时,因为A列中该条目的每个单个实例都有一个空值。但是,如果A中的条目具有多个值,它将从降序中选择第一个。
那么您是否有这样的情况:A列中的条目具有超过1种货币和空白条目的多个值?
然而,这有一个陷阱,因为订单现在很重要,所以如果将数据添加到此电子表格中,则每次都必须进行重新排序。
答案 2 :(得分:1)
我更喜欢VBA而不是公式,但这个(可怕的!)数组公式将返回第一个非空白匹配
在D1中放入
=IF(MAX(IF(--(A$1:A$6=C1)*LEN(B$1:B$6)>0,ROW(A$1:A$6),0))>0,INDEX(B$1:B$6,MAX(IF(--(A$1:A$6=C1)*LEN(B$1:B$6)>0,ROW(A$1:A$6),0))),"no match")
然后按Shift - Ctrl - Enter一起输入
如何运作
IF(--(A$1:A$6=C1)*LEN(B$1:B$6)>0,ROW(A$1:A$6),0))
检查A1是否与A1到A6中的每一个匹配,相应地B1到B6是否为非空。TRUE
,那么这些匹配的行号将放在一个数组中,如果FALSE
公式返回零。所以第一个数组标识为{0,0,3,0,0,0} MAX
不为零,则公式会使用INDEX
中的INDEX(B$1:B$6,MAX(IF(--(A$1:A$6=C1)*LEN(B$1:B$6)>0,ROW(A$1:A$6),0)))
我会把它拍到一个叫做Barry Houdini的配方天才,看看他能缩短多少呢
放大样本(包括真正的空白结果)
答案 3 :(得分:1)
我觉得这里是骗局.....不要问我任何VBA问题!
我注意到使用MAX
实际上意味着您的公式(以及克里斯修正后的版本)实际上提供了最后非空白匹配。您也可以使用非CSE LOOKUP
公式,即
=LOOKUP(2,1/(B$2:B$6<>"")/(A$2:A$6=C1),B$2:B$6)
如果没有匹配则返回#N / A
对于文本“不匹配”而不是假设公式返回文本值,您可以使用2003兼容
=LOOKUP("zzz",IF({1,0},"No match",LOOKUP(2,1/(B$2:B$6<>"")/(A$2:A$6=C1),B$2:B$6)))
对于第一次非空白匹配,您可以以类似的方式使用INDEX/MATCH
,即
=INDEX(B$2:B$6,MATCH(1,(B$2:B$6<>"")*(A$2:A$6=C1),0))
使用CTRL + SHIFT + ENTER确认