如何确定单元格是否包含非西方文本? (EXCEL)

我有一个包含英文/基本拉丁字符标题的标题,例如: John Smith和非西方/扩展Unicode字符标题,例如: 黄小琥ORBjörk

如何检查B列中的单元格是“普通”英文标题还是相反?

任何指针/build议将受到感谢!

提前致谢。

你可以在VBA代码模块中input这个UDF。

 Function IsLatin(Str As String) As Boolean IsLatin = True For i = 1 To Len(Str) IsLatin = IsLatin And Abs(AscW(Mid(Str, i, 1)) - 64) < 64 Next i End Function 

然后如果您的文本在列A中,请input单元格B1 =IsLatin(A1)并填写。

…或者在Excel 2013中,您可以使用按CTRL + SHIFT + ENTER确认的数组公式:

=AND(UNICODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<128)

也从B1填充下来。

注意CODE不能用于此,因为它将unicode转换为拉丁字母,例如=CODE("α")=CODE("a")都返回63

当我在英文和日文混合的string上尝试使用@ lori_m的VBA代码时,发生溢出。 不确定的原因。 我稍微修改了一下,现在适用于我:

 Private Function is_latin(ByVal str As String) As Boolean Dim i As Integer is_latin = True For i = 1 To Len(str) If Abs(AscW(Mid(str, i, 1)) - 64) >= 64 Then is_latin = False Exit For End If Next i End Function 

第一次发现非拉丁字符时,它也会以错误退出。 这不是FOR循环中最好的编码实践types,但会加速处理更长的string。