Прежде всего, как предложило urdearboy , я бы немного подумал об изменении формата вывода и использовании сводной таблицы. Однако, если это не вариант, вы можете попробовать for...next
loop.
Код ниже будет зацикливать ваш пример и собирать результаты так, как вы хотите, но я позволил себе поместить результаты в отдельные столбцы, так как это было бы гораздо более универсально для будущего использования.
Sub Check_rating()
Dim x As Long
Dim ws As Worksheet
Dim counterA As Long
Dim counterB As Long
Dim counterC As Long
Set ws = Worksheets("Sheet1")
For x = 2 To Range("Table1").Rows.Count + 1
If ws.Cells(x, "B").Value > 0 Then
counterA = counterA + 1
ws.Cells(counterA, "F").Value = ws.Cells(x, "A").Value
ws.Cells(counterA, "G").Value = ws.Cells(x, "B").Value
End If
If ws.Cells(x, "C").Value > 0 Then
counterB = counterB + 1
ws.Cells(counterB, "H").Value = ws.Cells(x, "A").Value
ws.Cells(counterB, "I").Value = ws.Cells(x, "C").Value
End If
If ws.Cells(x, "D").Value > 0 Then
counterC = counterC + 1
ws.Cells(counterC, "J").Value = ws.Cells(x, "A").Value
ws.Cells(counterC, "K").Value = ws.Cells(x, "D").Value
End If
Next x
End Sub