Не уверен, что полностью понимаю ваш вопрос, но я думаю, что вы хотите включить это:
100 102
103 103
104 105
106 110
в это?
100 102 100, 101, 102
103 103 103
104 105 104, 105
106 110 106, 107, 108, 109, 110
Если так, следующий код достигнет этого:
Private Sub getListsOfNumbers()
Dim inputRange As String
Dim x As Long
Dim y As Long
'Get input range of data
inputRange = InputBox("Enter input range", "Start", "A1:A4")
'Clear output range (two column offset)
Range(inputRange).Offset(0, 2).ClearContents
With Range(inputRange)
'Loop through input range
For x = 1 To .Cells.Count
'Loop through difference between second column and first column
For y = 0 To (.Cells(x, 2) - .Cells(x, 1))
'Add value to output column
.Cells(x, 3) = .Cells(x, 3) & (.Cells(x, 1) + y) & ", "
Next y
'Tidy up output by removing trailling comma
.Cells(x, 3) = CStr(Left(.Cells(x, 3), Len(.Cells(x, 3)) - 2))
Next x
End With
End Sub
Если я неправильно прочитал ваш запрос, пожалуйста, дайте мне знать.
Edit: только что попробовал это по-настоящему и, с большими наборами данных, это будет так медленно, как можно было бы предсказать. Если ваши данные имеют 100/1000 строк, и / или разница между числами в столбцах A и B значительно больше, чем в примере, то вы, вероятно, захотите взглянуть на минимизацию задержки, отключив расчет и экранное обновление в начало процедуры и восстановление после завершения.
Справка Excel содержит синтаксис и примеры, которые помогут вам, если вам нужно это реализовать.