在Mac上的Excel 2011中,如何使用vlookup返回非空白匹配值?


1

我在一张表上列出了域名及其注册商,并在另一张表上列出了相同的域名和其他数据(但不包括注册商)。

我需要从表A中获取注册商名称,以便在表B中的相应域名旁边。

工作表A的CSV示例:

domain1.com,,9.98,03/24/13
domain1.com,,9.98,03/24/13
domain1.com,godaddy,9.98,03/24/13
domain2.com,,9.98,03/24/13
domain2.com,godaddy,9.98,03/24/13
domain3.com,namecheap,9.98,03/24/13

表B的CSV示例:

domain1.com,1200,04/01/14
domain2.com,402,04/01/14
domain3.com,612,04/01/14

我希望将注册商放在每个域的表B的第4列中。

问题是,在表A中,域中存在多个与其他注册商过去的实例,但这些单元已被删除。这导致我从表B的vlookup找到域名的第一个匹配并返回相应的注册器,最终为空(返回零)。

有没有办法让一个VLookup(或其他公式)只返回一个非空白的相应注册商?

我用Index& amp;做了一些实验。匹配,但无法更接近。

Answers:


1

您可以使用数组公式来执行此查找。原始数据所在的位置 A1:D6,您可以使用此公式(调整工作表引用以匹配您的工作簿):

=INDEX(SheetA!$B$1:$B$6,MIN(IF(SheetA!$A$1:$A$6=SheetB!A1,IF(SheetA!$B$1:$B$6="",2000000,ROW(SheetA!$B$1:$B$6)),2000000)))

将其粘贴到公式栏中,然后按 按Ctrl + 转移 + 输入 。然后填写。

解释和假设:

  • 该 IF 里面的陈述 MIN function形成一个数值数组。对于符合标准的记录(即,域名匹配和注册商不是空白),记录的行号存储在数组中。对于不符合条件的记录,数字2000000存储在数组中。
  • 2000000是一个大于Excel工作表中行数的任意数字。这只是为了保证如果找不到匹配项, INDEX 函数将返回错误。
  • INDEX 返回数组中指定位置的值。
  • 记录的行号用作表中记录位置的替代。如果表格从第1行开始,这是正常的,因为记录1在第1行。但是,如果您的数据从另一行开始,则需要调整公式以使其工作。例如,如果记录1在第2行,则需要替换 ROW($B$2:$B$7) 同 ROW($B$2:$B$7)-1。否则, INDEX 功能将返回错误的注册商。

这看起来很接近......但我可能不了解如何更改公式以使用我的数据。数据在两张不同的纸张上,所以假设在你的例子中A是表A,而B是表B,我最后得到了这个公式,它返回了一些东西,但没有正确的数据,我甚至无法弄清楚什么回来了。 =INDEX(B:B,MIN(IF('domains'!A:A=B14,IF(B:B="",2000000,ROW(B:B)),2000000))) 另外,这会在匹配值旁边返回一行?我没看到发生了什么。
— Jonathan van Clute

对不起,那令人困惑。我会将表格参考编辑到我的公式中。
— Excellll

我仍然必须搞砸了。这次我结束了 =INDEX('domains'!A:A,MIN(IF('domains'!A:A=B2,IF('domains'!A:A="",2000000,ROW('domains'!B:B)),2000000))) 但是我收到#REF错误。这个公式btw应该放在表B中吗?
— Jonathan van Clute

忽略以前的评论,我忘了把它变成一个数组公式。现在它返回与以前相同的错误信息,基本上没有任何改变。
— Jonathan van Clute

好吧,我想我明白了......有一个错字。将验证这是否正常工作,如果需要,并接受答案。谢谢!
— Jonathan van Clute
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.