考虑下表,其中提到了 3 个人的办公室和居住城市。
输入表
。
我需要创建一个如下所示的二维表。
输出表
。
我尝试使用数据透视表,但它仅显示计数或非重复计数,而不显示单元格中的确切值。
建议我使用公式或 VB 代码来执行此操作,因为我非常需要此操作,如果我有一个结构,我可以为每个 Excel 文件复制此操作并节省大量时间。我的 Excel 有数百个单元格,手动操作会变得很复杂。
有很多方法可以做到这一点,也许为了可读性和简单性,可以使用
PIVOTBY()
使用 MS365 Beta 版本启用。
• 单元格中使用的公式 E1
=PIVOTBY(A2:A7,C2:C7,B2:B7,ARRAYTOTEXT,,0,,0)
或者,使用名为
LAMBDA()
的 MAKEARRAY()
辅助函数来创建所需的数据结构。
=LET(
_Names, A2:A7,
_Location, B2:B7,
_LDetails, C2:C7,
_uniqueNames, UNIQUE(_Names),
_uniqueLDetails, TOROW(UNIQUE(_LDetails)),
_rows, ROWS(_uniqueNames),
_columns, COLUMNS(_uniqueLDetails),
_databody, MAKEARRAY(_rows,_columns,LAMBDA(r,c,IFERROR(FILTER(_Location,(INDEX(_uniqueNames,r)=_Names)*(INDEX(_uniqueLDetails,c)=_LDetails),""),""))),
_headers, HSTACK("Names",_uniqueLDetails),
VSTACK(_headers,HSTACK(_uniqueNames,_databody)))
Power Query
,提供 Windows Excel 2010+
和 Excel 365 (Windows or Mac)
*。
要使用 Power Query,请按照以下步骤操作:
Table1
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Pivoted Column" = Table.Pivot(Source, List.Distinct(Source[#"Location Details"]), "Location Details", "Location")
in
#"Pivoted Column"