Excel 用VBA构建求和
目标:在特定列中建立一个总和 这一行中有特殊值:“开始”和“结束” 我想把A列的值从“Start”加到“EEnd” 范例Excel 用VBA构建求和,excel,vba,Excel,Vba,目标:在特定列中建立一个总和 这一行中有特殊值:“开始”和“结束” 我想把A列的值从“Start”加到“EEnd” 范例 A B 1 Start 2 3 4 5 EEnd 1 Start 5 2 EEnd 第一个总数应该是
A B
1 Start
2
3
4
5 EEnd
1 Start
5
2 EEnd
第一个总数应该是15,第二个总数应该是8
直到最后一天
结果应在“EEnd”旁边的C列中
我的尝试:
Sub Try()
Dim rngTreffer As Range
Dim lngC As String
Dim strAdresse As String
Dim alteAdresse As String
With Worksheets("Tabelle2")
Set sStart = .Columns(2).Find("Start", LookIn:=xlValues, lookat:=xlWhole)
Set sEnd = .Columns(2).Find("EEnd", LookIn:=xlValues, lookat:=xlWhole)
If Not sStart Is Nothing Then
sStartAdress = sStart.Address
sEndAdress = sEnd.Address
Do
Range("A1") = Application.Sum(Range("sStartAdress:sEndAdress"))
'here i get an Error:Run-time error '1004' : Method 'Range' of object'_Global' failed
Set sStart = .Columns(2).FindNext(sStart)
Set sEnd = .Columns(2).FindNext(sEnd)
Loop While sStart.Address <> sStartAdress
End If
End With
End Sub
subtry()
变暗rngTreffer As范围
作为字符串的Dim lngC
像绳子一样的暗跨
作为字符串的Dim alteadress
带工作表(“表2”)
设置sStart=.Columns(2).Find(“开始”,LookIn:=xlValues,lookat:=xlWhole)
设置sEnd=.Columns(2).Find(“EEnd”,LookIn:=xlValues,lookat:=xlWhole)
如果不是,那么sStart什么都不是
sstartAddress=ssstart.Address
SendAddress=发送地址
做
Range(“A1”)=Application.Sum(Range(“sstartdress:senddress”))
'这里我得到一个错误:运行时错误'1004':对象''u Global'的方法'Range'失败
Set sStart=.Columns(2).FindNext(sStart)
设置发送=.Columns(2).FindNext(发送)
在sStart.Address sstartAddress时循环
如果结束
以
端接头
您的范围是“sstartdress:senddress”
,这就是错误所在。但是您需要一个范围“A2:A6”
所以你必须移出“.”的变量。您可以得到类似于范围(sstartAddress&“:”&sendAddress)
subtry()
变暗rngTreffer As范围
作为字符串的Dim lngC
像绳子一样的暗跨
作为字符串的Dim alteadress
带工作表(“表3”)
设置sStart=.Columns(2).Find(“开始”,LookIn:=xlValues,lookat:=xlWhole)
设置sEnd=.Columns(2).Find(“EEnd”,LookIn:=xlValues,lookat:=xlWhole)
如果不是,那么sStart什么都不是
sstartAddress=ssstart.Address
SendAddress=发送地址
做
sStartRow=ssstart.Row
sEndRow=sEnd.Row
单元格(sStartRow,3)=Application.Sum(范围(“A”&sStartRow&“:”和“A”&sEndRow))
Set sStart=.Columns(2).FindNext(sStart)
设置发送=.Columns(2).FindNext(发送)
在sStart.Address sstartAddress时循环
如果结束
以
端接头
这是第一个解决方案
有一个问题。。它永远不会停止循环。。。我认为有一个错误:
在sStart.Address sstartAddress时循环
但它起作用了。我会想办法的
@IQV
战争与死亡。(好的,谢谢)谢谢 这些结果会出现在哪里?在“EEnd”旁边的C列中,那么您尝试使用的VBA代码在哪里?或者,您是否希望有人在您这边不费吹灰之力的情况下为您编写代码?运行时错误“1004”:对象“u Global”的方法“Range”在单元格(1,3)=Application.Sum(Range(“sStart.Address:sEnd.Address”))处失败。谢谢IQV!做得好!Address总是==sstartAddress,因此永远不会为true,循环是无限的。但是您可以使用
alteAdresse
来提醒第一个结果,并将其用作取消标准。
Sub Try()
Dim rngTreffer As Range
Dim lngC As String
Dim strAdresse As String
Dim alteAdresse As String
With Worksheets("Tabelle3")
Set sStart = .Columns(2).Find("Start", LookIn:=xlValues, lookat:=xlWhole)
Set sEnd = .Columns(2).Find("EEnd", LookIn:=xlValues, lookat:=xlWhole)
If Not sStart Is Nothing Then
sStartAdress = sStart.Address
sEndAdress = sEnd.Address
Do
sStartRow = sStart.Row
sEndRow = sEnd.Row
Cells(sStartRow, 3) = Application.Sum(Range("A" & sStartRow & ":" & "A" & sEndRow))
Set sStart = .Columns(2).FindNext(sStart)
Set sEnd = .Columns(2).FindNext(sEnd)
Loop While sStart.Address <> sStartAdress
End If
End With
End Sub