小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Excel 如何用VBA分離如下中英文

 hdzgx 2019-10-27
在翻譯當(dāng)中經(jīng)常要整理句庫,這就涉及到如何分離中英文。在搜索完本論壇解決方案后,還是沒有發(fā)現(xiàn)好的VBA解決方案。請高手幫忙解決。

示例:A1=1. Good to the last drop.  滴滴香濃,意猶未盡。(麥斯威爾咖啡)
分離結(jié)果:B1=Good to the last drop.        C1=滴滴香濃,意猶未盡。(麥斯威爾咖啡)

具體內(nèi)容參考附件。


首先謝謝大家!如果你有好的解決方案不妨直接與我聯(lián)系,我的聯(lián)系方式是:
QQ=1310088
vfdat@126.com

謝謝大家,尤其alzeng,收藏了。但我基礎(chǔ)較差,不明白如何實現(xiàn)的,只好慢慢琢磨。

照我的看法,是按"  ",就是原文和翻譯之間的空格分離,但只要改變這個空格大小,就失效了。不對之處,請大家指教。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rng As Range, str$, i%

    For Each rng In Range("A1", [A65536].End(3))
        str = Split(rng, "  ")(0)
        i = 0
        Do While IsNumeric(Left(str, i + 1))
            i = i + 1
        Loop

        rng.Offset(, 1) = LTrim(Right(str, Len(str) - i))
        rng.Offset(, 2) = LTrim(Split(rng, "  ")(1))
    Next

End Sub

再次謝謝alzeng,他在后面提供的下面這段代碼好極了,很完美地實現(xiàn)了我的要求,供大家參考。

Sub splt()
    Dim rng As Range, stg$, str$, i%, j%

    For Each rng In Range("A1", [A65536].End(3))
        stg = rng
        i = 1
        Do Until Mid(stg, i, 1) Like "*[一-龥]*"
            i = i + 1
        Loop
        
        str = Left(stg, i - 1)
        j = 0
        Do While IsNumeric(Left(str, j + 1))
            j = j + 1
        Loop

        rng.Offset(, 1) = Trim(Right(str, Len(str) - j))
        rng.Offset(, 2) = Trim(Right(stg, Len(stg) - i))
    Next
End Sub


根據(jù)最新的增補(bǔ)和修改,一個比較通用的代碼如下,根據(jù)alzeng提供的代碼,我斗膽做了注釋,不對之處,還請alzeng指正。再次謝謝alzeng和其他付出勞動的高手。
代碼如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rng As Range, stg$, str$, i%, j%, k%

    For Each rng In Range("A1", [A65536].End(3))
        stg = rng

        k = 1
        Do Until Mid(stg, k + 1, 1) Like "*[a-z,A-Z]*"
            k = k + 1
        Loop
'找英文的位置K
        i = 1
        Do Until Mid(stg, i + 1, 1) Like "*[一-龥]*"
            i = i + 1
        Loop
'找中文的位置I
        If i < k Then i = k               '如果中文在前,兩者的位置一樣
        str = VBA.Left(stg, i) '中英文分離位置前一位字符(i - 1),修改為直接取I,發(fā)現(xiàn)中文在前會少取最后一個中文。
        j = 0
        Do While IsNumeric(Left(str, j + 1))
            j = j + 1
        Loop
'找數(shù)字所占位數(shù)J
        rng.Offset(, 2) = Trim(Right(stg, Len(stg) - i))
        rng.Offset(, 1) = Trim(Right(str, Len(str) - j))
    Next

End Sub


結(jié)果請參考分離完整版.rar
2009.07.24

[ 本帖最后由 vfd 于 2009-7-24 08:58 編輯 ]
  • error.JPG(29.42 KB, 下載次數(shù): 13)

    錯誤圖片

    錯誤圖片

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多