2017-07-26 77 views
0

我知道類似的問題已經得到解答,但它們不適用於我。我不是excel的專家,所以我可以使用一些幫助。Excel 2010拆分單元格和重複行

我在列A-P中有數據,但在列I和M中有數據用分號分隔。我需要分割I和M兩列,並與所有其他數據一起復制行。我會想象,我必須分裂我,並重復行,然後重複M,但我不知道。

對不起再問一個類似的問題。

回答

0

根據你的描述,這應該做你想做的。

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 
+0

這工作完美,非常感謝你 – Matt

0

我將:

  1. 插入後I和使用公式下方(例如用於線2)兩列:

  2. 集細胞J這個公式:=LEFT(I2;SEARCH(";";I2)-1)

  3. 集使用此公式的K中的單元格:=MID(I2;SEARCH(";";I2)+1;10000)

  4. 複製兩個新列的內容和作爲值特別粘貼在相同的位置。

  5. 最後刪除列I

...,做同樣的列M

你總是可以編寫一個宏來迭代行,讀取數值,具有Split()功能將它們分割,寫在新列的新值,但我不認爲這是值得的。