1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        字符串函數(shù)Split的妙用

        共 2542字,需瀏覽 6分鐘

         ·

        2020-09-10 06:26




        最近做了一個批處理小程序,Split函數(shù)立了大功勞。分享給大家其中的思路和知識點。


        →案例需求:


        將下圖1中B列句子,按空格、標點符號分割開,單獨列為1行。

        圖1



        圖2





        →思路分析:


        首先就想到用Split函數(shù),以空格作為分隔符號把英文句子分割開。我們先熟悉下Split函數(shù)。



        ●使用方法:Split(需要分割的字符串,分隔符)


        通俗的說:Split 函數(shù)給他一個分隔符,能把字符串分割開,并返回一個下標從零開始的一維數(shù)組。(重點:①下標從0開始②一維數(shù)組




        仿佛可以解決問題了,但是還有一個條件:句子中除了空格,標點符號也要做為分隔符。



        Split只能設(shè)置一種分隔符,如何實現(xiàn)多種分隔符實現(xiàn)成功分割字符串呢?





        ●解決辦法:


        我們在使用Split函數(shù)之前,把其他的標點符號,全部替換為空格即可。這樣子,可以一次性實現(xiàn)分以空格作為分隔符分割字符串。






        →最終代碼:


        里面除了數(shù)組轉(zhuǎn)置自定義函數(shù)可以借鑒,其他的都是上面編程邏輯的體現(xiàn),理解了上面說的,下面的東西很簡單。


        Sub test()    Dim crr()    k = 0    Set sht2 = Worksheets("原始數(shù)據(jù)")    arr = Intersect(sht2.UsedRange, sht2.Cells)    For i = 2 To UBound(arr)        brr = Split(replacestr(arr(i, 2)), " ") '以空格作為分隔符,分割字符串        For j = 0 To UBound(brr) '分割完成,循環(huán)寫入數(shù)組crr            k = k + 1            ReDim Preserve crr(1 To UBound(arr, 2), 1 To k)            For m = 1 To UBound(arr, 2) 'For循環(huán),將英文句子同一行的內(nèi)容寫入數(shù)組Crr                crr(m, k) = arr(i, m)            Next            crr(2, k) = brr(j)        Next    Next    '//開始寫入結(jié)果    Set sht = Worksheets("結(jié)果")    sht.UsedRange.Clear '清空原有數(shù)據(jù)    Worksheets("原始數(shù)據(jù)").Rows(1).Copy sht.Range("a1")    sht.Range("a2").Resize(UBound(crr, 2), UBound(crr)) = Transpose2(crr)    sht.Columns.AutoFit    MsgBox ("完成!")End SubFunction replacestr(strr)    '自定義函數(shù),替換標點符號為空格,為下一步    '用空格分割句子做準備    replacestr = Replace(strr, ",", " ,")    replacestr = Replace(replacestr, ".", " .")    replacestr = Replace(replacestr, """", " "" ")    replacestr = Replace(replacestr, "?", " ? ")    replacestr = Trim(replacestr)End Function


        數(shù)組轉(zhuǎn)置自定義函數(shù)
        Function Transpose2(arr As Variant)'自定義數(shù)組轉(zhuǎn)置函數(shù),突破工作表函數(shù)Transpose的限制    Dim brr(), i, j, n    n = NumberOfArrayDimensions(arr)    If n = 1 Then        ReDim brr(LBound(arr) To UBound(arr), 1 To 1)        For i = LBound(arr) To UBound(arr)            brr(i, 1) = arr(i)        Next    Else        ReDim brr(LBound(arr, 2) To UBound(arr, 2), LBound(arr) To UBound(arr))        For i = LBound(arr) To UBound(arr)            For j = LBound(arr, 2) To UBound(arr, 2)                brr(j, i) = arr(i, j)            Next        Next    End If    Transpose2 = brrEnd FunctionPublic Function NumberOfArrayDimensions(arr As Variant) As Integer    Dim Ndx As Integer    Dim Res As Integer    On Error Resume Next    Do        Ndx = Ndx + 1        Res = UBound(arr, Ndx)    Loop Until Err.Number <> 0    NumberOfArrayDimensions = Ndx - 1End Function



        推薦閱讀:(點擊下方標題即可跳轉(zhuǎn))


        瀏覽 66
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            sese999 | 欧美老妇一级 | 成人十八禁在线观看 | 亚洲精品国产AV婷婷 | 顾美玲勾引管家 | 日屄影视 | 国产av一区二区三区 | 黑人啪啪视频 | 人妻日韩精品中文字幕 | 老熟女亂伦88AV |