我正在研究一個項目,該項目包含包含英文,中文或英文和中文的單元格的多個Excel文件。如何在Excel中將英文文本從中文中分離/過濾
我需要保留完全是中文的行,並把它們放在第一位。然後,我需要中文和英文兩行。只有那些只有英文的人。
我遇到以下3個函數可以幫助我標記相應的內容,但他們似乎沒有按預期工作,我不明白爲什麼。
Function ExtractChn(txt As String)
Dim i As Integer
Dim ChnTxt As String
For i = 1 To Len(txt)
If Asc(Mid(txt, i, 1)) < 0 Then
ChnTxt = ChnTxt & Mid(txt, i, 1)
End If
Next i
ExtractChn = ChnTxt
End Function
Function ExtractEng(txt As String)
Dim i As Integer
Dim EngTxt As String
For i = 1 To Len(txt)
If Asc(Mid(txt, i, 1)) >= 0 Then
EngTxt = EngTxt & Mid(txt, i, 1)
End If
Next i
ExtractEng = EngTxt
End Function
Function CheckTxt(txt)
Dim i As Integer
Dim Eng As Integer
Dim Chn As Integer
Chn = 0
Eng = 0
For i = 1 To Len(txt)
If Asc(Mid(txt, i, 1)) > 0 Then
Eng = 1
Else:
Chn = 1
End If
Next i
If Chn = 1 And Eng = 1 Then 'Contains Both Eng & Chn
CheckTxt = "BOTH"
Else:
If Chn = 1 And Eng = 0 Then 'Chn
CheckTxt = "CHN"
Else:
If Chn = 0 And Eng = 1 Then 'Eng
CheckTxt = "ENG"
End If
End If
End If
End Function
創建它們的人甚至提供了一個文件來演示函數是如何工作的。我附上的鏈接到具有安排如下文件:
Text|English part of it|Chinese part of it|ExtractEng|ExtractChn|CheckTxt
根據作者的意圖,在CheckTxt
結果應該顯示任何CH
,ENG
,或BOTH
。但是,它總是隻顯示ENG
,我不明白爲什麼。
任何想法如何使其工作?除非有更簡單的方法來「提前過濾」Excel中的內容嗎?任何幫助都感激不盡。
Test Excel file from the developer
由原始開發商編寫的代碼期待您的系統中使用[DBCS代碼頁(https://msdn.microsoft。 COM/EN-US /庫/窗/桌面/ dd317794(v = vs.85)的.aspx)。在這些系統上,[Asc](https://msdn.microsoft.com/en-us/library/office/gg264313.aspx)將返回中文字符的負整數。 –