excel:我如何将单元格内容分解为CODE

时间:2010-09-20 23:33:34

标签: excel ascii worksheet-function

有一个代码函数可以为每个字母返回ASCII。

我想以一种破坏单元格a1 = "some string"

的方式使用它

进入它的ASCII码:

像这样:“23423423434634

抱歉,我不知道确切的ASCII,但你明白我的意思。

请注意,我想特别使用公式而不是VBA

4 个答案:

答案 0 :(得分:1)

撰写Excel User Defined Function

该功能的伪代码如下:

string returnValue;
for each ( char c in string)
   returnValue = returnValue + Chr(char)
return returnValue

您可以将UDF称为excell公式的一部分,例如

=StringToASCIICodeValues(A1)

公式版

您可以使用excel内置公式手动执行( excel没有公式的for循环函数

  1. A1 =“some string”
  2. A2 = “= MID($ A $ 1,列(A2),1)”
  3. 将单元格A2中的公式拖到右侧。拖动到K2以获取some string示例。
  4. A3 = “= CODE(A2)”
  5. 将单元格A3中的公式拖到右侧。拖动到K3以获取some string示例。
  6. A4 = “= A3”
  7. B4 = “= CONCATENATE(A4,B3)”
  8. 将单元格B4中的公式拖到右侧。拖动到单元格K4以获取some string示例。
  9. 第4行中包含值的最右列包含最终值。对于some string,它将返回:单元格K4中的11511110910132115116114105110103

答案 1 :(得分:1)

一种方法是使用字节数组为每个字符提供Unicode编号对:

Sub ByteArray()
    Dim aByte() As Byte
    Dim str1 As String<
    Dim j As Long
    str1 = "ABC"
    aByte = str1
    For j = LBound(aByte) To UBound(aByte)
        MsgBox aByte(j)
    Next j
End Sub

答案 2 :(得分:0)

    string someText = "some string";
    CharEnumerator ce = someText.GetEnumerator();
    int counter = 0;
    while (ce.MoveNext())
    {
        char letter = someText[counter];
        //Call the function to get the ascii
        GetAsciiValue(letter);
        //Do something

        counter++;
    }

这可能会对你有所帮助。

问候,J'Sinh

答案 3 :(得分:0)

虽然它很难看,如果你的琴弦不长,你可以用一个很长的公式来做,它可以转换每个角色,然后将它们连接在一起。

例如,此公式可以处理长度不超过20个字符的字符串(创建十六进制ascii代码):

=if(len(A1)>=1,DEC2HEX(CODE(MID(A1,1,1))),"")&
if(len(A1)>=2,DEC2HEX(CODE(MID(A1,2,1))),"")&
if(len(A1)>=3,DEC2HEX(CODE(MID(A1,3,1))),"")&
if(len(A1)>=4,DEC2HEX(CODE(MID(A1,4,1))),"")&
if(len(A1)>=5,DEC2HEX(CODE(MID(A1,5,1))),"")&
if(len(A1)>=6,DEC2HEX(CODE(MID(A1,6,1))),"")&
if(len(A1)>=7,DEC2HEX(CODE(MID(A1,7,1))),"")&
if(len(A1)>=8,DEC2HEX(CODE(MID(A1,8,1))),"")&
if(len(A1)>=9,DEC2HEX(CODE(MID(A1,9,1))),"")&
if(len(A1)>=10,DEC2HEX(CODE(MID(A1,10,1))),"")&
if(len(A1)>=11,DEC2HEX(CODE(MID(A1,11,1))),"")&
if(len(A1)>=12,DEC2HEX(CODE(MID(A1,12,1))),"")&
if(len(A1)>=13,DEC2HEX(CODE(MID(A1,13,1))),"")&
if(len(A1)>=14,DEC2HEX(CODE(MID(A1,14,1))),"")&
if(len(A1)>=15,DEC2HEX(CODE(MID(A1,15,1))),"")&
if(len(A1)>=16,DEC2HEX(CODE(MID(A1,16,1))),"")&
if(len(A1)>=17,DEC2HEX(CODE(MID(A1,17,1))),"")&
if(len(A1)>=18,DEC2HEX(CODE(MID(A1,18,1))),"")&
if(len(A1)>=19,DEC2HEX(CODE(MID(A1,19,1))),"")&
if(len(A1)>=20,DEC2HEX(CODE(MID(A1,20,1))),"")

对于较长的字符串,您可以重复此模式,尽管您受限于Excel允许的最大公式长度which seems to be 8,192 characters