2017-06-20 8 views
0

が含まれている場合、私は次の形式重複セルA列は、データ、エクセルVBA

CardMinder 5 4.1   
Citrix Authentication Manager 6 5.1 7 8 5 
Citrix Receiver Inside 4.2 4.1 4.3 4.4 4 

に私はこれを取ると、それぞれに最初の列を複数回追加されますいくつかのコードを記述しようとしているされたデータを持っていますそれ以降の列。

CardMinder 5 
CardMinder 4.1 

私はいくつかの作業コードを持っていますが、それは、一度に1つの行に取り組んでいます、と私はそれを2回実行した場合、それはラインの間に複数の空の行を追加します。私は何が間違っているのか分かりません。

あなたのお手伝いがありがとうございます。私はあなただけで、その項目は次の列内のすべての番号の1列目からの項目のすべての組み合わせを持つ2つの列のリストを取得しようとしている理解して何から

Sub createVersions() 
Dim sheet As Worksheet 
Set sheet = ActiveSheet 


'Loop through columns in Excel sheet 
Dim LastRow As Long, LastCol As Integer, c As Integer, r As Long 

LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).row 
LastCol = ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column 


    For r = 1 To LastRow 
     If (LastCol > 2) Then 
     'Check column 3 to end for contents 
     For c = 3 To LastCol 
      rngParent = sheet.Cells(r, "A").Value 
      initChild = sheet.Cells(r, c).Value 

       If (initChild <> "") Then 
        'insert a row for extra column data 
        ActiveCell.EntireRow.Insert Shift:=xlShiftDown 
        sheet.Cells(r + 1, "A").Value = rngParent 
        sheet.Cells(r + 1, "B").Value = initChild 
       End If 
      Next c 
     End If 
    Next r 
End Sub 

答えて

2

。データセット内でこれを行うことは可能ですが、代わりに新しいシートに書き出す方がずっと簡単です。既存のコードにわずかな変更を加えるだけでそれが実現します。

Sub createVersions() 
Dim sheet As Worksheet 
Set sheet = ActiveSheet 

'Use a new sheet instead of messing with the base data 
Dim wsVersionList As Worksheet 
Set wsVersionList = ThisWorkbook.Sheets.Add 

'Loop through columns in Excel sheet 
Dim LastRow As Long, LastCol As Integer, c As Integer, r As Long 

LastRow = sheet.UsedRange.Rows(sheet.UsedRange.Rows.Count).Row 
LastCol = sheet.UsedRange.Columns(sheet.UsedRange.Columns.Count).Column 

Dim CurRow As Long 
CurRow = 1 

For r = 1 To LastRow 
    If (LastCol > 2) Then 
    'Check column 2 to end for contents 
     For c = 2 To LastCol 
     rngParent = sheet.Cells(r, "A").Value 
     initChild = sheet.Cells(r, c).Value 

      If (initChild <> "") Then 
       'Write the software and verison values into the scratch sheet 
       wsVersionList.Cells(CurRow, 1) = rngParent 
       wsVersionList.Cells(CurRow, 2) = initChild 
       'Increment to the next row 
       CurRow = CurRow + 1 
      End If 
     Next c 
     End If 
Next r 

End Sub 
+0

私はこのコードを試しましたが、何もしませんでした。 –

+0

オハイオ州私はちょうどwsVersionList = ActiveWorkbook.Sheets.Addにワークブックの呼び出しを変更しなければならなかった仕事を得た ありがとう –