将单元格拆分为行,但要考虑原始行中的数据

将单元格拆分为行,但要考虑原始行中的数据

我有一张 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"

答案2

1] 在 中H2,将公式抄下来:

=TRIM(MID(SUBSTITUTE(","&TEXTJOIN(",",,C$2:C$4),",",REPT(" ",99)),ROW(A1)*99,99))

2] 在 中F2,将公式向右复制到G2&I2并将所有内容向下复制:

=IF($H2="","",LOOKUP(1,-SEARCH($H2,$C$2:$C$4),A$2:A$4)) 

在此处输入图片描述

相关内容