求教关于EXCEL宏命令使用VBA实现一个特定条件的循环(详见细节)

求教关于EXCEL宏命令使用VBA实现一个特定条件的循环(详见细节),第1张

加个判断语句不就好了么,

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

不知道这个能不能符合你的要求?

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/4043535.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-12
下一篇2024-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存