Вот метод, который разделит данные, как указано. Переменные используются в коде для установки диапазона, поэтому могут быть изменены при необходимости
Sub SplitData()
Dim ws As Worksheet
Dim rng As Range
Dim data As Variant
Dim dataSplit() As Variant
Dim i As Long, j As Long, k As Long, n As Long
Dim col As Long, cols As Long
Dim rws() As String
Dim addr As String
Dim rw As Long
cols = 10 ' Column J
col = 4 'column D
'Assuming the active shsets contains the data
Set ws = ActiveSheet
' Assuming data starts in A1 and column A is contiguous
Set rng = ws.Range(ws.Cells(1, cols), ws.[A1].End(xlDown))
' Get data into an array
data = rng
j = 1
' Count number of £ in data
addr = rng.Columns(col).Address
rw = Evaluate("=SUM(LEN(" & addr & ")-LEN(SUBSTITUTE(" & addr & ",""£"","""")))")
' Size destination array
ReDim dataSplit(1 To UBound(data, 1) + rw, 1 To cols)
For i = 1 To UBound(data, 1)
' if contains £ then split it
If InStr(data(i, col), "£") > 0 Then
' copy several rows into destination array
rws = Split(data(i, col), "£")
For n = 0 To UBound(rws)
For k = 1 To cols
dataSplit(j + n, k) = data(i, k)
Next
dataSplit(j + n, col) = Trim(rws(n))
Next
j = j + UBound(rws) + 1
Else
' copy one row into destination array
For k = 1 To cols
dataSplit(j, k) = data(i, k)
Next
j = j + 1
End If
Next
' put resut back into sheet
rng.Resize(UBound(dataSplit, 1), cols) = dataSplit
End Sub