假设我有一个“数据”表(使用“格式化为表格”按钮创建,带有标题)。在另一个表(例如“表格”)中,我有一列(“目标列”),其值在“数据”表的列名中,还有一列“中位数”。在“中位数”列中,我希望获得“数据”表的“目标列”列中给出的列的中位数。
我尝试执行 Median(Data[A2]),其中 A 是“目标列”列的列索引。这当然行不通。我想类似的东西可以与 INDIRECT 一起使用,但我不确定这是最有效的解决方案。
假设我的“数据”表有“val1”、“val2”、“val3”列,而我的“表格”表有“目标列”和“中位数”列。对于“目标列”中“数据”表的任何列名,我希望将“数据”表的该列的中位数放在“表格”表的“中位数”列中。
答案1
以下任一项都应该有效:
这将在表格的Data
标题行中搜索您在表格列中输入的标题。然后,它会使用该结果从表格中返回正确的列并计算该列的中位数。Target
Table
Data
=MEDIAN(INDEX(Data,,MATCH([@Target],Data[#Headers],0)))
或者
这将创建您需要引用该列的公式的文本版本,然后 INDIRECT 将其更改为可以使用 MEDIAN 的公式。
=MEDIAN(INDIRECT("Data[" & [@Target] & "]"))
第一个是更好的选择,因为它不是易变的 - 即它不会在任何时候重新计算任何事物工作簿中的更改。