我有一系列单元格,如下所示:
Col A | Col B | Col C | Col D
apple, orange | red, green | 5 | 10
pear, banana | blue | 20 | 40
我想得到一个看起来像这样的结果:
Col A
apple-red-5-10
apple-green-5-10
orange-red-5-10
orange-green-5-10
pear-blue-20-40
banana-blue-20-40
我在多列中连接每一行中的值,但如果一个单元格包含一个逗号分隔的项目列表,我需要将每个条目视为它们属于包含其他列数据的新行。
我首先引用属于我有兴趣连接的四列的范围。
Dim cellRef1 As Range
Set cellRef1 = ThisWorkbook.Worksheets(1).Range("I2:I60")
Dim cellRef2 As Range
Set cellRef2 = ThisWorkbook.Worksheets(1).Range("E2:E60")
Dim cellRef3 As Range
Set cellRef3 = ThisWorkbook.Worksheets(1).Range("D2:D60")
Dim cellRef4 As Range
Set cellRef4 = ThisWorkbook.Worksheets(1).Range("H2:H60")
然后对于具有逗号分隔条目(第二个和第四个)的列,我创建一个数组来存储每个值,例如:
Dim Array_Two As Variant
Array_Two = cellRef2.Value
所以我会有一个数组
("apple, orange", "pear,banana")
我想遍历每个数组以创建一个子数组,我想在其中用逗号分隔条目并将它们存储在一个新数组中。
例如我想:
Array_Two_A = ("apple", "orange")
Array_Two_B = ("pear", "banana)
所以我以后可以访问每个条目并将它们连接起来。
我想这样做:
Dim Array_Two_New() As String
For x = LBound(Array_Two) To UBound(Array_Two)
Array_Two_New = Split(Array_Two(x, 1), ",")
Next x
哪种有效,但问题是我不知道如何动态创建一个以后可以访问的数组。
例如因为我的代码将继续用 Array_Two(x,1) 中的字符串拆分为的第一个值覆盖 Array_Two_New 数组。
我想我可以在我的代码中添加 Array_Two_New(x) 以便得到如下结果:
Array_Two_New(1) = ("apple", "orange")
Array_Two_New(2) = ("pear", "banana")
我以后可以访问我想要的值,例如
Array_Two_New(1)(1) = "apple"
Array_Two_New(1)(2) = "orange"
Array_Two_New(2)(1) = "pear" // etc.
我想我在这里混淆了语法。
我想我需要使用一个对象,但我对它们不太熟悉。
我找到了这些文章,但我无法理解解释。
VBA: Split cell values into multiple rows and keep other data
Splitting an array into multiple rows
最佳答案
根据您的示例,这有效。
如果您有大量数据,您可能需要考虑将数据写入数组,并且只有在完成连接后才回读,因为这会大大加快速度。
Sub x()
Dim vA As Variant, vB As Variant, i As Long, j As Long, r As Range
For Each r In Range("A1:A10")
vA = Split(r, ",")
vB = Split(r.Offset(, 1), ",")
For i = LBound(vA) To UBound(vA)
For j = LBound(vB) To UBound(vB)
Range("F" & Rows.Count).End(xlUp)(2) = Trim(vA(i)) & "-" & Trim(vB(j)) & "-" & r.Offset(, 2).Value & "-" & r.Offset(, 3).Value
Next j
Next i
Next r
End Sub
![enter image description here](https://i.sstatic.net/gx0JN.png)
关于arrays - 如何在保留其他单元格数据的同时将单元格值拆分为多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58416861/