我发现有几个问题涉及我想做的事情,但不完全是。
我有一张表,比如说 Table1
部分 | tot_bad_1at3 | tot_bad_2at6 | tot_bad_3at6 | tot_bad_4at6 |
---|---|---|---|---|
A | 10 | 二十五 | 22 | 15 |
乙 | 1 | 11 | 9 | 4 |
C | 3 | 15 | 12 | 6 |
德 | 4 | 21 | 18 | 12 |
埃 | 6 | 8 | 5 | 2 |
然后,我在表中添加了计算列,称为“bad”,我希望根据用户在 Sheet2 单元格 A2 中的输入(称为“bad_def”)选择其中一列现有列。这是一个下拉列表,其值为:bad_1at3、bad_2at6、bad_3at6、bad_4at6
因此,表格列“bad”的“伪公式”将是[@["tot_" & bad_def ]]
或[@[indirect("tot_" & bad_def) ]]
。换句话说,我只想根据用户输入返回表格中的相应行。另一个选项是添加一个简单的计算来获取用户输入,并在其前面加上“tot_”以创建已经存在的表格列。
目前,我正在使用=INDEX(Table1, ROW([@Segment])-1, MATCH("tot_" & bad_def, Table1[#Headers],0))
,或使用一系列嵌套的 if 语句。因此,我想知道是否有更动态的方法来做到这一点?
谢谢您的建议。
大家好。
答案1
要为此场景创建动态计算列,请使用 XLOOKUP 函数(或 INDEX 和 MATCH 函数)查找查找值在表格标题行中,“表 1[#标题]",并从当前表行返回相应的值,"表格1[@]“:
=XLOOKUP("tot_"&bad_def, Table1[#Headers], Table1[@])
或者:
=INDEX(Table1[@], MATCH("tot_"&bad_def, Table1[#Headers], 0))
注意:使用 INDEX 函数时,由于大批参数仅包含一行,行号参数将接受列号争论。
此外,为避免出现任何循环引用警告,请勿在数据验证列表中包含新创建的计算列的列标题“bad_def“。