如何根据另一张表中给出的范围填充 Excel 中的序列?

如何根据另一张表中给出的范围填充 Excel 中的序列?

我有一张 Excel 表,其中 sheet1 中的数据有两列(比如JK)如下:

杰 ------------ 凯

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

26 --------- 50

101 ------ 150

这是一些范围。我有另一张表,其中有列(假设I),我想更新它以使其具有范围指示的值;即列值为I1,2,3,...25,26,27,...50,101,102,103,...150垂直)。请注意,JK 中的范围并不总是连续的(例如50和之间的间隙101),也不总是按正确的顺序排列。

我正在尝试寻找一些自动化的方法来实现这一点,而不是手动复制范围的起始值(从),然后按顺序向下拖动直到每个个体和值的I结束值(从) ,这是一组非常庞大的数据。有什么方法可以帮助做到这一点吗?JIJ

注意:我正在使用 Microsoft Excel 2013,但非常欢迎针对 Excel 2010 或 2007 的解决方案...

答案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

它假设您的数字位于 Sheet1 的 J 和 K 列(或 10 和 11)并从第一行开始。只需在选择序列应开始的第一个单元格的情况下运行它即可。HTH。

相关内容