如何将两列表格转换为带有类别的列表

问题描述 投票:0回答:1

我有一个两列表,由数据列类别列组成。

enter image description here

我想以这样的方式重新组织表格,将类别列提升为列标题,并且它将列出属于列中特定类别的所有数据项(可能会发生某种排序),如下所示:

enter image description here

最终,我希望所有列的第一行数据都相似。像这样: enter image description here

可以使用以下方法来完成此操作吗:

  • 动态公式 - 我使用
    transpose(sort(unique(CATEGORY[])))
    创建列标题和
    filter(DATA[],CATEGORY[]=column header reference)
    。但是,当我将公式拖到其他列以复制公式时,过滤器公式会互换,例如:
   D1 formula
   =TRANSPOSE(SORT(UNIQUE(Table[CATEGORY])))

   CATEGORY A
   =filter(Table[DATA],Table[CATEGORY]=D1) - D1 is the cell reference of the A Header
   
   CATEGORY B *becomes*
   =filter(Table[CATEGORY],Table[DATA]=E1) - E1 is the cell reference of the B Header
       
   CATEGORY C *becomes*
   =filter(Table[DATA],Table[CATEGORY]=F1) - F1 is the cell reference of the C Header

   *and so on and so forth*

   
   using the # Operator after D1 produces an error
   =filter(Table[DATA],Table[CATEGORY]=D1#)
  • 专业功能 -

    Lambda
    Let
    ToRow
    或任何其他类似功能:表格的大小会有所不同,类别列需要灵活并适应要添加的新类型。我对这些功能不太熟悉,但我愿意了解它们。我只是不确定在这种情况下使用哪些函数。对第一个表中的类别列使用数据验证是不可行的

  • Pivot、Unpivot 或 PowerQuery - 如果见过的大多数问题都是相反的操作 - 如何将多个列组合成一个两列表。我该如何做相反的事情?

谢谢。

excel excel-formula pivot powerquery
1个回答
0
投票

以下是使用适用于

MS365
的现代 Excel 公式的几种可能性:

• 对于第一个所需输出:

enter image description here

• 使用

PIVOTBY()
:

=LET(
     α, B2:B11,
     Σ, MAP(α,LAMBDA(ε, COUNTIF(ε:B2,ε))),
     DROP(PIVOTBY(Σ, α, A2:A11,SINGLE,,0,,0),,1))

• 使用

REDUCE()
:

=LET(
     a, B2:B11,
     b, TOROW(UNIQUE(a)),
     IFNA(DROP(REDUCE("",b,LAMBDA(x,y,HSTACK(x,
     VSTACK(y, FILTER(A2:A11,a=y,""))))),,1),""))

• 使用

MAKEARRAY()
:

=LET(
     a, B2:B11,
     b, TOROW(UNIQUE(a)),
     c, MAX(COUNTIF(a,a)),
     d, MAKEARRAY(c,COLUMNS(b),LAMBDA(x,y,
        INDEX(FILTER(A2:A11,a=INDEX(b,y)),x))),
     IFERROR(VSTACK(b,d),""))

• 对于第二个所需输出:

enter image description here

使用

MAKEARRAY()

=LET(
     a, B2:B11,
     b, TOROW(UNIQUE(a)),
     c, A2:A11,
     d, MAKEARRAY(MAX(c), COLUMNS(b), LAMBDA(x,y, 
        FILTER(c,(INDEX(UNIQUE(c),x)=c)*(INDEX(b,y)=a),""))),
     VSTACK(b,d))

© www.soinside.com 2019 - 2024. All rights reserved.