【问题标题】:How to create new row of data in Excel automatically after splitting up data within a cell拆分单元格内的数据后如何在Excel中自动创建新数据行
【发布时间】:2017-04-05 12:44:59
【问题描述】:

我有这个包含 100K+ 记录的数据集。 并且在 1 行单元格中,它包含多个产品代码,以逗号 (,) 分隔。该单元格可能包含 1 - 5 个产品代码,以逗号分隔。

有一个唯一的 ID 号。标记到每个产品代码。 这是棘手的部分:

  1. 我需要拆分,所以每个单元格只包含 1 个项目
  2. 并在下面为每个产品代码创建一个新列
  3. 然后用其他行中包含的数据填充新列

意思是说

Row A     | Row B      | Row C   | Row D|
Unique ID | Product ID | Price   | MSRP |
1232      | 123,342,432| $5      | $10  |

我需要把这条记录转换成,

Row A     | Row B      | Row C   | Row D|
Unique ID | Product ID | Price   | MSRP |
1232      | 123        | $5      | $10  |
1232      | 342        | $5      | $10  |
1232      | 432        | $5      | $10  |

除了“文本到列”之外还有其他方法可以复制并粘贴记录中的其他数据吗? 我是 VBA 的新手,但我愿意尝试一下。

【问题讨论】:

  • 但我愿意试一试 - 请展示您尝试过的努力以及失败的地方。然后我们可以帮助您解决它们。 SO 不是“为我编写代码”服务。
  • 开始的提示:循环遍历所有行。使用 yourArray = split() 将它们拆分为一个数组,由分隔符 , 分隔。使用x = UBound(yourArray) 获取数组大小并复制实际行 x 次。然后将数组中的值写入实际和生成的行中。
  • @Scott,我现在正在做的是手动操作。第 1 步:将 B 列移动到列尾 第 2 步:用分隔符 ( , ) 按列拆分 第 3 步:复制从 D 列向前拆分的内容并传输到最后一行 第 4 步:拖动 A 列的信息- C 向下
  • @Peh,你在做 VBA 吗?我是 VBA 新手,所以我想弄清楚一切

标签: vba excel excel-2016


【解决方案1】:

我在添加了 5 + 2 个辅助 colmun 后通过 Google 表格完成了这项工作,只是为了找点乐子。它大量使用arrayformula()filter()split()join()regexreplace(),这些在 Excel 中不被原生支持或作为内置公式提供。

  1. 首先,通过=split(B2, ",")K:K 上为每条记录获取5 个pids。它将扩展到列O:O
  2. 通过=regexreplace(join("/", arrayformula(if(K2:O2<>"",$A2&","&K2:O2&","&$C2&","&$D2,""))), "/+$" , "")Q:Q 上为每个uids 获取一行所有记录。它用, 连接每一列,用/ 连接每条记录。 (您可以使用substitute() 等代替regexreplace()。)
  3. 现在加入Q2:Q 将提供所有记录。 R2 上只有一个公式 =transpose(split(join("/", filter(Q2:Q, Q2:Q<>"")), "/"))
  4. 现在将R:R, 上的每条记录通过=arrayformula(split(filter(R2:R, R2:R<>""), ",")) 上的一个公式F2 拆分。

样本表是here,下面是它的截图。

另一个显示带有公式的单元格的屏幕截图。

【讨论】:

  • 谢谢@Sangbok Lee,我之前尝试过你在 Excel 上所做的事情,如果我通过它就可以了。我需要的是从单元格 B 拆分创建的每个新 ID,我需要在下面创建一个新记录并将其替换为所有其他信息。不太确定你是否明白我的意思
  • DV 用于在请求的应用程序之外提供解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
相关资源
最近更新 更多