Как создать список из начального числа и конечного числа

У меня есть набор цифр:

 |  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.

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


person Community    schedule 11.03.2009    source источник


Ответы (1)


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

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

Если я неправильно прочитал ваш запрос, дайте мне знать.

Изменить: просто попробовал это по-настоящему, и с большими наборами данных это будет так медленно, как можно было бы предсказать. Если ваши данные содержат 100/1000 строк и / или разница между числами в столбцах A и B значительно больше, чем в примере, то вы, вероятно, захотите минимизировать задержку, отключив вычисления и screenUpdating в начало процедуры и восстановление после завершения.

В справке Excel есть синтаксис и примеры, которые помогут вам, если вам нужно это реализовать.

person Lunatik    schedule 12.03.2009