如何将一个单元格中的数据转换为多行,同时保持其余列不变?

如何将一个单元格中的数据转换为多行,同时保持其余列不变?

我想将一个单元格中的单词拆分成多行,同时保持其他单元格中的信息不变。基本上就是将我的数据变成长格式。

使用 Excel 可以实现这个功能吗?

在示例图片中,我想将主题列拆分为单独的行,但保留国家/地区列中的正确信息。我该怎么做?

例子 :

在此处输入图片描述

答案1

以下是在示例表上执行此操作的方法:

  • 在示例表中选择数据 (A2:B8)
  • Ctrl+T将选择内容转换为表格
  • 单击窗格数据,然后获取数据 > 从表/范围打开 Power Query 编辑器
  • 单击标题选择第二列
  • 单击窗格中的“变换”,然后拆分列 > 按分隔符
  • 在对话框中,分隔符应该已被选择为;
  • 点击高级选项 > 拆分成 > 行
  • 单击“确定”并预览更改
  • 单击“关闭并加载”以使用新数据创建新的工作表。
  • 除了最后一步之外,您还可以通过单击标题(用于第二个标题)来选择新数据,然后使用+Shift复制数据 。CtrlC

答案2

您也可以使用公式来执行此操作,只要要拆分的主题数量始终相同即可。在新工作表中,我们将展开源数据:

Sheet2!A1 中的标题(并复制到 B1):

=Sheet1!A1

在 A2 列的其余部分及以后:

=INDEX(Sheet1!$A$1:$A$10000, INT((ROW()-2)/3)+1)

在 B2 及以上级别:

=LET(theme, INDEX(Sheet1!$B$2:$B$10000, INT((ROW()-2)/3)+1), sep_1, FIND("; ", theme), sep_2, FIND("; ", theme, sep_1+1), sep_3, LEN(theme), CHOOSE(MOD(ROW()-2,3)+1, LEFT(theme, sep_1-1), MID(theme, sep_1+1, sep_2-sep_1-1), RIGHT(theme, sep_3-sep_2)))

如果您没有 LET(即 Excel 365),您可能必须将每个 LET 变量放在其自己的辅助列中,然后隐藏辅助列。

此公式的基本工作原理是使用 INT((ROW()-2)/3)+1 将行号 {2, 3, 4, 5, 6, 7...} 映射到 {1, 1, 1, 2, 2, 2...},以引用源行号国家和主题。然后使用 MOD(...) 将行 {2, 3, 4, 5, 6, 7...} 映射到 {1, 2, 3, 1, 2, 3...},以指示要提取列表中的哪个主题,即我们使用 CHOOSE(映射行 1、2 或 3第一篇文字第二篇文本第三篇文本)。sep_# LET 变量帮助定位主题文本中的每个“;”分隔符。

相关内容