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

反转电子表格的列

  •  5
  • Elsa  · 技术社区  · 6 年前

    我想反转电子表格的列。样本为“A1:E1”列中的“p227”、“s121”、“p117”、“p252”、“s215”。值是随机的。我想把这个专栏改成“s215”,“p252”,“p117”,“s121”,“p227”。

    我试过了 =TRANSPOSE(SORT(TRANSPOSE(A1:E1),1,false)) .但产出是 "s255", "s121", "p212", "p187", "p121" .值已排序。这不会反转列。有办法解决这个问题吗?我应该用汽油吗?

    样品

          A    B    C    D    E
    
    1   p227 s121 p117 p252 s215
    

    预期结果

          A    B    C    D    E
    
    1   s215 p252 p117 s121 p227
    

    非常感谢您抽出时间。

    3 回复  |  直到 6 年前
        1
  •  7
  •   TheMaster    6 年前

    尝试

    =TRANSPOSE(SORT(TRANSPOSE(A1:E1),TRANSPOSE(COLUMN(A1:E1)),0))
    
    • 按降序使用列编号进行排序
    • 因为排序只对行起作用,所以需要转置
        2
  •  5
  •   Tom Sharpe    6 年前

    这里有一个通用的

    方法:

    Transpose
    Add row numbers
    Sort descending by row number
    Transpose
    Remove row numbers
    

    公式:

    =ArrayFormula(query(TRANSPOSE(sort({row(indirect("1:"&columns(A1:E2))),transpose(A1:E2)},1,false)),"select * offset 1"))
    

    enter image description here

    编辑

    经过深思熟虑,这会更整洁一些,在转置之前添加列号,并避免间接:

    =ArrayFormula(query(TRANSPOSE(sort(transpose({COLUMN(A1:E2);A1:E2}),1,false)),"select * offset 1"))
    
        3
  •  2
  •   Zak    6 年前

    通过使用数组文字语法,您可以手动将列重新组合为您喜欢的顺序:

    ={A:A,F:F,E:E,D:D,C:C,B:B}
    

    或者,使用 QUERY() 重新排列你的专栏。

    QUERY(A:F, "SELECT A, F, E, D, C, B")