Excel按升序排序,不包括对角线元素

标签 excel sorting matrix excel-formula diagonal

如果 $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

<表类=“s-表”> <标题> 1 2 3 4 5 <正文> 1 83 37 69 80 52 2 89 44 30 64 47 3 56 39 87 88 92 4 60 38 34 35 93 5 21 75 66 47 79

表 3

<表类=“s-表”> <标题> 1 2 3 4 5 <正文> 1 43 22 46 2 27 2 5 21 37 1 37 3 11 18 6 32 2 4 42 10 10 36 46 5 9 22 1 41 37

结果输出:

enter image description here

期望的输出:

前四行是对角线值,不应该出现在那里,并且该表应从第 5 行开始。

最佳答案

两个矩阵之间的最小差异

enter image description here

=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)))

enter image description here

关于Excel按升序排序,不包括对角线元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77699495/

相关文章:

excel - 动态设置excel模板的打印区域

c++ - 更改 vector 中的值后,make_heap 无法按预期工作?

C语言——将矩阵表示为指针数组

r - 通过两个数据帧和一个矩阵进行匹配和索引

java.lang.NoClassDefFoundError : org/apache/poi/ss/usermodel/ExtendedColor

sql-server - 在 SQL Server 数据库中导入可变时间序列数据

Python 排序字典列表,其中包含列表

java - 寻找更高效的堆排序?

java - 实现施特拉森算法

excel - VBA和Excel优化处理时间,处理多行