【发布时间】:2018-06-10 21:29:11
【问题描述】:
我想要实现的是在同一行的 A 列和 B 列中有 2 个整数。我想填充 C 列中的行以显示两个数字之间的整数增量。
即
A B C D E F G H I J K L
1 10 1 2 3 4 5 6 7 8 9 10
任何帮助将不胜感激。
【问题讨论】:
-
在 Excel 中?请更新您的问题和标签。
我想要实现的是在同一行的 A 列和 B 列中有 2 个整数。我想填充 C 列中的行以显示两个数字之间的整数增量。
即
A B C D E F G H I J K L
1 10 1 2 3 4 5 6 7 8 9 10
任何帮助将不胜感激。
【问题讨论】:
假设这是 Excel,您可以打开 VBE 编辑器来使用 VBA
这是一个您可以通过按钮运行或调用的宏
查看代码中的 cmets 以了解它对 Dataseries 填充函数的作用
Sub FillData()
Dim intStopAt As Integer
' Set to cell indicated low end of range
Cells(1, 1).Select
' Fill in "Start At" Number
ActiveCell.Offset(0, 2).Value = ActiveCell.Value
' Retrieve and use stop number to fill in series
intStopAt = ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(0, 2).DataSeries Rowcol:=xlRows, Type:=xlLinear, Date:=xlDay, Step:=1, Stop:=intStopAt
End Sub
【讨论】:
以下代码假定您没有标题,并且您在A1 中的值始终为1,而您在B1 中的值是您要计数的数字。
这可以修改为更具动态性,但是按照您的问题,这应该适合您。
1) 检查计数到 (CountTo)
2) 为1 to CountTo 运行循环并自动填充列标题
运行:打开 VBE 并将此代码粘贴到您希望运行它的工作表上。
Sub Counter()
Dim CountTo As Integer
CountTo = Range("B1").Value
For i = 1 To CountTo
Cells(1, i + 2) = i
Next i
End Sub
【讨论】:
这可以在没有 VBA 的情况下完成,最初可能不像 @dbmitch 的答案那样简洁,因为公式必须达到最大可能数。
=A1
=IF(AND(C1<$B1,C1>=$A1),C1+1,""),然后
根据需要向右拖动/填充。我已经制定了代码,以便您现在可以选择填充的行(A 到任何地方)并向下填充。
简单解释:
AND 公式检查最左边的单元格(对于 D1,这是 C1,对于 E1,这是 D1 等)是否小于结束编号且大于开始编号。可以做进一步检查,我在上面的解决方案中假设数字是正数并且增加。
+1 或-1。blank 作为另一个答案会下降。在这种情况下,您可以使用另一个符号(例如 x)并在 AND 函数中检查它。【讨论】:
你可以用这个:
Sub main()
Dim cell As Range
With Range("A1", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeConstants, xlNumbers) ' reference column A cells from row 1 down to last not empty one with a "constant" (i.e. not a formula result) numeric content
For Each cell In .Cells 'loop through referenced range
cell.Offset(, 2).Resize(, cell.Offset(, 1).Value - cell.Value + 1).FormulaR1C1 = "=COLUMN()-COLUMN(C3)+RC1" 'write proper formula in current cell adjacent cells
Next
.CurrentRegion.Value = .CurrentRegion.Value ' get rid of formulas and leave values only
End With
End Sub
【讨论】: