Как создать список из начального номера и конечного номера - PullRequest
1 голос
/ 11 марта 2009

У меня есть набор чисел:

 |  A     B
--------------
1| 100   102
2| 103   103
3| 104   105
4| 106   110

Столбец A - это начальный номер, а столбец B - это конечный номер. Нам нужно создать список (в отдельной ячейке) номеров, используя начальный номер и конечный номер, используя столбцы A и B. Например. на основе 1-го набора данных из строки 1 (A1 и B1) 1-й набор чисел будет: 100 101 102, затем он перейдет к строке 2, поместит 103 после 102 и перейдет к строке 3, расширит список и отобразит 104 и 105, затем в последнюю строку, где он должен перечислить 105,106,107,108,109,110.

Мы должны иметь возможность отметить начало номера для списка, чтобы мы знали начало каждого списка. то есть все числа, перечисленные в столбце А., должны быть помечены.

1 Ответ

3 голосов
/ 12 марта 2009

Не уверен, что полностью понимаю ваш вопрос, но я думаю, что вы хотите включить это:

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 содержит синтаксис и примеры, которые помогут вам, если вам нужно это реализовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...