求教大佬VBA中如何完成循环计算?

酒饮风尘醉 2020-04-13 11:58:44
图中的代码只能完成第2行到第33行的计算,现在我想要完成整列所有有数字的计算,请问应该怎么改?
...全文
257 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
milaoshu1020 2020-04-13
  • 打赏
  • 举报
回复
可以用UsedRange来得到已使用的数据范围;
酒饮风尘醉 2020-04-13
  • 打赏
  • 举报
回复
引用 3 楼 milaoshu1020的回复:
试试这样行不行(还没测试过):

Sub 运算并画图()
    Dim r As Integer, x As String, y As String, op As String, z As Single
    For r = 2 To 9999
        x = Worksheets(1).Range("A" & r)
        y = Worksheets(2).Range("A" & r)
        op = Worksheets(3).Range("A" & r)
        If x <> "" And y <> "" And op <> "" Then
            Select Case Worksheets(3).Range("A" & r)
            Case "+"
                z = CInt(x) + CInt(y)
            Case "-"
                z = CInt(x) - CInt(y)
            Case "*"
                z = CInt(x) * CInt(y)
            Case "/"
                z = CInt(x) / CInt(y)
            End Select
            Worksheets(4).Range("A" & r) = z
        End If
        DoEvents
    Next
End Sub
谢谢大佬指教!不过还有一个小问题需要麻烦一下,计算不是真的到A9999,只是一个虚指,因为不确定会有多少个数据。
milaoshu1020 2020-04-13
  • 打赏
  • 举报
回复
试试这样行不行(还没测试过):

Sub 运算并画图()
    Dim r As Integer, x As String, y As String, op As String, z As Single
    For r = 2 To 9999
        x = Worksheets(1).Range("A" & r)
        y = Worksheets(2).Range("A" & r)
        op = Worksheets(3).Range("A" & r)
        If x <> "" And y <> "" And op <> "" Then
            Select Case Worksheets(3).Range("A" & r)
            Case "+"
                z = CInt(x) + CInt(y)
            Case "-"
                z = CInt(x) - CInt(y)
            Case "*"
                z = CInt(x) * CInt(y)
            Case "/"
                z = CInt(x) / CInt(y)
            End Select
            Worksheets(4).Range("A" & r) = z
        End If
        DoEvents
    Next
End Sub
酒饮风尘醉 2020-04-13
  • 打赏
  • 举报
回复
引用 1 楼 吉祥编程的回复:
如果所有列都有内容,可用如下格式:
Dim r as Integer
r=2
Do while Worksheet(1).Range("A" & r).Text<>"" and Worksheet(2).Range("A" & r).Text<>""
Do while IsNumeric(Worksheet(1).Range("A" & r).Text) and IsNumeric(Worksheet(2).Range("A" & r).Text)


内容计算


loop
r=r+1
loop

获取更多VBA知识,请关注 吉祥编程 公众号
这个我试了一下,一运行就好卡死excel
吉祥编程 2020-04-13
  • 打赏
  • 举报
回复
如果所有列都有内容,可用如下格式:
Dim r as Integer
r=2
Do while Worksheet(1).Range("A" & r).Text<>"" and Worksheet(2).Range("A" & r).Text<>""
Do while IsNumeric(Worksheet(1).Range("A" & r).Text) and IsNumeric(Worksheet(2).Range("A" & r).Text)


内容计算


loop
r=r+1
loop

获取更多VBA知识,请关注 吉祥编程 公众号
【多源数据融合】基于Dempster-Shafer理论的信念对数相似度测量及其在多源数据融合的应用(Matlab代码实现)内容概要:本文围绕基于Dempster-Shafer(D-S)证据理论的信念对数相似度测量方法展开,重点研究其在多源数据融合的应用。该方法通过引入对数相似度函数,改进传统D-S理论在处理冲突证据时的不合理性问题,提升了多源信息融合的准确性与鲁棒性。文结合Matlab代码实现,展示了该算法在实际数据融合场景的建模、计算与验证过程,包括基本概率分配(BPA)构造、证据距离计算、相似度融合及决策输出等核心步骤,有效解决了传感器数据冲突、不确定性强等问题。; 适合人群:具备一定信息融合、人工智能或自动化背景,熟悉Matlab编程,从事科研或工程开发工作1-3年的研究生及技术人员。; 使用场景及目标:①应用于多传感器系统的目标识别与状态估计;②解决复杂环境不确定性信息的融合难题;③为智能决策系统(如自动驾驶、工业监测)提供可靠的融合算法支持。; 阅读建议:建议结合Matlab代码逐段调试运行,深入理解BPA生成、证据冲突度量与融合规则的设计逻辑,并尝试在不同数据集上验证算法性能,进一步掌握D-S理论的实际应用技巧。

2,506

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧