提问人:vp_050 提问时间:10/31/2023 最后编辑:Mayukh Bhattacharyavp_050 更新时间:11/1/2023 访问量:113
提取存储在对角线元素中的值,并在 Excel 中使用 rowid 作为输入
Extract values stored in diagonal elements with the rowid as an input in Excel
问:
假设我们有以下矩阵,我们希望通过提取存储在对角线单元格中的值来填充 ROW 标签和 COLUMN 标题中的值。C2
C1
矩阵:
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | 2416 | 6136 | 13519 | 5298 | 1333 |
2 | 459 | 2416 | 5225 | 12043 | 3292 |
3 | 785 | 1276 | 1319 | 3188 | 14798 |
4 | 605 | 816 | 689 | 1539 | 4529 |
5 | 205 | 221 | 152 | 301 | 459 |
期望的结果
C1 C2
2 2416
5 459
我尝试过使用和功能,但无法获得所需的结果。MATCH()
INDEX()
注意:如果矩阵以表格格式存储在另一个工作表中,并且我想使用函数来读取值。INDIRECT()
答:
尝试使用INDEX() & MATCH()
• 细胞中使用的配方I2
=INDEX($B$2:$F$6,MATCH(H2,$A$2:$A$6,0),MATCH(H2,$B$1:$F$1,0))
或SUM()
• 细胞中使用的配方I2
=SUM((H2=$B$1:$F$1)*(H2=$A$2:$A$6)*$B$2:$F$6)
或者,使用FILTER()
• 细胞中使用的配方I2
=FILTER(FILTER($B$2:$F$6,H2=$A$2:$A$6),H2=$B$1:$F$1)
或者,使用MAP()
• 细胞中使用的配方I2
=MAP(H2:H3,LAMBDA(x,FILTER(FILTER(B2:F6,x=A2:A6),x=B1:F1)))
或
• 细胞中使用的配方I2
=XLOOKUP(H2,$B$1:$F$1,FILTER($B$2:$F$6,H2=$A$2:$A$6))
基于OP评论的假设:
这个公式: =XLOOKUP(H2,$B$1:$F$1,FILTER($B$2:$F$6,H2=$A$2:$A$6)) 如果矩阵存储在另一个工作表中并且我们使用间接函数来读取它,则其他公式似乎不起作用。
由于我不确定您使用该函数的原因,因为它不清楚并且 OP 似乎没有正确解释,因此我尝试了几种我在下面评论的方法,只是假设如果您使用引用 SheetTab,那么您可以尝试。INDIRECT()INDIRECT()
• 细胞中使用的配方B2
=LET(
α, INDIRECT(C1&"!A1:F6"),
φ, DROP(TAKE(α,,1),1),
δ, DROP(TAKE(α,1),,1),
Ω, DROP(α,1,1),
MAP(A2:A3,LAMBDA(m,FILTER(FILTER(Ω,m=φ),m=δ))))
此外,我清楚地看到的不是必需的,但是是的,如果您有多个工作表并想将工作表切换为不同的输出,那么它是必需的,但是在现代 excel 中,在俱乐部中,您可以组合一组数据,然后对数据进行操作。但仍然不清楚。INDIRECT()
一种方式:
@P.b 先生建议的另一种方式,
如果其他工作表中的数据在Structured References
最终编辑和更新:
Sheet1
--> 是存储数据的位置。Structured References
--> 数据在 akaStructured References
Tables
- OP,想专门使用函数。INDIRECT()
• 细胞中使用的配方B2
=LET(
α, INDIRECT(C1),
φ, DROP(TAKE(α,,1),1),
δ, DROP(TAKE(α,1),,1),
Ω, DROP(α,1,1),
MAP(A2:A3,LAMBDA(m,FILTER(FILTER(Ω,m=φ),m=δ/1))))
或
•在C2
=LET(
α, INDIRECT(C1),
φ, DROP(α,1,1),
δ, TOROW(IF(φ,DROP(TAKE(α,1),,1)))/1,
Ω, TOROW(IF(φ,DROP(TAKE(α,,1),1))),
MMULT((δ=A2:A3)*(Ω=A2:A3),TOCOL(φ)))
笔记:由于标题是数字,而它转换为文本格式,因此它被除以使其成为数字 -->Structured References
1
δ/1
上面发布的所有解决方案都可以在这里找到:Excel
评论
INDIRECT()
=FILTER(FILTER(INDIRECT("Sheet1!"&"B2:F6"),INDIRECT("Sheet1!"&"A2:A6")=A2),INDIRECT("Sheet1!"&"B1:F1")=A2)
=INDEX(INDIRECT("Sheet1!"&"B2:F6"),MATCH(A2,INDIRECT("Sheet1!"&"A2:A6"),0),MATCH(A2,INDIRECT("Sheet1!"&"B1:F1"),0))
评论
'Sheet1'!B2:F6
C1
C2