• Excel - VBA实例:字符串解析


    现有如下数据:

    0半球2

    2-1

    0-0

    0受一球1

    1半球1

    5球半/两球0

    4两球半/三球1

    3平手2

    2一球0

    3-2

    0平手1

    3半球0

    0平手1

    1受平手/半球2

    1一球2

    4球半0

    2半球/一球0

    2一球1

    1球半/两球0

    0一球/球半1

    3半球/一球1

    0半球/一球1

    需要将开头和结尾的数字提取出来,作为足球比赛的比分;中间的信息作为盘口信息。

    将上面数据copy到Excel中,使用VBA进行处理,代码如下:

    1. Sub FormatScoreAndPankou()
    2. Dim txtInput As String
    3. Dim charSingle
    4. Dim char_count
    5. Dim result1 As String
    6. Dim result2 As String
    7. Dim result3 As String
    8. Dim step1 As Boolean
    9. Dim step2 As Boolean
    10. Dim step3 As Boolean
    11. Dim leftNum As Integer
    12. Dim rightNum As Integer
    13. Dim adjNum As Integer
    14. Dim gapNum As Integer
    15. Dim realScore As String
    16. Dim realFinal As String
    17. Dim pankou As String
    18. Dim adjScore As String
    19. Dim adjFinal As String
    20. For Each cell In Selection
    21.     txtInput = cell.value
    22.     
    23.     step1 = True
    24.     step2 = False
    25.     step3 = False
    26.    
    27.     result1 = ""
    28.     result2 = ""
    29.     result3 = ""
    30.    
    31.     For char_count = 1 To Len(txtInput)
    32.         charSingle = Mid(txtInput, char_count, 1)
    33.         
    34.         If step1 Then
    35.             If (IsNumeric(charSingle)) Then
    36.                 result1 = result1 & charSingle
    37.             Else
    38.                 step1 = False
    39.                 step2 = True
    40.             End If
    41.         End If
    42.         
    43.         If step2 Then
    44.             If (Not IsNumeric(charSingle)) Then
    45.                 result2 = result2 & charSingle
    46.             Else
    47.                 step2 = False
    48.                 step3 = True
    49.             End If
    50.         End If
    51.         
    52.         If step3 Then
    53.             If (IsNumeric(charSingle)) Then
    54.                 result3 = result3 & charSingle
    55.             Else
    56.                 step1 = False
    57.                 step2 = False
    58.                 step3 = False
    59.             End If
    60.         End If
    61.     Next char_count
    62.     realScore = result1 & "-" & result3
    63.     
    64.     Select Case result2
    65.     
    66.     Case "-", "平手", "半球", "平手/半球", "一球", "半球/一球", "一球/球半"
    67.     pankou = "1"
    68.     
    69.     Case "受平手/半球", "受一球"
    70.     pankou = "-1"
    71.     
    72.     Case "球半", "球半/两球"
    73.     pankou = "2"
    74.     
    75.     Case "两球半/三球"
    76.     pankou = "3"
    77.     
    78.     Case Else
    79.     pankou = "-100"
    80.     
    81.     End Select
    82.     leftNum = result1
    83.     rightNum = result3
    84.     If leftNum > rightNum Then
    85.         realFinal = "胜"
    86.     ElseIf leftNum = rightNum Then
    87.         realFinal = "平"
    88.     Else
    89.         realFinal = "负"
    90.     End If
    91.     adjNum = pankou
    92.     leftNum = leftNum + adjNum
    93.     
    94.     If leftNum < 0 Then
    95.         gap = -leftNum
    96.         leftNum = 0
    97.         rightNum = rightNum + gap
    98.     End If
    99.     adjScore = leftNum & "-" & rightNum
    100.     
    101.     If leftNum > rightNum Then
    102.         adjFinal = "胜"
    103.     ElseIf lefNum = rightNum Then
    104.         adjFinal = "平"
    105.     Else
    106.         adjFinal = "负"
    107.     End If
    108.     cell.Offset(0, 1) = realScore
    109.     cell.Offset(0, 2) = realFinal
    110.     cell.Offset(0, 3) = pankou
    111.     cell.Offset(0, 4) = adjScore
    112.     cell.Offset(0, 5) = adjFinal
    113.     
    114. Next cell
    115. End Sub

    操作前,需要选中需要处理的数据区域,然后运行函数,得到结果如下:

  • 相关阅读:
    C++异常及异常优缺点
    2195. 深海机器人问题(网络流,费用流,上下界可行流,网格图模型)
    谈谈Vue项目打包的方式
    【数据结构】3000字剖析链表及双向链表
    线上一次JVM FullGC搞得整晚都没睡,彻底崩溃~
    5、CSS——三种样式和样式优先级、CSS中颜色设置方式、标签选择器和基本选择器的优先级
    uniapp中swiper 轮播带左右箭头,点击切换轮播效果demo(整理)
    CSS 不同颜色的小圆角方块组成的旋转加载动画
    自 JDK 8 到 JDK 21 以来所有 Java 和 JVM 特性的分类列表
    android的camera学习(3)——mipi协议分析
  • 原文地址:https://blog.csdn.net/guoqx/article/details/127743924