我有一组数字:
| A B
--------------
1| 100 102
2| 103 103
3| 104 105
4| 106 110
A列是起始编号,B列是结束编号。我们需要使用A和A列中的起始编号和结束编号创建一个列表(在单独的单元格上)。 B. 例如。基于第1行(A1和B1)的第1组数据,第1组数字将是:100,101,102,然后它将进入第2行,在102之后放103并继续进行第3行,扩展列表并显示104和105,然后到最后一行,它应该列出105,106,107,108,109,110。
我们应该能够标记列表编号的开头,以便我们知道每个列表的开头。即,应标记A列中列出的所有数字。
答案 0 :(得分:3)
我不确定我完全理解你的问题,但我想你想转此:
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
如果我误读了您的请求,请告诉我。
编辑:刚试过这个真实的,对于更大的数据集,它会像人们预测的那样慢。如果您的数据有100s / 1000s的行数,和/或A列和A列中数字之间的差异。 B显着大于示例,那么您可能希望通过在过程开始时关闭计算和screenUpdating并在完成后恢复来最小化延迟。
如果您需要实现此功能,Excel帮助会提供语法和示例来帮助您。