在microsoft excel中进行Discate

时间:2015-04-10 15:22:41

标签: excel concatenation visual-studio-macros

我有一个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中实现这一点。

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

这是相当直接的。

使用LEFT从相关单元格中获取前三个字符。例如:

=LEFT(A1,3)

然后使用INDEXMATCH获取交叉引用的字符串:

=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并检查输入字符串是否与这些匹配。