VLOOKUP与空单元格

这是我的2列

AB Spain [EMPTY] France Euros Spain Euros 

在另一个单元格中,我想写一个公式来写每个国家的货币。 如果我有:

C1 =西class牙,C2 =法国,
我想要有
D1 =欧元,D2 =欧元。

我尝试了VLOOKUP ,但它给了我
C1 = [空],C2 =欧元

非常感谢您的宝贵时间

正如其他人所说, VLOOKUP将返回它find的第一个匹配,这就是为什么你得到Spain [EMPTY]
您可以通过添加中间列来解决此问题。 让我们假设你插入一个公式=IF(C1="","",A1)的列B ,并复制所有使用的行。

D栏是SpainFrance

列E现在=VLOOKUP(D1,B:C,2,0)

如果您可以将您的列分类,按列A进行sorting,然后按B降序(ZA),然后使用您正在尝试使用的vlookup。 这将使国家的价值第一,所以V-Lookup将返回一个价值而不是空的。 当返回空时,它在列A中的条目的每个单个实例都有一个空值。 但是,如果A中的条目具有多个值,则会从降序中select第一个。

那么你是否有这样的情况,A列中的一个条目有多个超过1个货币的值和一个空白条目?

然而,这有一个缺点,就是订单现在很重要,所以如果数据被添加到这个电子表格中,每次都必须发生重新sorting。

我比公式更像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公式返回零。 所以第一个数组id {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的公式天才,看看他能缩短多less

下面放大的样本(包括一个真实的空白结果)

在这里输入图像描述

我觉得这里是一个骗局…..不要问我任何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确认