Took a guess on what you wanted. The code is not very efficient but works. I attached a work book with the macro ...
FunkyCopyDown.xlsm
Sub CleanData()
Dim r As Range
Dim i As Integer, j As Long
Set r = Range("A1")
'Starting at first row data loop through till column A cell is blank
For j = 0 To 65536 'loop to some arbitrary ridicously high number
If r.Offset(j, 0).Value = "" Then
Exit For 'no more rows to process
End If
i = 0
If r.Offset(j, 9).Value <> "" Then 'something in J
i = i + 1
InsertNewRow Range(r.Offset(j, 0).Address), 10, r.Offset(j, 9).Value, i
End If
If r.Offset(j, 10).Value <> "" Then 'something in K
i = i + 1
InsertNewRow Range(r.Offset(j, 0).Address), 11, r.Offset(j, 10).Value, i
End If
If r.Offset(j, 11).Value <> "" Then 'Something in L
i = i + 1
InsertNewRow Range(r.Offset(j, 0).Address), 12, r.Offset(j, 11).Value, i
End If
Next
End Sub
Sub InsertNewRow(therange As Range, col As String, val As String, rT As Integer)
'col will be the col number ie J = col 10, K=11, L=12
'val will be the associated val for the column
'rT will be the number of inserted rows
'Insert Row
therange.Offset(rT, 0).EntireRow.Insert
'Copy the value of cell A above it down
therange.Offset(rT, 0).Value = therange.Offset(0, 0).Value
'Copy the value j,k,or L to Cell I on the new row
therange.Offset(rT, 8).Value = val
'clear the value above where it came from
therange.Offset(0, col - 1).Value = ""
End Sub
Bookmarks