У меня есть лист Excel, где два столбца (скажем, J и K) среди данных на листе 1 являются следующими:

J ------------ K

1 ----------- 25

26 --------- 50

101 ------ 150

Какие есть диапазоны. У меня есть другой лист, где у меня есть столбец (скажем, I), который я хочу обновить, чтобы иметь значения, указанные в диапазоне; то есть значения столбца I должны быть 1,2,3,...25,26,27,...50,101,102,103,...150 (по вертикали). Обратите внимание, что диапазоны в JK не всегда непрерывны (например, промежуток между 50 и 101) и не всегда в правильном порядке.

Я пытаюсь найти какой-то автоматизированный способ для достижения этой цели, вместо того, чтобы вручную копировать начальное значение диапазона (из I), а затем последовательно перемещать вниз до конечного значения (из J) для каждого отдельного значения I и J , которое очень большой набор данных. Есть ли способ помочь сделать это?

Примечание: я использую Microsoft Excel 2013, но решение для Excel 2010 или 2007 более чем приветствуется ...

1 ответ1

1

Этот макрос должен сделать это:

Option Explicit

Sub FillSequence()
    Dim SrcSheet As Worksheet
    Set SrcSheet = Sheets("Sheet1")

    Dim SrcCol As Long
    Dim SrcRow As Long

    SrcCol = 10
    SrcRow = 1

    While Not IsEmpty(SrcSheet.Cells(SrcRow, SrcCol))
        Dim StartNumber As Long
        Dim EndNumber As Long

        StartNumber = SrcSheet.Cells(SrcRow, SrcCol)
        EndNumber = SrcSheet.Cells(SrcRow, SrcCol + 1)

        If EndNumber < StartNumber Then
            MsgBox "Input data wrong."
            Exit Sub
        End If

        Dim Number As Long

        For Number = StartNumber To EndNumber
            ActiveCell = Number
            ActiveCell.Offset(1, 0).Select ' This part could be optimized so
                                           ' that the selection does not have
                                           ' to be updated each time - but 
                                           ' this should suffice for the 
                                           ' moment. Just let me know if the
                                           ' performance is too bad for
                                           ' practical use.
        Next

        SrcRow = SrcRow + 1
    Wend

End Sub

Предполагается, что ваши номера находятся на листе 1 в столбцах J и K (или 10 и 11) и начинаются в первом ряду. Просто запустите его, выбрав первую ячейку, где должна начинаться последовательность. НТН.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .