获取Excel或OfficeCalc中字符串的Unicode(USC-2)值
我正在尝试使用API进行消息传递。对于我的特定应用程序,在使用API之前,我需要获取所有字符的USC-2值。 请说明如何为给定字符串的所有字符获取USC-2值。对于我的应用程序,我将在电子表格的一个单元格中键入字符串,并希望在键入时在另一个单元格中看到字符串的USC-2值 示例:如果我键入“नमस्ते" 在一个单元格中,我应该得到“0928”的输出092E0938094D09240947“在另一个单元格中 在excel和OfficeCalc中有一个函数“UNICODE”,其功能类似,但它仅适用于字符串的第一个字符。我想将整个字符串转换为4位UNICODE值获取Excel或OfficeCalc中字符串的Unicode(USC-2)值,excel,unicode,openoffice-calc,Excel,Unicode,Openoffice Calc,我正在尝试使用API进行消息传递。对于我的特定应用程序,在使用API之前,我需要获取所有字符的USC-2值。 请说明如何为给定字符串的所有字符获取USC-2值。对于我的应用程序,我将在电子表格的一个单元格中键入字符串,并希望在键入时在另一个单元格中看到字符串的USC-2值 示例:如果我键入“नमस्ते" 在一个单元格中,我应该得到“0928”的输出092E0938094D09240947“在另一个单元格中 在excel和OfficeCalc中有一个函数“UNICODE”,其功能类似,
-第6页-第6.2节没有宏的唯一解决方案是使用辅助单元格 范例 公式: 在
B1
中:
=MID($A1,COLUMN(A1),1)
复制到右侧,直到结果为空
在B2
中:
=DEC2HEX(UNICODE(B1),4)
复制到右侧,直到出现#值错误
在B3
中:
=B2
在C3
中:
=B3&C2
复制到右侧,直到出现#值错误
使用以下用户定义函数(Excel VBA),可以使用
=ucscode(A1)
在一个牢房里
功能:
Public Function ucscode(s As String) As String
For i = 1 To Len(s)
ucscode = ucscode & Application.Dec2Hex(AscW(Mid(s, i, 1)), 4)
Next
End Function
使用Openoffice Calc,公式解决方案将与Excel相同。当然,错误为Err:504,而不是#值 使用starbasic的用户定义函数可以是:
Public Function ucscode(s As String) As String
Dim sresult as String
For i = 1 To Len(s)
sresult = sresult & right("0000" & hex(asc(mid(s, i,1))), 4)
Next
ucscode = sresult
End Function
没有宏的唯一解决方案是使用辅助单元格 范例 公式: 在
B1
中:
=MID($A1,COLUMN(A1),1)
复制到右侧,直到结果为空
在B2
中:
=DEC2HEX(UNICODE(B1),4)
复制到右侧,直到出现#值错误
在B3
中:
=B2
在C3
中:
=B3&C2
复制到右侧,直到出现#值错误
使用以下用户定义函数(Excel VBA),可以使用
=ucscode(A1)
在一个牢房里
功能:
Public Function ucscode(s As String) As String
For i = 1 To Len(s)
ucscode = ucscode & Application.Dec2Hex(AscW(Mid(s, i, 1)), 4)
Next
End Function
使用Openoffice Calc,公式解决方案将与Excel相同。当然,错误为Err:504,而不是#值 使用starbasic的用户定义函数可以是:
Public Function ucscode(s As String) As String
Dim sresult as String
For i = 1 To Len(s)
sresult = sresult & right("0000" & hex(asc(mid(s, i,1))), 4)
Next
ucscode = sresult
End Function
我的答案与@Axel Richter的类似:
=IF(LEN($A$1)>=ROW(),DEC2HEX(UNICODE(MID($A$1,ROW(),1)),4),“”)
=串联(B1、B2、B3、B4、B5、B6、B7、B8、B9、B10、B11、B12、B13、B14、B15、B16、B17、B18、B19、B20、B21、B22、B23、B24、B25、B26、B27、B28、B29、B30)
当然,这在Perl中会更容易。我的答案与@Axel Richter的类似:
=IF(LEN($A$1)>=ROW(),DEC2HEX(UNICODE(MID($A$1,ROW(),1)),4),“”)
=串联(B1、B2、B3、B4、B5、B6、B7、B8、B9、B10、B11、B12、B13、B14、B15、B16、B17、B18、B19、B20、B21、B22、B23、B24、B25、B26、B27、B28、B29、B30)
当然,这在Perl中会更容易。仅使用工作表公式是不可能的。需要一种宏编程语言。您可以使用哪种编程语言?为什么使用Excel标记?Excel使用VBA也是一种选项吗?希望在Excel中执行此操作,因为已将其用于上述应用程序。还希望从输入中绘制动态数据字符串,如字符数和实际使用的SMSE数量。此外,它将能够存储我的收件人列表。在获取excel中的所有数据后,我计划使用perl读取excel文件并调用API。我不习惯VBAWhy向下投票,即使在excel中不可能?提供了excel解决方案。将尝试Openoffice Calc later,目前无法访问Openoffice Calc。仅使用工作表公式是不可能的。需要一种宏编程语言。什么编程语言对您有用?为什么使用Excel标记?Excel使用VBA也是一个选项吗?希望在Excel中执行此操作,因为已将其用于上述应用程序。还希望从输入中绘制动态数据字符串,如字符数和实际使用的SMSE数量。此外,它将能够存储我的收件人列表。在excel中获取所有数据后,我计划使用perl读取excel文件并调用API。我不习惯VBAWhy向下投票,即使在excel中不可能?提供了excel解决方案。将尝试Openoffice Calc稍后,暂时无法访问Openoffice Calc。