[英]Splitting multiple values in multiple column into rows in Excel.
The excel columns i am having, where i need the first element in Col B to be mapped against first element in Col C and so on.我拥有的 excel 列,我需要将 Col B 中的第一个元素映射到 Col C 中的第一个元素,依此类推。
Column A Column B Column C
Electrical Lighting,Thunder Bad,Good
Mechanical Nut, Bolt Bad,Good
The result I want:我想要的结果:
Column A Column B Column C
Electrical Lighting Bad
Electrical Thunder Good
Mechanical Nut Bad
Mechanical Bolt Good
If all these values are in Sheet1, simply make sure that you have a Sheet2 for your results, then this code will do what you expect:如果所有这些值都在 Sheet1 中,只需确保您的结果有一个 Sheet2,那么此代码将执行您期望的操作:
EDIT:编辑:
It will now work for single values too:它现在也适用于单个值:
Sub foo()
Dim LPosition As Integer 'declare variables
Dim LPosition2 As Integer
Dim LastRow As Long
Dim NextEmptyRow As Long
Dim strName As String
Dim TempArray1() As String
Dim TempArray2() As String
LastRow = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row 'find the last row on column A on Sheet1
For i = 2 To LastRow 'loop from row 2 to the last row
strName = Sheet1.Cells(i, 1).Value 'get the value of column A into a variable
LPosition = InStr(Sheet1.Cells(i, 2).Value, ",") ' check if column B has a comma in it
If LPosition > 0 Then
TempArray1 = Split(Sheet1.Cells(i, 2).Value, ",") 'if comma found put values into an array
Else
TempArray1(0) = Sheet1.Cells(i, 2).Value
End If
LPosition2 = InStr(Sheet1.Cells(i, 3).Value, ",") 'check for a comma on Column C
If LPosition2 > 0 Then
TempArray2 = Split(Sheet1.Cells(i, 3).Value, ",") 'place values into a separate Array
Else
TempArray2(0) = Sheet1.Cells(i, 3).Value
End If
For x = 0 To UBound(TempArray1) 'loop through the array
NextEmptyRow = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row + 1 'check the next free row on Sheet2
Sheet2.Cells(NextEmptyRow, 1).Value = Trim(strName) 'place appropriate values
Sheet2.Cells(NextEmptyRow, 2).Value = Trim(TempArray1(x))
Sheet2.Cells(NextEmptyRow, 3).Value = Trim(TempArray2(x))
Next x
ReDim TempArray1(0)
ReDim TempArray2(0)
Next i
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.