Excel 自动增加列中的十进制值,直到达到列中的最大值
Excel auto increment decimal value in column until max value has reached in column
我正在寻找一种解决方案来自动递增列中的小数值,直到达到每列的最大值。
我已经为 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 + 0,1 | B +0,1 | C + 0,1
#4 | 1,3 | 2,3 | 3,3 | -- incremented value minimum A + 0,1 | B +0,1 | C + 0,1
#5 | 1,4 | 2,4 | 3,4 | -- incremented value minimum A + 0,1 | B +0,1 | C + 0,1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ split
#13 | 2,2 | 3,2 | 4,2 | -- incremented value minimum A + 0,1 | B +0,1 | C+ 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 增量值?
如果我可以通过任何高于最大值的方式填充每一列,我可以使用自定义过滤器过滤掉每一列的值 "Show only values between x and xxx"
变化
更新 1:我已经用 for 循环更新了 post 中的脚本。但是 0,1 不接受,我需要增加 A2 以下的单元格,直到 (A1) 中的最小值达到最大值 (A2)
更新 2:我现在使用的公式在触发最大值时具有 returns FALSE 的逻辑。
=IF(B2+0,1>B;FALSE;B2+0,1)
问题仍然是如何用 VBA 填充行,例如 'B3' 到 'B99999' | 'C3' 到 'C99999' | 'D4' 到 'D99999' 等,每个单元格中的这个公式递增。如果那解决了我可以触发一个过滤器来删除所有包含 'FALSE'
的行
最好将第 1 行用作一行来保存该列的最大值
| A | B | C |
---------------------------------
#1 | 200 | 400 | 800 |
#2 | 1,1 | 2,1 | 3,1 |
#3 |formula|formula|formula|
然后使用下面的公式
=IF(A2+0,1>A,A2,A2+0,1)
=IF(B2+0,1>B,B2,B2+0,1)
=IF(C2+0,1>B,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)
如果我正确理解你想要什么,这里有一个 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
我正在寻找一种解决方案来自动递增列中的小数值,直到达到每列的最大值。
我已经为 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 + 0,1 | B +0,1 | C + 0,1
#4 | 1,3 | 2,3 | 3,3 | -- incremented value minimum A + 0,1 | B +0,1 | C + 0,1
#5 | 1,4 | 2,4 | 3,4 | -- incremented value minimum A + 0,1 | B +0,1 | C + 0,1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ split
#13 | 2,2 | 3,2 | 4,2 | -- incremented value minimum A + 0,1 | B +0,1 | C+ 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 增量值?
如果我可以通过任何高于最大值的方式填充每一列,我可以使用自定义过滤器过滤掉每一列的值 "Show only values between x and xxx"
变化
更新 1:我已经用 for 循环更新了 post 中的脚本。但是 0,1 不接受,我需要增加 A2 以下的单元格,直到 (A1) 中的最小值达到最大值 (A2)
更新 2:我现在使用的公式在触发最大值时具有 returns FALSE 的逻辑。
=IF(B2+0,1>B;FALSE;B2+0,1)
问题仍然是如何用 VBA 填充行,例如 'B3' 到 'B99999' | 'C3' 到 'C99999' | 'D4' 到 'D99999' 等,每个单元格中的这个公式递增。如果那解决了我可以触发一个过滤器来删除所有包含 'FALSE'
的行最好将第 1 行用作一行来保存该列的最大值
| A | B | C |
---------------------------------
#1 | 200 | 400 | 800 |
#2 | 1,1 | 2,1 | 3,1 |
#3 |formula|formula|formula|
然后使用下面的公式
=IF(A2+0,1>A,A2,A2+0,1)
=IF(B2+0,1>B,B2,B2+0,1)
=IF(C2+0,1>B,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)
如果我正确理解你想要什么,这里有一个 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