Excel精英培训网

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

[已解决]解释一下这段代码。

[复制链接]
发表于 2012-9-8 20:42 | 显示全部楼层 |阅读模式
请给解释一下这段代码。
谢谢了

Sub FindChar()
Dim Sp() As String
Dim iRow As Integer
Dim iCnt As Integer, jCnt As Integer
iRow = Range("A65536").End(xlUp).Row
For iCnt = 1 To iRow
    If Cells(iCnt, 1).Value <> "" Then
        Sp = Split(Cells(iCnt, 1).Value, " ")
        For jCnt = LBound(Sp) To UBound(Sp)
            If Right(Sp(jCnt), 1) = "寸" Then
               Cells(iCnt, 2).Value = CDbl(Left(Sp(jCnt), Len(Sp(jCnt)) - 1))
            End If
        Next
    End If
Next
End Sub
最佳答案
2012-9-8 20:50
本帖最后由 cbg2008 于 2012-9-8 20:53 编辑
  1. Sub FindChar()
  2.     Dim Sp() As String
  3.     Dim iRow As Integer
  4.     Dim iCnt As Integer, jCnt As Integer
  5.     iRow = Range("A65536").End(xlUp).Row  'A列最后一个非空单元格所在的行
  6.     For iCnt = 1 To iRow           '从第一行开始循环到最后一个非空单元格
  7.         If Cells(iCnt, 1).Value <> "" Then    '如果A列单元格的值不为空
  8.             Sp = Split(Cells(iCnt, 1).Value, " ")    '将单元格的值以空格为间隔符分割成一维数组
  9.             For jCnt = LBound(Sp) To UBound(Sp)  '循环该一维数组中的每一个元素
  10.                 If Right(Sp(jCnt), 1) = "寸" Then    '如果有右边最后一个字是“寸”的,刚提取寸左边的数字转化为double型的,放到B列对应行的单元格中
  11.                     Cells(iCnt, 2).Value = CDbl(Left(Sp(jCnt), Len(Sp(jCnt)) - 1))
  12.                 End If
  13.             Next
  14.         End If
  15.     Next
  16. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-9-8 20:50 | 显示全部楼层    本楼为最佳答案   
本帖最后由 cbg2008 于 2012-9-8 20:53 编辑
  1. Sub FindChar()
  2.     Dim Sp() As String
  3.     Dim iRow As Integer
  4.     Dim iCnt As Integer, jCnt As Integer
  5.     iRow = Range("A65536").End(xlUp).Row  'A列最后一个非空单元格所在的行
  6.     For iCnt = 1 To iRow           '从第一行开始循环到最后一个非空单元格
  7.         If Cells(iCnt, 1).Value <> "" Then    '如果A列单元格的值不为空
  8.             Sp = Split(Cells(iCnt, 1).Value, " ")    '将单元格的值以空格为间隔符分割成一维数组
  9.             For jCnt = LBound(Sp) To UBound(Sp)  '循环该一维数组中的每一个元素
  10.                 If Right(Sp(jCnt), 1) = "寸" Then    '如果有右边最后一个字是“寸”的,刚提取寸左边的数字转化为double型的,放到B列对应行的单元格中
  11.                     Cells(iCnt, 2).Value = CDbl(Left(Sp(jCnt), Len(Sp(jCnt)) - 1))
  12.                 End If
  13.             Next
  14.         End If
  15.     Next
  16. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
梅一枝 + 3 哦,学习了

查看全部评分

回复

使用道具 举报

发表于 2012-9-8 20:55 | 显示全部楼层
本帖最后由 梅一枝 于 2012-9-8 21:28 编辑

Sub FindChar()
Dim Sp() As String
Dim iRow As Integer
Dim iCnt As Integer, jCnt As Integer
iRow = Range("A65536").End(xlUp).Row  '往上找到非空单元格
For iCnt = 1 To iRow ' 从1到最后一个非空单元格
     If Cells(iCnt, 1).Value <> "" Then  '如果A列不是空
         Sp = Split(Cells(iCnt, 1).Value, " ") 'split 以空格为条件拆分为字符串
         For jCnt = LBound(Sp) To UBound(Sp) ' SP是数组变量 从最小下标 到最大上标 循环
             If Right(Sp(jCnt), 1) = "寸" Then '从右提取一个字符=“寸”
                Cells(iCnt, 2).Value = CDbl(Left(Sp(jCnt), Len(Sp(jCnt)) - 1)) 'CDBL类型转换函数  把结果赋值到B列
             End If
         Next
     End If
Next
End Sub
就会这么多了。老师你按F8逐步运行 有计算过程
回复

使用道具 举报

发表于 2012-9-8 21:01 | 显示全部楼层
本帖最后由 梅一枝 于 2012-9-8 21:22 编辑

代码下面加个 Debug.Print  按F8逐步运行 立即窗口 本地窗口有显示
回复

使用道具 举报

发表于 2012-9-8 23:16 | 显示全部楼层
这个是老师出题在考VB班的学生么{:041:}?我觉得2楼的说得有理,3楼的也没啥错呀{:091:}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 09:18 , Processed in 0.125573 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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