获取Excel或OfficeCalc中字符串的Unicode(USC-2)值

获取Excel或OfficeCalc中字符串的Unicode(USC-2)值,excel,unicode,openoffice-calc,Excel,Unicode,Openoffice Calc,我正在尝试使用API进行消息传递。对于我的特定应用程序,在使用API之前,我需要获取所有字符的USC-2值。 请说明如何为给定字符串的所有字符获取USC-2值。对于我的应用程序,我将在电子表格的一个单元格中键入字符串,并希望在键入时在另一个单元格中看到字符串的USC-2值 示例:如果我键入“नमस्ते" 在一个单元格中,我应该得到“0928”的输出‎092E‎0938‎094D‎0924‎0947“在另一个单元格中 在excel和OfficeCalc中有一个函数“UNICODE”,其功能类似,

我正在尝试使用API进行消息传递。对于我的特定应用程序,在使用API之前,我需要获取所有字符的USC-2值。 请说明如何为给定字符串的所有字符获取USC-2值。对于我的应用程序,我将在电子表格的一个单元格中键入字符串,并希望在键入时在另一个单元格中看到字符串的USC-2值

示例:如果我键入“नमस्ते" 在一个单元格中,我应该得到“0928”的输出‎092E‎0938‎094D‎0924‎0947“在另一个单元格中

在excel和OfficeCalc中有一个函数“UNICODE”,其功能类似,但它仅适用于字符串的第一个字符。我想将整个字符串转换为4位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的类似:

  • 在单元格B1中,输入
    =IF(LEN($A$1)>=ROW(),DEC2HEX(UNICODE(MID($A$1,ROW(),1)),4),“”)
  • 将此公式填入B30行
  • 在单元格C1中,输入公式
    =串联(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)
  • 现在在单元格A1中输入要转换的字符串。该字符串最多可用于30个字符

    请记住,在最新版本的LibreOffice(我认为还有Excel)中,可以按Alt+x查看字符的Unicode值


    当然,这在Perl中会更容易。

    我的答案与@Axel Richter的类似:

  • 在单元格B1中,输入
    =IF(LEN($A$1)>=ROW(),DEC2HEX(UNICODE(MID($A$1,ROW(),1)),4),“”)
  • 将此公式填入B30行
  • 在单元格C1中,输入公式
    =串联(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)
  • 现在在单元格A1中输入要转换的字符串。该字符串最多可用于30个字符

    请记住,在最新版本的LibreOffice(我认为还有Excel)中,可以按Alt+x查看字符的Unicode值


    当然,这在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。