我知道类似的问题已经得到解答,但它们不适用于我。我不是excel的专家,所以我可以使用一些帮助。Excel 2010拆分单元格和重复行
我在列A-P中有数据,但在列I和M中有数据用分号分隔。我需要分割I和M两列,并与所有其他数据一起复制行。我会想象,我必须分裂我,并重复行,然后重复M,但我不知道。
对不起再问一个类似的问题。
我知道类似的问题已经得到解答,但它们不适用于我。我不是excel的专家,所以我可以使用一些帮助。Excel 2010拆分单元格和重复行
我在列A-P中有数据,但在列I和M中有数据用分号分隔。我需要分割I和M两列,并与所有其他数据一起复制行。我会想象,我必须分裂我,并重复行,然后重复M,但我不知道。
对不起再问一个类似的问题。
根据你的描述,这应该做你想做的。
Option Explicit
'Qual coluna possui os termos que repetem?
Const ANALYSIS_ROW1 As String = "I"
Const ANALYSIS_ROW2 As String = "M"
'Em qual linha começam os dados?
Const DATA_START_ROW As Long = 2
Sub ReplicateData()
Dim iRow As Long
Dim LastRow As Long
Dim ws As Worksheet
Dim iSplit() As String
Dim iIndex As Long
Dim iSize As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With ThisWorkbook
.Worksheets("Sheet1").Copy After:=.Worksheets("Sheet1")
Set ws = ActiveSheet
End With
With ws
LastRow = .Cells(.Rows.Count, ANALYSIS_ROW1).End(xlUp).Row
End With
For iRow = LastRow To DATA_START_ROW Step -1
iSplit = Split(ws.Cells(iRow, ANALYSIS_ROW1).Value2, ";")
iSplit = Split(ws.Cells(iRow, ANALYSIS_ROW2).Value2, ";")
iSize = UBound(iSplit) - LBound(iSplit) + 1
If iSize = 1 Then GoTo Continue
ws.Rows(iRow).Copy
ws.Rows(iRow).Resize(iSize - 1).Insert
For iIndex = LBound(iSplit) To UBound(iSplit)
ws.Cells(iRow, ANALYSIS_ROW1).Offset(iIndex).Value2 = iSplit(iIndex)
ws.Cells(iRow, ANALYSIS_ROW2).Offset(iIndex).Value2 = iSplit(iIndex)
Next iIndex
Continue:
Next iRow
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
我将:
插入后I
和使用公式下方(例如用于线2)两列:
集细胞J
这个公式:=LEFT(I2;SEARCH(";";I2)-1)
集使用此公式的K
中的单元格:=MID(I2;SEARCH(";";I2)+1;10000)
复制两个新列的内容和作为值特别粘贴在相同的位置。
最后删除列I
。
...,做同样的列M
你总是可以编写一个宏来迭代行,读取数值,具有Split()
功能将它们分割,写在新列的新值,但我不认为这是值得的。
这工作完美,非常感谢你 – Matt