在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.