新人求问如何利用excel vba读取字符串中的数据

baidu_35876036 2017-03-19 06:18:43
已知有一列文字数据储存在excel的一列中,例如:

1. 步行约430米,到达盈港客运站(东)乘坐青浦5路,经过5站,到达城中西路港俞路步行约540米,到达终点
2. 步行约370米,到达青安路医院路乘坐青浦6路,经过3站,到达华盈路外青松公路(新青浦佳苑)步行约120米,到达终点
3. 步行约1.4公里,到达虹梅南路向阳路乘坐闵行15路,经过2站,到达澄江路许泾村路步行约410米,到达终点
4. 步行约560米,到达珠溪路漕平支路乘坐朱徐线,经过2站,到达淀山湖大道站珠溪路步行约1.4公里,到达终点
5. 步行约1.1公里,到达盈港路城中北路(世纪联华)乘坐青枫专线,经过26站,到达老朱枫公路蒸淀步行约950米,到达终点
6. 步行约620米,到达祥凝浜路珠溪路(招呼站)乘坐青枫专线,经过4站,到达万隆步行约700米,到达终点
7. 步行约1.9公里,到达闵行开发区乘坐地铁5号线,经过10站,到达莘庄步行约320米,到达莘庄地铁站南广场乘坐闵行25路,经过7站,到达莲花南路银都路步行约1.2公里,到达终点
8. 步行约920米,到达南京东路乘坐地铁10号线,经过7站,到达国权路步行约1.2公里,到达终点
9. 步行约20米,到达青赵公路古石乘坐青赵线,经过5站,到达青赵公路鹤颈湾步行约420米,到达东联路东方路乘坐香花桥1路,经过2站,到达东方路东方村步行约860米,到达终点
10. 步行约420米,到达盈港客运站(东)乘坐青浦2路,经过1站,到达盈港路漕盈路步行约610米,到达终点
11. 步行约450米,到达盈港汽车站乘坐青浦15路,经过4站,到达淀山湖大道南横村步行约820米,到达终点
12. 步行约10米,到达盈港客运站(西)乘坐沪青盈专线,经过5站,到达青安路沙埭浜路步行约10米,到达青安路沙埭浜路乘坐青岑线,经过17站,到达莲盛(练西公路莲湖路)步行约100米,到达练西路莲湖路乘坐金泽5路,经过3站,到达任屯路龚家庄步行约120米,到达终点
13. 步行约1.1公里,到达崧泽大道胜利路乘坐青浦7路,经过4站,到达青浦汽车站步行约10米,到达盈港客运站(东)乘坐青赵线,经过5站,到达青赵公路金横步行约830米,到达终点
14. 步行约770米,到达中山北二路黄兴路乘坐723路,经过1站,到达中山北二路四平路步行约320米,到达终点
15. 步行约890米,到达青浦汽车站乘坐虹桥枢纽6路,经过12站,到达崧泽大道明珠路步行约10米,到达崧泽大道明珠路乘坐710路b线,经过3站,到达地铁2号线徐泾东步行约1.7公里,到达终点
16. 步行约400米,到达盈港客运站(东)乘坐青赵线,经过6站,到达青赵公路鹤颈湾步行约970米,到达终点
17. 步行约580米,到达青赵公路金横乘坐青赵线,经过7站,到达青赵公路赵屯步行约1.5公里,到达终点
18. 步行约280米,到达欧阳路吉祥路乘坐875路,经过3站,到达水电路广中路步行约1.1公里,到达终点
19. 步行约280米,到达荷泽路五莲路乘坐843路,经过10站,到达羽山路德平路步行约1.1公里,到达终点
20. 步行约520米,到达博兴路凌河路乘坐182路,经过2站,到达东陆路金海路步行约260米,到达终点
21. 步行约760米,到达荷泽路长岛路乘坐182路,经过13站,到达唐陆路唐镇路步行约720米,到达唐镇乘坐地铁2号线东延伸段,经过6站,到达海天三路步行约3.1公里,到达终点
22. 步行约20米,到达五莲路双桥路乘坐1100路,经过5站,到达五洲大道地铁站步行约4.0公里,到达终点

现欲提取该列数据中每一行的步行距离之和放入另一列中,求问如何实现?已知步行距离数字前必有“步行约”字样且距离单位只有“米”和“公里”两种。
是否能实现初始步行距离、换乘步行距离、最终步行距离、总步行距离分别提取及计算?
...全文
309 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_35876036 2017-03-20
  • 打赏
  • 举报
回复
引用 1 楼 Topc008 的回复:
这个无非就是instr的简单应用。 请参考:
Option Explicit
Sub test()
    Dim i As Integer, j As Integer, w1 As String, w2 As String
    Dim bStr As String, s As Integer
    bStr = Sheet1.Range("a1").Value
    s = 1 '''米  公里
    Do
        i = InStr(s, bStr, "步行约", vbTextCompare)
        If i > 0 Then
            w2 = ""
            For j = i + 2 To Len(bStr)
                w1 = Mid$(bStr, j, 1)
                Select Case Asc(w1)
                Case 46, 48 To 57
                    w2 = w2 & w1
                Case Asc("米")
                    Debug.Print w2
                    s = j
                    Exit For
                Case Asc("公")
                    Debug.Print CStr(Val(w2) * 1000) ''
                    s = j
                    Exit For
                End Select
            Next
        Else
            Exit Do
        End If
    Loop
End Sub
'
.至于距离种类,自己判断
感谢大神帮助,完美解决!但第11行for语句应该从j=i+3开始,否则会把“约”也判断进去吧?
一如既往哈 2017-03-19
  • 打赏
  • 举报
回复
这个无非就是instr的简单应用。 请参考:
Option Explicit
Sub test()
    Dim i As Integer, j As Integer, w1 As String, w2 As String
    Dim bStr As String, s As Integer
    bStr = Sheet1.Range("a1").Value
    s = 1 '''米  公里
    Do
        i = InStr(s, bStr, "步行约", vbTextCompare)
        If i > 0 Then
            w2 = ""
            For j = i + 2 To Len(bStr)
                w1 = Mid$(bStr, j, 1)
                Select Case Asc(w1)
                Case 46, 48 To 57
                    w2 = w2 & w1
                Case Asc("米")
                    Debug.Print w2
                    s = j
                    Exit For
                Case Asc("公")
                    Debug.Print CStr(Val(w2) * 1000) ''
                    s = j
                    Exit For
                End Select
            Next
        Else
            Exit Do
        End If
    Loop
End Sub
'
.至于距离种类,自己判断

2,464

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧