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

然后使用INDEXMATCH获得交叉引用的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是否匹配。