【问题标题】:Showing Numbers inbetween two numbers on the same row在同一行显示两个数字之间的数字
【发布时间】: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 中?请更新您的问题和标签。

标签: vba excel


【解决方案1】:

假设这是 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

【讨论】:

  • 感谢大家的大力帮助。解决了我的问题。
【解决方案2】:

以下代码假定您没有标题,并且您在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

【讨论】:

    【解决方案3】:

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

    • A1 为起始编号,> 0
    • B1 是结束编号 (> A1)
    • 在单元格 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 函数中检查它。

    【讨论】:

      【解决方案4】:

      你可以用这个:

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2011-04-27
        • 2017-09-23
        • 1970-01-01
        • 2022-01-02
        • 2023-02-24
        相关资源
        最近更新 更多