excel 如何将一列拆分为多行,同时复制其余列?

wbrvyc0a  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(328)

我有很多行的excel文件,其中一列有许多逗号分隔的值。
| 型号|供应商|序列号|
| - ------|- ------|- ------|
| S20|美国广播公司|小行星1122334455、5544332211|
| S21|XYZ|9988776655、5566778899、2244668800|
我想把第3列分成几行,这很容易做到,但是我还想复制第1列和第2列,所以应该是这样的:
| 型号|供应商|序列号|
| - ------|- ------|- ------|
| S20|美国广播公司|小行星112233445|
| S20|美国广播公司|小行星554433221|
| S21|XYZ|小九八八七七六六五五|
| S21|XYZ|小行星556677|
| S21|XYZ|二二四四六六八八零零|
我所做的是首先分隔列,然后用新创建的列手动复制其余的列。有数千条记录,所以这需要很长的时间。
任何帮助都将不胜感激。谢谢!

mlnl4t2r

mlnl4t2r1#

使用Microsoft-365最新版本,以下公式应起作用。

=DROP(REDUCE(0,REDUCE(0,C2:C3,LAMBDA(a,x,VSTACK(a,CONCAT(CHOOSEROWS(A2:B3,ROW(x)-1)&"|")&TEXTSPLIT(x,,",")))),LAMBDA(p,q,VSTACK(p,TEXTSPLIT(q,"|")))),2)

mftmpeh8

mftmpeh82#

使用PowerQuery,这将是相当快速和简单的:

  • 选择您的数据(或数据中的单个单元格),在本例中为A1:C3;
  • 将此数据导入PowerQuery AKA Get&Transform(包括头);
  • 选择“序列号”列;
  • 在“主页”下点击“分栏”,选择“按分隔符”;
  • 使用逗号作为分隔符,并在高级下勾选“行”;
  • 点击“确定”并关闭PQ。您的结果在那里。

M代码:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Model", type text}, {"Vendor", type text}, {"Serial Number", type text}}),
    #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"Serial Number", Splitter.SplitTextByDelimiter("#(#)(lf)", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Serial Number"),
    #"Split Column by Delimiter1" = Table.ExpandListColumn(Table.TransformColumns(#"Split Column by Delimiter", {{"Serial Number", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Serial Number"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"Serial Number", Int64.Type}})
in
    #"Changed Type1"

如果公式是必须的,尝试:

E1中的公式:

=LET(x,A2:C3,REDUCE(A1:C1,ROW(x)-1,LAMBDA(a,b,VSTACK(a,LET(y,INDEX(x,b,{1,2}),IFERROR(HSTACK(y,TEXTSPLIT(INDEX(x,b,3),,", ")),y))))))

相关问题