Excel公式将DNS中具有多个IP地址条目的主机名的IP地址连接起来

时间:2018-08-13 10:05:41

标签: excel excel-formula ip

我有事。表格:

表A -超过1000台未安装特定软件的计算机的列表

表B -使用Get-WmiObject PS cmdlet从本地DNS获得的15000多个主机到IP地址条目的列表。

我们正在调查为什么为表A 生成的计算机数量仍然很高,而我需要从表B 获取其IP地址。通过使用VLOOKUP函数,可以从表B 中的相应DNS条目中获取表A 中的机器的相应IP地址。我面临的最大障碍是,对于数百台在DNS中记录有两个或多个IP地址的计算机,因为有许多笔记本电脑漫游并与不同的子网相关联。 对于使用公式与之关联多个IP地址的每台机器,如何将两个或多个单元的IP地址值连接到一个单元中? 一种使公式足够智能以检测多个条目的主机名并对其多个IP地址执行所需的串联,并仅获取那些仅具有单个条目的主机名的IP地址值的方法?

例如,如果一台计算机在Table B中有3个条目(3行),其3个IP地址为PC1.abc.com10.10.10.15,则列出其名称192.168.10.11 3次,和172.16.25.23,则Table A中该计算机的条目(1行)在IP Address列下应有一个值,该值应等于所有这3个IP地址的组合,并用逗号(,-10.10.10.15, 192.168.10.11, 172.16.25.23。我希望为此使用完全不支持宏的Excel。

1 个答案:

答案 0 :(得分:0)

从在线的其他Excel会员那里获得了帮助(尽管有些问题使我无法粘贴URL,但我想这样做)。无论如何,它们可以很容易地被查找。这是两个公式,两个都起作用:

=TEXTJOIN(", ",TRUE,IF(<TableName>[<HostNameColumnName>]=<LookupCell>,<TableName>[<IPAddressColumnName>],""))

=TEXTJOIN(", ",TRUE,IF(<LookupCell>=<TableName>[<HostnameColumnName>],<TableName>[<IPAddressColumnName>],""))

作为输入数组的公式,应使用 Ctrl + Shift + Enter 输入以上两项。如果输入正确,公式将自动用{}括起来。

因此,如果查找单元格为A2,则Excel中DNS表(表B)的名称为Table2,主机名列的名称为HostName,并且IP地址列的名称为IP Address,则公式为:

=TEXTJOIN(", ",TRUE,IF(A2=Table2[HostName],Table2[IP Address],""))

并且,如果使用 Ctrl + Shift + Enter 组合正确输入到单元格中,则生成的公式将在公式栏上显示为:

{=TEXTJOIN(", ",TRUE,IF(A2=Table2[HostName],Table2[IP Address],""))}

感谢所有提供这些答案的人。