gpt4 book ai didi

excel - VBA 除以一个值,然后显示与除法相关的值

转载 作者:行者123 更新时间:2023-12-01 18:18:32 24 4
gpt4 key购买 nike

我正在尝试找出最简洁的方式来显示,例如,初始值 300x 和关键路径 1.5y。这两个值都可以通过工作表上的输入进行更改。

与这些值一起,我们就有了 ab 资源。在这种情况下,a 将填充一行中的 200 个单元格,b 将填充 100

正如我之前提到的,xy 可以改变,比如说,如果 y2a 填充 150b 填充 150。如果 y1,则只有 a 填充 300

目前我正在使用 If 语句,但我觉得这很困惑,并且可能会导致无休止的代码以涵盖所有可能的结果,我需要更好的解决方案。

这是我目前所取得的成就的一个简单示例:

Private Sub Example()

Dim ActiveWB As Worksheet
Set ActiveWB = ActiveWorkbook.Sheets("Sheet1")
Dim cell As Range
Dim a, b, x, y As Double

x = ActiveWB.Range("A1").Value
y = ActiveWB.Range("A2").Value
a = x / y
b = x - a

For Each cell In ActiveWB.Range(Cells(3, 1), Cells(3, a))

If (cell.Column >= 0) And (cell.Column <> x) Then

If (y = 1) And (a > 0) Then
cell.Value = "a"
a = a - 1

ElseIf (y > 1) And (y < 2) And (a > 0) Then
cell.Value = "a"
a = a - 1
If (b > 0) Then
cell.Offset(1, 0).Value = "b"
b = b - 1
End If

ElseIf (y >= 2) And (y < 2.5) And (a > 0) Then
cell.Value = "a"
a = a - 1
If (b > 0) Then
cell.Offset(1, 0).Value = "b"
b = b - 1
End If

'..... and so on......

End If

End If

Next cell

End Sub

如有任何建议,我们将不胜感激。感谢您的时间。是的。

最佳答案

首先应该为每个变量分别声明类型:

Dim a, b, x, y As Double

变成:

Dim a As Double, b As Double, x As Double, y As Double

或者(这是我更喜欢的):

Dim a As Double
Dim b As Double
Dim x As Double
Dim y As Double

第二,如果你的 a 和 b 仅用于确定范围宽度,那么它们最好不是浮点类型。请改用 Integer(小于 2^15)或 Long:

Dim a As Integer
Dim b As Integer
Dim x As Double
Dim y As Double

那么你对 a 和 b 的赋值就不能保持现在的样子,而应该是这样的:

a = Int(x / y)
b = Int(x - a)

那么我希望您的工作表中的 x 和 y 值限制为 > 0 且 x > y 的值。如果没有,那么首先在您的脚本中测试它......

最后(以及您原来的问题),如果您愿意,您可以为整个单元格范围分配一个值:

If a > 0 Then Range(Cells(3, 1), Cells(3, a)).Value = "a"
If b > 0 Then Range(Cells(4, 1), Cells(4, b)).Value = "b"

我不明白为什么你从 a 和 b 中取 1,所以如果这真的增加了一些东西,请详细说明一般逻辑......

关于excel - VBA 除以一个值,然后显示与除法相关的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19382985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com