我有一张 Excel 表格,其开始看起来像这样:
项目 | 公司 | 作者 | 开始日期 |
---|---|---|---|
A123 | A公司 | A. Brown 先生、C. Dalek 女士、D. Echo 先生 | 2009 年 9 月 9 日 |
B234 | B公司 | B. Crayon 女士 | 1970 年 1 月 1 日 |
C567 | 公司 C | 莫斯科人民共和国,莫斯科人民共和国 | 2003 年 2 月 3 日 |
使用文本到列我可以得到这个:
项目 | 公司 | 作者 1 | 作者 2 | 作者 3 | 开始日期 |
---|---|---|---|---|---|
A123 | A公司 | 布朗先生 | C. Dalek 女士 | D. Echo 先生 | 2009 年 9 月 9 日 |
B234 | B公司 | B. Crayon 女士 | 1970 年 1 月 1 日 | ||
C567 | 公司 C | 米斯特尔·多朱尼 | 一天一天 | 2003 年 2 月 3 日 |
我想将表格变换一下,让它看起来更像这样:
项目 | 公司 | 作者 | 开始日期 |
---|---|---|---|
A123 | A公司 | 布朗先生 | 2009 年 9 月 9 日 |
A123 | A公司 | C. Dalek 女士 | 2009 年 9 月 9 日 |
A123 | A公司 | D. Echo 先生 | 2009 年 9 月 9 日 |
B234 | B公司 | B. Crayon 女士 | 1970 年 1 月 1 日 |
C567 | 公司 C | 米斯特尔·多朱尼 | 2003 年 2 月 3 日 |
C567 | 公司 C | 一天一天 | 2003 年 2 月 3 日 |
我最接近的方法是使用数据透视表,但最终会嵌套我不想要的行。此外还有很多空单元格。列表有多种语言,希望这不是什么大问题,但我认为值得一提。
答案1
我建议使用 PowerQuery 来做这样的事情:
- 在中选择您的数据
A1:D4
,或者如果您有一个像上图这样的表格,只需单击表格中的任意单元格; - 然后从数据功能区中获取和转换数据部分单击从表/范围(如果需要,确认您有标题);
- PowerQuery 将打开。选择“作者”列;
- 在“开始”选项卡上,点击“拆分列”,选择按分隔符拆分;
- 在打开的窗格上,选择用逗号拆分,然后转到“高级选项”,在那里您可以选择拆分为行。
- 单击“确定”并关闭 PowerQuery(如果系统询问,请保存您的进度);
如果需要的话,这是 M 代码:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Project", type text}, {"Company", type text}, {"Authors", type text}, {"Start Date", type datetime}}),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"Authors", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Authors"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Authors", type text}})
in
#"Changed Type1"