加个判断语句不就好了么,
n = 1
searchString = Sheet1Cells(n, 1)
a = Mid$(searchString, 1, 10)
'这里加个判断
if a=“” then aaa=aaa+1 else aaa=0
i = 1
If a = "Ranking a" Then
然后在你的循环条件里加上 aaa=3,我不知道你用的什么循环,如果是DO---LOOP的话很方便,如
DO UNTIL aaa=3
……
LOOP
或者在你循环结束语句的前面加上
IF aaa=3 then exit do ‘exit do 是退出循环语句,根据你的循环实际语句修改
假如设定循环变量为k,循环语句如下:
for k=3 to 9
Cells(k, j) = WorksheetFunctionSumIfs(Range("j" & 2, "j" & hh - 1), Range("f" & 2, "f" & hh - 1), Cells(k, 1), Range("g" & 2, "g" & hh - 1), p)
next k
其实你先前的代码也写得复杂,"g" & 2 和 "f" & 2 都是常量,不用符,直接写在一起就行,修改如下:
Cells(k, j) = WorksheetFunctionSumIfs(Range("j2", "j" & hh - 1), Range("f2", "f" & hh - 1), Cells(k, 1), Range("g2", "g" & hh - 1), p)
都没看明白你想干什么?
你不要说你打算实现的思路,你只说思路不说目的,当你的思路是错的时候,别人根本就不明白你想把怎么样的原表变成什么样的目的表。你只说目的就好,思路让答题者来说。
不要这么说:你比如这里的,看标题“按条件多次循环”?这个说法很笼统,看不明白什么意思。再看具体的,每循环1152次就复制一次?这句也不明白你讲的什么,循环那么多次是干什么用的?VBA的每一次循环都可以做很多事情的了。会不会是你想每隔1152行复制一次?再看你的代码,看半天也没看明白比如你这For循环的前11句都是赋值语句,给测试表的A2:K2填写数据表中的内容,但是你是填写了104800次,每一次的内容还不一样,拿学校里的黑板来说,你拿粉笔写了10万多次,写了又擦掉,擦了又写上,最后黑板上只留最后一次写的,前面10万多次做的都是无意义的擦掉和写上的动作,你累不累?
你要这么说:你的数据表是一个什么样的格式的表,你想复制那些数据表的内容到测试表的那些区域上。这只要这么一说,别人才能明白你想干什么,才能帮你设计VBA代码。
1、循环出当前打开的所有工作簿名字
Sub 工作簿名字()
Dim wb As Workbook
For Each wb In Workbooks
MsgBox wbName
Next wbEnd Sub
我打开三个工作簿,从工程资源管理中的VBAProject可以看出来,我们运行第一段代码会得出每个工作簿的名字:
for……next循环如下
Sub 循环1()
Dim i%
For i = 1 To [j1]Value
要执行的代码
Next
End Sub
do……loop循环如下
Sub 循环2()
Dim i%
Do
要执行的代码
i = i + 1
Loop Until i = [j1]Value
End Sub
如果要跳到外层循环的话,必须先结束内层循环, 可以用exit for语句结束内层循环,具体的代码如下:
if then
next
end if
VBA for循环是一种重复控制结构,它允许开发人员有效地编写需要执行特定次数的循环。
扩展资料:
for循环语法
1、语句最简形式为:
for( ; ; )
2、一般形式为:
for(单次表达式;条件表达式;末尾循环体)
{
中间循环体;
}
其中,表示式皆可以省略,但分号不可省略,因为“;”可以代表一个空语句,省略了之后语句减少,即为语句格式发生变化,则编译器不能识别而无法进行编译。
for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值。
-for循环
Sub zhao()
Dim x As Integer
Dim y As Integer
For y = 100 To 7 Step -1
For x = 100 To 7 Step -1
If Cells(x, 1)Value = 1 Then
Cells(y, 5)Value = Cells(x, 3)Value
Else
End If
Next
Next
End Sub
以下为新回答:
Sub zhao()
Dim x As Integer
Dim y As Integer
For y = 100 To 7 Step -1
For x = y To 7 Step -1
If Cells(x, 1)Value = 1 Then
Cells(y, 5)Value = Cells(x, 3)Value
Exit For
Else
End If
Next
Next
End Sub
不知道这个能不能符合你的要求?
欢迎分享,转载请注明来源:表白网
评论列表(0条)