1

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

我想以一种可以分解细胞的方式使用它a1 = "some string"

进入它的ASCII码:

像这样的东西:“ 23423423434634

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

请注意,我想专门使用公式而不是 VBA

4

4 回答 4

1

编写一个 Excel用户定义函数

该函数的伪代码如下:

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

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

=StringToASCIICodeValues(A1)

公式版本

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

  1. A1="一些字符串"
  2. A2="=MID($A$1,COLUMN(A2),1)"
  3. 将单元格 A2 中的公式拖到右侧。例如拖到 K2 some string
  4. A3="=代码(A2)"
  5. 将单元格 A3 中的公式拖到右侧。例如拖到 K3 some string
  6. A4="=A3"
  7. B4="=连接(A4,B3)"
  8. 将单元格 B4 中的公式拖到右侧。例如,拖动到单元格 K4 some string
  9. 第 4 行有值的最右边的列包含最终值。因为some string它将返回:11511110910132115116114105110103在单元格 K4
于 2010-09-21T04:54:02.810 回答
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
于 2010-09-21T07:48:59.723 回答
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

于 2010-09-20T23:44:36.170 回答
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 允许的最大公式长度的限制,这似乎是 8,192 characters

于 2015-05-22T01:18:02.933 回答