我一直试图将Excel工作表的信息分成几部分,它看起来像这样:
的数据
我需要它看起来像这样:
的
我使用了这个JavaScript脚本,但它不起作用,因为它复制了它在D列(t)中找到的第一个值,并在单元格中找到了许多对象(第一行的情况下是4个):
Sub SplitPartsRows()
Dim rng As Range
Dim r As Long
Dim arrParts() As String
Dim partNum As Long
'## In my example i use columns A:E, and column D contains the Corresponding Parts ##
Set rng = Range("A1:AA16000") '## Modify as needed ##'
r = 2
Do While r <= rng.Rows.Count
'## Split the value in column D (4) by commas, store in array ##
arrParts = Split(rng(r, 4).Value, ",")
'## If there's more than one item in the array, add new lines ##
If UBound(arrParts) >= 1 Then '## corrected this logic for base 0 array
rng(r, 4).Value = arrParts(0)
'## Iterate over the items in the array ##
For partNum = 1 To UBound(arrParts)
'## Insert a new row ##'
'## increment the row counter variable ##
r = r + 1
rng.Rows(r).Insert Shift:=xlDown
'## Copy the row above ##'
rng.Rows(r).Value = rng.Rows(r - 1).Value
'## update the part number in the new row ##'
rng(r, 4).Value = Trim(arrParts(partNum))
'## resize our range variable as needed ##
Set rng = rng.Resize(rng.Rows.Count + 1, rng.Columns.Count)
Next
End If
'## increment the row counter variable ##
r = r + 1
Loop
End Sub
字符串
结果会是这样的:
的
我不一定需要使用JavaScript我接受任何可能的答案,即使在谷歌应用程序脚本
5条答案
按热度按时间zaq34kh61#
我接受任何可能的答案,即使在谷歌应用程序脚本
你所问的问题可以用一个普通的电子表格公式来完成。Ike和Mayukh Bhattacharya的答案展示了如何在Microsoft Excel 365中完成。要在Google Sheets中完成同样的操作,请使用以下模式:
字符串
参见How to unpivot data that has multiple column groups in Google Sheets?
8tntrjer2#
使用data. from table/range.将数据带入powerquery。
右键单击最右侧的列,然后选择拆分列...按拆分...
选择逗号作为逗号,并在高级选项中选择行
x1c 0d1x的数据
文件。。关闭并加载。返回到excel
vulvrdjw3#
如果你有Excel 365,你可以使用这个公式:
字符串
TOCOL(TEXTSPLIT
将列D值拆分为行-然后将行与相应的标题数据堆叠在一起。x1c 0d1x的数据
wb1gzix04#
假设没有**
Excel Constraints
**作为每个标签张贴,那么可以使用以下公式.的数据
·单元格A5中使用的公式
字符串
基本上上面的公式是:
型
和更长的方法,但不使用任何LAMBDA()辅助函数:
的
·单元格A5中使用的公式
型
thtygnil5#
请测试下一个数组解决方案。它使用数组,并且主要在内存中工作,即使要处理的范围很大,也应该非常快。它处理各个工作表中的行(基于A:A列中的最后一个单元格)以及您在加载
arr
时选择的列数。处理后的数组内容被放入目标工作表中。以下代码在下一个工作表中返回(在活动工作表之后),因此它应该是空的。但是您可以选择任何其他工作表来执行它:字符串
请在测试后发送一些反馈。如果有些东西不够清楚,即使我尝试注解所有代码行,也不要犹豫要求澄清。