在Microsoft Excel中遭到抨击
我有一个IP地址列表,可以说如下:
192.168.1.1 192.1688.2.1 192.168.3.1
现在我想在excel中写一个macros,当我在列中input一个IP地址时,例如192.168.3.48,它应该从列表中search前三个段(192.168.3),并将一个string添加到另一个单元格中。
例如,如果IP地址的前三个部分是192.168.3,那么它应该添加APP,否则其他的东西。
我本来可以很容易地用Java或其他编程语言来实现这个目标,但是当涉及到excel的时候,它却遇到了棘手的问题。
正常的逻辑是从input的IP地址中丢弃前三个段,然后从列表中search这个新的string。 如果发现那么值是真实的(或在这种情况下APP)。 我真的很困惑如何在Excel中实现这一点。
任何帮助将非常感激。
这是相当直接的。
使用LEFT
获取问题单元格的前三个字符。 例:
=LEFT(A1,3)
然后使用INDEX
和MATCH
获得交叉引用的string:
=INDEX(MY_LOOKUP_TABLE_2ND_COLUMN,MATCH(LEFT(A1,3),MY_LOOKUP_TABLE_1ST_COLUMN,0))
如果在列A中inputIP地址,则可以将上面的公式放在列B中。如果在列A中没有input任何内容,则此公式将产生错误。 你可以用这种方法来抑制这个错误:
=IFERROR(INDEX(MY_LOOKUP_TABLE_2ND_COLUMN,MATCH(LEFT(A1,3),MY_LOOKUP_TABLE_1ST_COLUMN,0)),"")
在你的工作簿的其他地方创build你的查找表(就像在另一个表上)。 它看起来像这样:
Column 1 Column 2 192 APP
编辑:在重读您的问题时,我想我可能误解了您要做的事情。
假设IP地址列表位于单元格A2,A3,A4等的列A中。
您可以通过以下公式search单元格A2中第三个小数点的位置:
=SEARCH(".",A2,SEARCH(".",A2,SEARCH(".",A2,1)+1)+1)
和单元格A3中的第三个小数点由以下内容组成:
=SEARCH(".",A3,SEARCH(".",A3,SEARCH(".",A3,1)+1)+1)
如果这些位置存储在B2,B3,B4等等中,则可以使用Left公式分隔所需的文本:
=LEFT(A2,B2-1) =LEFT(A3,B3-1)
之后,您可以使用vlookup并检查input的string是否匹配。