显示同一行中两个数字之间的数字

时间:2018-06-10 21:29:12

标签: excel vba excel-vba

我想要实现的是A列和A列中有2个整数。 B在同一排。我想填充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

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:0)

假设这是Excel,您可以打开VBE编辑器以使用VBA

这是一个可以运行或通过按钮调用的宏

请参阅代码中的注释,以了解它对数据库填充功能的作用

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

答案 1 :(得分:0)

以下代码假设您没有标题,A1中的值始终为1B1中的值是您要计算的数字。

这可以修改为更具动态性,但按原样提问,这应该对你有用。

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

答案 2 :(得分:0)

这可以在没有VBA的情况下完成,最初可能不像@ dbmitch的答案那样简洁,因为公式必须达到最大可能的数量。

  • A1是起始编号,> 0
  • B1是结束号(> A1)
  • 在Cell C1中输入=A1
  • 在单元格D1中输入=IF(AND(C1<$B1,C1>=$A1),C1+1,"")然后 根据需要向右拖动/填充。

我已经制定了代码,以便您现在可以选择已填充的行(A到任何地方)并填写。

一个简单的解释:

  • C1设置列表的开头
  • D1以后的AND公式检查左边的单元格(对于D1这是C1,对于E1,这是D1等)是否小于结束编号并且大于起始编号。
  • 如果条件为真,则使用左侧单元格值+ 1作为结果。
  • 如果条件为假,请插入空白。

可以进一步检查,我在上面的解决方案中假设数字是正数并且正在增加。

  • 您可以使用辅助列来指示是否应该增加或减少(例如+1-1
  • 如果数字从-ve到+ ve,则使用blank作为另一个答案。在这种情况下,您可以使用其他符号(例如x)并在AND函数中检查该符号。

enter image description here

答案 3 :(得分:0)

你可以用这个:

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