答案1
有很多方法可以做到这一点,以下是几种可能的方法:
使用UNIQUE()
、TOROW()
&FILTER()
函数:
• 单元格中使用的公式D2
=UNIQUE(A2:A21)
• 单元格中使用的公式E2
=TOROW(FILTER(B$2:B$21,D2=A$2:A$21))
或者,使用单一公式动态溢出:
=LET(
_data, A2:B21,
_date, TAKE(_data,,1),
_udate, UNIQUE(_date),
_rows, ROWS(_udate),
_columns, MAX(COUNTIFS(_date,_date)),
_databody, MAKEARRAY(_rows,_columns,LAMBDA(r,c, INDEX(FILTER(DROP(_data,,1),_date=INDEX(_udate,r),""),c))),
VSTACK(HSTACK(A1,B1&"_"&SEQUENCE(,_columns)),HSTACK(_udate,IFERROR(_databody,""))))
或者,使用REDUCE()
=LET(
_Date, A2:A21,
_Desk, B2:B21,
_Udate, UNIQUE(_Date),
_Headers, HSTACK(A1,B1&"_"&SEQUENCE(,MAX(COUNTIFS(A2:A21,A2:A21)))),
IFERROR(REDUCE(_Headers,_Udate,LAMBDA(r,c,VSTACK(r, HSTACK(c,TOROW(FILTER(B2:B21,A2:A21=c,"")))))),""))
这也可以使用Excel 365(Windows 或 Mac)Power Query
中提供的Windows Excel 2010+
要使用 Power Query,请按照以下步骤操作:
- 首先将源范围转换为表格并进行相应命名,在此示例中,我将其命名为
Table1
- Data接下来,从Tab --> Get & Transform Data--> Get Data--> From Other Sources-->打开一个空白查询Blank Query
- 上面的命令可以Power Query打开窗口,现在从HomeTab --> Advanced Editor--> 删除您看到的任何内容并粘贴以下内容M-Code,然后按Done
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
GroupByDate = Table.Group(Source, {"Date"}, {{"Custom", each Table.AddIndexColumn(_, "Index", 1, 1, Int64.Type),type table}}),
ExpandingData = Table.ExpandTableColumn(GroupByDate, "Custom", {"Desk", "Index"}, {"Desk", "Index"}),
Formatting = Table.TransformColumns(ExpandingData, {{"Index", each "Desk " & Text.From(_, "en-US"), type text}}),
PivotColumns = Table.Pivot(Table.TransformColumnTypes(Formatting, {{"Index", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(Formatting, {{"Index", type text}}, "en-US")[Index]), "Index", "Desk"),
DataTypeChanged = Table.TransformColumnTypes(PivotColumns,{{"Date", type date}, {"Desk 1", type text}, {"Desk 2", type text}, {"Desk 3", type text}, {"Desk 4", type text}, {"Desk 5", type text}, {"Desk 6", type text}, {"Desk 7", type text}})
in
DataTypeChanged
- 最后,将其导回Excel--> 单击Close & Load或Close & Load To--> 第一个单击的将创建一个New Sheet具有所需输出的,而后者将提示一个窗口询问您将结果放在何处。