Excel 连接第三个单元格中列出的单元格的字符串

Excel 连接第三个单元格中列出的单元格的字符串

我有一个包含五列的 Excel 2007 工作簿:

A. A list of machines
B. A list of service numbers for each machine
C. A list of service names for each machine
...(nothing here)
I. A list of Service Numbers
J. A list of Service Names

A 列中列出的每台机器都运行着 J 列列表中的一项或多项服务。我希望能够通过向 B 列添加另一个逗号分隔的数字来向机器添加服务(即更新 C 列中的单元格)。例如,假设 Machine1 具有前三个服务,则第一行将如下所示:

|    A     |  B    |    C
| Machine1 | 1,2,3 | HTTP,HTTPS,DNS

现在,我必须针对所做的每个更改手动更新 c 列中的公式。当前公式是:

=CONCATENATE(J1,",",J2,",",J3)

我想使用类似这样的东西(请原谅我的语法;我是一名程序员,我将单元格 B1 视为一个索引数组):

=CONCATENATE(CELL("J"+B1[0] , "," , "J"+B1[1] , "," "J"+B1[2])

尽管服务数量的不稳定使得这一点更加困难。

有什么办法吗?作为参考,这是 I 和 J 列:

|  I  |   J
|  1  |HTTP
|  2  |HTTPS
|  3  |DNS
.....
|  16 |Service16

我不太了解 Excel,因此非常感谢任何帮助。

答案1

使用类似这样的方法可以对你的HTTP,HTTPS,DNS手机起作用:

=IF(COUNTIF(G3, "*"&H7&"*") > 0, I7)&", "&IF(COUNTIF(G3, "*"&H8&"*") > 0, I8)&", "&IF(COUNTIF(G3, "*"&H9&"*") > 0, I9)

在示例中: G3是您的1,2,3单元格,列H是您的 # 引用,I是您的协议。

它非常丑陋,但这似乎是 Excel 的常态。

答案2

如今曾经可以使用:

=LET(ServiceNames,  FILTERXML("<Outer><Inner>"&SUBSTITUTE(B1,",","</Inner> 
     <Inner>")&"</Inner></Outer>","/Outer/Inner"),

     TEXTJOIN(",",  FALSE,  INDEX(J1:J16, ServiceNames, 1)  )
    )

相关内容