代码之家  ›  专栏  ›  技术社区  ›  Landers

将矩阵转换为包含所有值的列表

  •  0
  • Landers  · 技术社区  · 10 月前

    我有一个矩阵,它有行名和;我试图将其转换为列表的标题名称。有没有一个公式可以做到这一点?我尝试了一些选择,但无法理解如何解释这个问题。因此,请查看图片以了解清楚。

    我正试图将矩阵转换为一个列表,我可以将其脚本化到系统中。

    enter image description here

    0 回复  |  直到 10 月前
        1
  •  1
  •   VBasic2008    10 月前

    一个基本的缺点

    =LET(table,A1:D5,
        h,TAKE(table,1),
        d,DROP(table,1),
        srl,TAKE(d,,1),
        scl,DROP(h,,1),
        sv,DROP(d,,1),
        drl,TOCOL(IF(SEQUENCE(,COLUMNS(scl)),srl)),
        dcl,TOCOL(IF(SEQUENCE(ROWS(srl)),scl)),
        dv,TOCOL(sv),
        r,HSTACK(drl,dcl,dv),
        r)
    
    • 更换最底部 r 与任何其他变量一起查看它所包含的内容。

    enter image description here

    删除冗余变量后 h , sv ,以及 r :

    =LET(table,A1:D5,
        d,DROP(table,1),
        srl,TAKE(d,,1),
        scl,DROP(TAKE(table,1),,1),
        drl,TOCOL(IF(SEQUENCE(,COLUMNS(scl)),srl)),
        dcl,TOCOL(IF(SEQUENCE(ROWS(srl)),scl)),
        dv,TOCOL(DROP(d,,1)),
        HSTACK(drl,dcl,dv))
    

    进一步删除变量 drl , dcl ,以及 dv :

    =LET(table,A1:D5,
        d,DROP(table,1),
        srl,TAKE(d,,1),
        scl,DROP(TAKE(table,1),,1),
        HSTACK(TOCOL(IF(SEQUENCE(,COLUMNS(scl)),srl)),
            TOCOL(IF(SEQUENCE(ROWS(srl)),scl)),
            TOCOL(DROP(d,,1))))
    

    或相同:

    =LET(
        table,A1:D5,
        d,DROP(table,1),
        srl,TAKE(d,,1),
        scl,DROP(TAKE(table,1),,1),
        HSTACK(
            TOCOL(IF(SEQUENCE(,COLUMNS(scl)),srl)),
            TOCOL(IF(SEQUENCE(ROWS(srl)),scl)),
            TOCOL(DROP(d,,1))
        )
    )