如果 $C$5="Y",下面的公式返回至少 10 个值(如果包括对角线值)。如果 $C$5="Y",我们如何才能只获得非对角线值。
=VSTACK({"V1","V2","V3","V4"},
HSTACK({1;2;3;4;5;6;7;8;9;10},TAKE(SORT(--TEXTSPLIT(TEXTAFTER("|"&
TOCOL(IFS(ISNUMBER(ABS(IF(ISREF(IF($C$5="N",INDIRECT("'"&$C$10&"'!B2:E5"),IF(ROW(INDIRECT("'"&$C$10&"'!B2:E5"))=COLUMN(INDIRECT("'"&$C$10&"'!B2:E5")),0,INDIRECT("'"&$C$10&"'!B2:E5")))), IF($C$5="N",INDIRECT("'"&$C$10&"'!B2:E5"),IF(ROW(INDIRECT("'"&$C$10&"'!B2:E5"))=COLUMN(INDIRECT("'"&$C$10&"'!B2:E5")),0,INDIRECT("'"&$C$10&"'!B2:E5"))), 0)-
IF($C$5="N",INDIRECT("'"&$C$9&"'!B2:E5"),IF(ROW(INDIRECT("'"&$C$9&"'!B2:E5"))=COLUMN(INDIRECT("'"&$C$9&"'!B2:E5")),0,INDIRECT("'"&$C$9&"'!B2:E5"))))),ABS(IF(ISREF(IF($C$5="N",INDIRECT("'"&$C$10&"'!B2:E5"),IF(ROW(INDIRECT("'"&$C$10&"'!B2:E5"))=COLUMN(INDIRECT("'"&$C$10&"'!B2:E5")),0,INDIRECT("'"&$C$10&"'!B2:E5")))), IF($C$5="N",INDIRECT("'"&$C$10&"'!B2:E5"),IF(ROW(INDIRECT("'"&$C$10&"'!B2:E5"))=COLUMN(INDIRECT("'"&$C$10&"'!B2:E5")),0,INDIRECT("'"&$C$10&"'!B2:E5"))), 0)-IF($C$5="N",INDIRECT("'"&$C$9&"'!B2:E5"),IF(ROW(INDIRECT("'"&$C$9&"'!B2:E5"))=COLUMN(INDIRECT("'"&$C$9&"'!B2:E5")),0,INDIRECT("'"&$C$9&"'!B2:E5"))))&"|"&INDIRECT("'"&$C$9&"'!A2:A5")&"|"&INDIRECT("'"&$C$9&"'!B1:E1")),3),"|",{1,2,3}),"|"),,1),10)))
表 2
表 3
结果输出:
期望的输出:
前四行是对角线值,不应该出现在那里,并且该表应从第 5 行开始。
最佳答案
两个矩阵之间的最小差异
=LET(r_address,"B2:E5",sample,10,s_ref1,C9,s_ref2,C10,yes_no,C5,
data1,INDIRECT("'"&s_ref1&"'!"&r_address),
data2,INDIRECT("'"&s_ref2&"'!"&r_address),
rc,ROWS(data1),
s,SEQUENCE(rc^2),
h,"V"&SEQUENCE(,rc),
rs,ROUNDUP(s/rc,),
cs,MOD(s-1,rc)+1,
d,TOCOL(ABS(data1-data2)),
st,TAKE(SORT(HSTACK(d,rs,cs)),sample),
f,IF(yes_no="y",FILTER(st,INDEX(st,,2)<>INDEX(st,,3)),st),
VSTACK(h,HSTACK(SEQUENCE(ROWS(f)),f)))
关于Excel按升序排序,不包括对角线元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77699495/