我有一张包含2列的Excel表格。
Column1包含如下值:
10969
11284个
1222
1227
12669个
12670个
12671个
12672
Column2包含逗号分隔值,如下所示:
601010,6010,40,4010
601010,6010,40,4010
40,4010,6010,601010
40,4010,6010,601010
40,4010,6010,601010
40,4010,6010,601010
40,4010,6010,601010
40,4010,6010,601010
我需要以不同的方式进行拆分,所以我没有使用column2逗号分隔,而是每列第2列需要1行 Column1应该为每个字符串使用相同的值,因此您将获得4行,其中column1中的编号相同,而column2中的编号不同
使用上述数据的示例
栏目1
10969
10969个
10969个
10969个
11284个
11284个
11284个
11284
列2
601010
6010
40个
4010
601010个
6010
40个
4010
每次都不是相同的值,并且有超过1000行,因此手动执行它是一项艰巨的任务。 据我所知,使用标准Excel"是不可能的,但也许是VBA?
我希望有人能指出我正确的方向。
此致 马丁
答案 0 :(得分:0)
这非常适合Power Query。将表格吸入Power Query,用逗号分隔符拆分Column2,选择除第一列之外的所有列,然后单击Unpivot。
主要处理问题之一是数字数据用逗号分隔,逗号也可以是大量的“千”分隔符。我试图复制你的数据样本,但有些行以文本形式返回,只有数字和逗号,其他行以指数格式返回非常非常大的数字。
因此,您可能需要在定义传入数据类型方面做一些工作。这可能是区域设置的问题。我的区域设置将逗号作为千分隔符。
您最好使用文件共享服务发布实际的Excel文件并在此处发布链接。
Power Query可以做到这一点 - 这是给定的。我们只需要理顺数据格式就可以解决这个问题。
答案 1 :(得分:-1)
回答HERE
我相信最好的解决方案是在突出显示/选择B列时运行以下VBA:
Sub columnsplit()
Dim c As Range
Dim splitv() As String
For Each c In Selection
splitv = Split(c.Value, ",")
If UBound(splitv) > 0 Then
c.EntireRow.Insert
c.Offset(-1, 0).Value = splitv(1)
c.Offset(-1, -1).Value = c.Offset(0, -1).Value
c.Value = splitv(0)
End If
Next c
End Sub
这应该会给你想要的结果。
然而,当我测试代码时,有时候不清楚代码是否已经运行,因为您需要记住Excel有一个很好的功能,即为您分隔数值添加逗号。
例如,您可能拥有123456,123456789这段代码将拆分它,但Excel可能会显示123,456和123,456,789作为结果。您需要修改格式,以便不会发生这种情况。