Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2097|回复: 1

[已解决]EXCEL高手用VBA解释一下for循环leftlenthen

[复制链接]
发表于 2016-2-20 13:26 | 显示全部楼层 |阅读模式

EXCEL高手用VBA解释一下for循环leftlenthen

Private Sub Command1_Click()
  a$ = "12234567864"
  d$ = Left(a$, 1)
  For i = 2 To Len(a$)
     z$ = Mid(a$, i, 1)
     If z$ > d$ Then d$ = z$   
  Next i
  Print d$
End Sub

窗体中显示 8

为什么8,如何计算出来


最佳答案
2016-2-22 11:21
1、代码里涉及到字符串的比较,实际上是各字符asc码的比较,因全是数字类型,大小关系和数字的大小关系一致。
2、a = "12234567864"
  d = Left(a$, 1)=1    (因全是数字类型,大小关系和数字的大小关系一致)
3、开始循环,从a的第2个字符开始:
      i=2,Z = Mid(a$, i, 1)=2,如果  Z > d 那么 d = Z(d=1,Z=2,满足,所以d=Z=2)
      i=3,Z = Mid(a$, i, 1)=2,d=2,不满足Z>d的条件,所以d=2
      i=4,Z = Mid(a$, i, 1)=3,d=2,满足Z>d的条件,所以d=3
     。。。。。
    由此可见,循环的意思是反字符串中的每个字符取出来跟d比较,如果比d大,就让d等于这个大值,如果比d小,d保留原值不变。最终结果就是把字符串中的最大值给取出来。
因此最终结果是字符串 "12234567864"中的最大值8。
  Next i
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-2-22 11:21 | 显示全部楼层    本楼为最佳答案   
1、代码里涉及到字符串的比较,实际上是各字符asc码的比较,因全是数字类型,大小关系和数字的大小关系一致。
2、a = "12234567864"
  d = Left(a$, 1)=1    (因全是数字类型,大小关系和数字的大小关系一致)
3、开始循环,从a的第2个字符开始:
      i=2,Z = Mid(a$, i, 1)=2,如果  Z > d 那么 d = Z(d=1,Z=2,满足,所以d=Z=2)
      i=3,Z = Mid(a$, i, 1)=2,d=2,不满足Z>d的条件,所以d=2
      i=4,Z = Mid(a$, i, 1)=3,d=2,满足Z>d的条件,所以d=3
     。。。。。
    由此可见,循环的意思是反字符串中的每个字符取出来跟d比较,如果比d大,就让d等于这个大值,如果比d小,d保留原值不变。最终结果就是把字符串中的最大值给取出来。
因此最终结果是字符串 "12234567864"中的最大值8。
  Next i

评分

参与人数 1 +6 收起 理由
vbyou127 + 6 来学习

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 09:28 , Processed in 0.246993 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表