我有一个包含五列的 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) )
)