Excel中的Excel自动递增十进制值,直到列中达到最大值

时间:2015-03-07 13:19:27

标签: excel decimal increment

我正在寻找一个自动递增列中十进制值的解决方案,直到每列都达到最大值。

我设法为A列制作公式{= SUM(B3 + 0,1)}

通过将单元格1拖动到我需要的最大值,但这不是很有效,因为每列具有不同的最大值。

如下图所示:

Column A maximum required value 200
Column B maximum required value 400
Column C maximum required value 800

     |   A   |   B   |   C   | 
---------------------------------
 #1  |  1,1  |  2,1  |  3,1  | -- mimimum value
 #2  |  200  |  400  |  800  | -- maximum value
---------------------------------
 #3  |  1,2  |  2,2  |  3,2  | -- incremented value minimum A$1 + 0,1 | B$1 +0,1 | C$1 + 0,1
 #4  |  1,3  |  2,3  |  3,3  | -- incremented value minimum A$3 + 0,1 | B$3 +0,1 | C$3 + 0,1
 #5  |  1,4  |  2,4  |  3,4  | -- incremented value minimum A$4 + 0,1 | B$4 +0,1 | C$4 + 0,1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  split
 #13 |  2,2  |  3,2  |  4,2  | -- incremented value minimum A$12 + 0,1 | B$12 +0,1 | C$12+ 0,1

有些专栏有> 600行计数。

我的问题是如何使用VBA脚本或其他Excel公式用0,1十进制值填充每列?

Sub AddValue()
    Dim Rng As Range, A3 As Range
    Set Rng = Range("A3:A99999")
    For Each Al In Rng
        A3.Value = A3.Value + 0,1
    Next
End Sub

如何在达到某个值时停止excel增量值?

如果我可以通过提供高于最大值的任何方式填充每列,我可以使用自定义过滤器过滤掉每个colomn的值"仅显示x和xxx之间的值"

更改

更新1:我已使用for循环更新了帖子中的脚本。但是0,1不接受,我需要增加A2以下的单元格,直到(A1)中的最小值达到最大值(A2)

更新2:我现在正在使用一个公式,其逻辑在触发最大值时返回FALSE。

=IF(B2+0,1>B$1;FALSE;B2+0,1)

问题仍然是如何用VBA填充行,例如B3'到' B99999' | ' C3'到' C99999' | ' D4'到' D99999'等等,每个单元格中的此公式递增。如果那解决了我可以触发一个过滤器来删除包含' FALSE'

的所有行

2 个答案:

答案 0 :(得分:0)

最好将第1行用作行来保存该列的最大值

     |   A   |   B   |   C   | 
---------------------------------
 #1  |  200  |  400  |  800  | 
 #2  |  1,1  |  2,1  |  3,1  |
 #3  |formula|formula|formula|

然后使用以下公式

=IF(A2+0,1>A$1,A2,A2+0,1)
=IF(B2+0,1>B$1,B2,B2+0,1)
=IF(C2+0,1>B$1,C2,C2+0,1)

如果你不能使用第1行存储这些,那么你将需要使用这3个

=IF(A2+0,1>200,A2,A2+0,1)
=IF(B2+0,1>400,B2,B2+0,1)
=IF(C2+0,1>800,C2,C2+0,1)

答案 1 :(得分:0)

如果我正确理解你想要的东西,这是一个VBA解决方案......

该子假设单元格A1:C1具有起始编号(例如1.1,2.1,3.1),单元格A2:C2具有结束编号(例如200,400,600)。该脚本将每个行项增加0.1,直到达到该特定列的结束编号。 Math.Round是摆脱浮点舍入错误。

Sub Test()
    Dim i As Long
    Dim j As Long

    For i = 1 To 3
        Cells(3, i).Value = Cells(1, i).Value + 0.1

        j = 3

        Do
            Cells(j + 1, i).Value = Math.Round((Cells(j, i).Value + 0.1), 1)
            j = j + 1
        Loop While Cells(j, i).Value < Cells(2, i).Value
    Next
End Sub