我正在努力从细胞中检测阿拉伯文本。
我正在编写一个程序,用于检测字母数字阿拉伯文字中的阿拉伯数字。
不幸的是,我无法得到它。
如果单元格只包含阿拉伯数字,那么我可以得到它,但如果单元格中的值是字母数字, 然后它被认为是完整的char。
该计划是:
Sub ReverseText()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
xValue = Rng.Value
xValue = " " & xValue
xLen = VBA.Len(xValue)
xOut = ""
yOut = ""
'Trying to reverse the arabic char
For i = 1 To xLen
getchar = VBA.Right(xValue, 1)
'Checking if String contain numbers or not
If IsNumeric(getchar) Then
xValue = VBA.Left(xValue, xLen - i)
yOut = getchar & yOut
'If not numers then check for decimal point
Else
If getchar = "." Then
xValue = VBA.Left(xValue, xLen - i)
yOut = getchar & yOut
'xOut = xOut & yOut
getchar = ""
'If not numbers then check for char other than numbers
Else
xValue = VBA.Left(xValue, xLen - i)
xOut = xOut & yOut
xOut = xOut & getchar
yOut = ""
End If
End If
Next
Rng.Value = xOut
Next
End Sub
单元格中的值是:
ARABIAN COLA CAN 355ML X 20
运行程序后,输出应为:
20 X LM355 NAC ALOC NAIBARA
这是英文版,工作正常。 现在用阿拉伯语
单元格中的值为:
٦*ﻝﻣ٣٥٥ﻛﺎﻣ ﻲﺳﺑﺑ
以及该程序的输出:
ﺑﺑﺳﻲ ﻣﺎﻛ٥٥٣ﻣﻝ*٦
字母正确地反转,但数字也是正确的,但不应该是。
我需要输出类似于英文文本。 但该计划没有检测阿拉伯数字。
我正在使用excel2011 mac。
我也在Windows 7中尝试过,但也存在同样的问题。
有人可以帮帮我吗?
答案 0 :(得分:0)
说我对阿拉伯语言一无所知(如果我说一些没有意义的事情,那就很抱歉),函数IsNumeric()
仅将数字0-9识别为数字。
我的建议是开发并添加您自己的IsArabNumeric()
功能。您可以首先将数字复制并粘贴到工作表的范围内,假设您将它们放在工作表A1:A10
的{{1}}范围内。然后,函数看起来像这样:
MySheet
所以,而不是做这个检查:
Public Function IsArabNumeric(ByVal char As String) As Boolean
For j = 1 To 10
If Sheets("MySheet").Range("A" & j).Value = char Then
IsArabNumeric = True
Exit Function
End If
Next j
IsArabNumeric = False
End Function
你会这样做,它应该工作:
'Checking if String contain numbers or not
If IsNumeric(getchar) Then
请注意:可能有更多的elegants方式,例如查看集合'Checkin if String contain arabic numbers or not
If IsArabNumeric(getchar) Then
阿拉伯数字的位置并循环遍历它们,而不是将这些值复制粘贴到单独的表格中(从编码的角度来看并不是很优雅)...但这是一个提示,你可以自己看看Chr collection并重新理解这个想法。