我有一张 Excel 表,其中 sheet1 中的数据有两列(比如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
这个宏应该可以做到这一点:
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。