我的 excel 文件中有 10 个工作表。Sheet2 至 Sheet10 是原始数据,每个工作表 A1 都有该工作表名称,如下所示
工作表2
colA colB colC colD
row1 Sheet2
row2 489 154 785
row3 588 256 546
row4 758 654 945
工作表3
colA colB colC colD
row1 Sheet3
row2 758 95 245
row3 236 265 956
row4 879 486 785
在 Sheet1 中,我找到了整个 Sheet 中每个单元格的最大值,如下所示。它只给我值,我还想知道这个值来自哪个 Sheet。所以我这样做了=INDEX(Sheet2:Sheet10!A1,MATCH(A1,Sheet2:Sheet10!B2,0))
,但返回了#VALUE!
。
colA colB colC
row1 =MAX(Sheet2:Sheet10!B2) =MAX(Sheet2:Sheet10!C2) ...
row2 =MAX(Sheet2:Sheet10!B3) =MAX(Sheet2:Sheet10!C3)
row3 ...
我期望的是这样的
colA colB colC colD
row1 758 Sheet3 (mean A1 max value 758 is from Sheet3)
row2 588 ... Sheet2 (mean A2 max value 588 is from Sheet2)
row3 879
我该如何改变我的配方?
答案1
看看下面的解决方案是否适用于辅助列。为了简单起见,我只使用了三个工作表,即 Sheet2、Sheet3 和 Sheet4
以上是 Sheet2、Sheet3 和 Sheet4 中的示例数据
在主工作表 Sheet1 的一个角落处创建一个辅助列,并在其中放入所有工作表的名称(排除该列表中第一个工作表名称)。
请参阅下面的屏幕截图。
在这个例子中,我创建了辅助列 K。K1:K3 保存了包含原始数据的工作表名称。
B2 中的公式,您已经在使用。
=MAX(Sheet2:Sheet4!B2)
将其拖动到行和列之间以获取相应的最大值。
现在在 E2 中输入以下公式,然后在公式栏中按CTRL+ SHIFT+ENTER创建数组公式。花括号将自动添加到公式中,使其成为数组公式。
=INDEX($K$1:$K$3,MATCH(1,COUNTIF(INDIRECT($K$1:$K$3&"!"&CELL("address",B2)),B2),0))
分别沿行和列单元格向下拖动以获取 MAX 值所在的工作表名称。
请注意,这不考虑重复的 MAX 值。如果存在,则将返回第一个 MATCH 工作表名称。
工作表的位置也很重要。辅助列列表应与原始数据表的顺序(位置)相同,如果您稍后切换实际原始数据表的位置,解决方案将无法正确报告工作表名称。
希望这可以帮助。