我有一个IP地址列表,如下所示:
192.168.1.1
192.1688.2.1
192.168.3.1
现在我想在excel中编写一个宏,当我在列中输入IP地址时,例如192.168.3.48,它应该从列表中搜索前三个段(192.168.3)并添加一个字符串到另一个细胞。
例如,如果ip地址的前三个段是192.168.3那么它应该添加APP别的东西。
我本可以在Java或任何其他编程语言中轻松实现这一目标,但在excel方面它很难找到。
正常逻辑是从输入IP地址中删除前三个段,然后从列表中搜索这个新字符串。如果找到则该值为真(或者在这种情况下为APP)。我真的很困惑如何在excel中实现这一点。
任何帮助都会非常感激。
答案 0 :(得分:1)
这是相当直接的。
使用LEFT
从相关单元格中获取前三个字符。例如:
=LEFT(A1,3)
然后使用INDEX
和MATCH
获取交叉引用的字符串:
=INDEX(MY_LOOKUP_TABLE_2ND_COLUMN,MATCH(LEFT(A1,3),MY_LOOKUP_TABLE_1ST_COLUMN,0))
如果您在A栏输入您的IP地址,您可以将上述公式放在B栏中。如果A栏中没有输入任何内容,则此公式将产生错误。您可以通过这种方式抑制该错误:
=IFERROR(INDEX(MY_LOOKUP_TABLE_2ND_COLUMN,MATCH(LEFT(A1,3),MY_LOOKUP_TABLE_1ST_COLUMN,0)),"")
在工作簿的其他位置创建查找表(如在另一个工作表中)。它看起来像这样:
Column 1 Column 2
192 APP
编辑:在重读你的问题时,我想我可能误解了你想要做的事情。
答案 1 :(得分:0)
假设IP地址列表位于单元格A2,A3,A4等的A列中。
您可以通过以下公式在单元格A2中搜索第3个小数点的位置:
=SEARCH(".",A2,SEARCH(".",A2,SEARCH(".",A2,1)+1)+1)
和单元格A3中的第3个小数点如下:
=SEARCH(".",A3,SEARCH(".",A3,SEARCH(".",A3,1)+1)+1)
如果这些位置存储在B2,B3,B4等中......您可以使用左公式分隔所需的文本:
=LEFT(A2,B2-1)
=LEFT(A3,B3-1)
在此之后,您可以使用vlookup并检查输入字符串是否与这些匹配。