如何确定单元格是否包含非西方文本? (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。