【问题标题】:Looking up values in cells from 2 different spreadsheets and returning a Y or N value从 2 个不同的电子表格中查找单元格中的值并返回 Y 或 N 值
【发布时间】:2013-06-17 17:22:15
【问题描述】:

在 Excel 中,如果 1 个单元格包含值(IP 地址),并且另一个电子表格中的 1 个单元格具有该值,但不只是该值(例如:RSServer IP 地址位置),我想返回“Y " 或 "N" 取决于它是否从第二个电子表格的第一个电子表格中找到值。

示例: 电子表格 1 命名的 IP 地址 G栏 单元格 G2 值:192.38.111.22

电子表格 2 命名的服务器位置 F栏 单元格 F2 值:DVRLocation 192.38.111.22 New York

电子表格 2 有 60,000 行,我需要检查这些行以确保电子表格 1 中的 IP 地址存在。如果是,那么我想在 H2 的第一个电子表格中返回 Y 值。

我希望我已经足够清楚了,我很感激任何意见!我是 VBA 初学者,但我认为自己精通 Excel。谢谢!!!!

【问题讨论】:

  • 所以您需要检查所有行,还是只检查相应的行?如果 G2 在电子表格 1 中包含 192.38.111.22,那么它在电子表格 2 中的位置是否重要?它可以只在 G2 中,还是在任何地方(比如 G12557)?
  • 谢谢约翰。我只需要在电子表格 2 中搜索“F”列,但可以是该列中的任何单元格,而不仅仅是 F2,但可以是 F12557 等。

标签: excel vba


【解决方案1】:

我不知道vb,但是我很确定可以在那里翻译公式。

=VLOOKUP("*"&'Spreadsheet 1'!G2&"*",'Spreadsheet 2'!F:Y,20,0)

要获得Y/N 结果:

=IF(ISERROR(COUNTIF('Spreadsheet 2'!F:F, "*"&'Spreadsheet 1'!G2&"*")),"N","Y")

或者使用 vlookup:

=IF(ISERROR(VLOOKUP("*"&'Spreadsheet 1'!G2&"*",'Spreadsheet 2'!F:F,1,0)),"N","Y")

【讨论】:

  • 好的,我看到了你的公式,非常感谢你回答我的问题。在它的最后,有一个 F:Y,20,0。我看到 F: 是“F”中的所有行,而 Y 是为了回答我的问题,让它在第一个电子表格的 H2 中返回“N”或“Y”,但是 20,0 代表什么?
  • 我使用了您的公式,但查看它,我认为通配符位于错误的部分(而且我似乎无法添加它们)。我可能是错的,所以我提前道歉,但是通配符将在第二个电子表格中,因为我需要在第二个电子表格的 F 的整个列中的第一张表中搜索 IP 地址。这是我更改的内容:code=VLOOKUP(""&[APT.xls]Sheet1!G2&"",[VOD.xlsx]Sheet1!F:Y,20,0)/code
  • @user1202310: 哦,那么你可以使用if()countif(),这可能会更快一些,或者使用带有vlookup()iserror() 函数的if。我稍后会添加该公式。对于您的第二条评论,vlookup 所做的是将第一个参数与每个表格内容进行比较,以便它会在第二张表中查找 *192.38.111.22*,这就是通配符发挥作用的地方。我真的不确定这在 vb 中是如何工作的:S
  • 不使用 VBA 肯定没问题。它比我需要的要复杂得多。我刚刚添加了@chancea 给我的宏,它说“下标超出范围”,这意味着我可能捏造了一些东西。如果它更容易,我会很乐意等待你的公式。仅供参考,具有单个 IP 地址的名称是 APT.xls,第二张包含大量数据(包括 IP 地址)的名称是 VOD.xlsx,如果这有助于公式谢谢!!!!!!!!!! !
  • 这成功了!非常感谢@chancea 和 John 的帮助,这非常有效!我使用了 Y/N 结果和 ISERROR 命令,得到了我需要的东西。如果这对你们有帮助,我肯定会留下捐款。真的很感激!
猜你喜欢
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
相关资源
最近更新 更多