Excel:如何将ASCII数字保持在一定范围内?

时间:2013-10-24 07:13:14

标签: excel ascii

基本上,我只需要在大写字母范围内保留一些ASCII数字。

我的程序有很多字符,然后被转换为ASCII码。然后我在这个ASCII码中添加-5到5之间的随机数,然后将其转换回字符形式。虽然,如果字符是Z(ASCII码90),我不希望它转换为符号。它将以某种方式需要从65开始(即A)。

如果字符为A(ASCII代码65)并且应用了-5,则相同。

老实说,我不知道该怎么做。用一个简单的if语句对它进行了破解,但我一直遇到错误。

以下是我的工作表的外观:

              A              B         C
      ______________________________________
   1 |  random-number   |  Letter |  ASCII
   2 |                  |    Z    |    90
   3 |                  |    A    |    80
   4 |                  |    T    |    84
   5 |                  |    V    |    86
   6 |                  |    W    |    87
   7 |                  |    E    |    69

如果random-number等于5,ASCII列中的每个数字都会加5,然后转换回另一个单元格中的字符格式。

基本上,简单来说,如果ASCII代码等于65,则使其等于90(如果它等于A之前的一个,使其等于Z),如果ASCII代码等于91,则使其等于65(如果等于1)在Z之后,使其等于A)。

1 个答案:

答案 0 :(得分:1)

我使用此宏来自动执行整个过程,因此请在新工作簿上运行以测试它。

Sub Main()

    Dim i As Long

    Columns("A:A").NumberFormat = "0"
    Range("A1") = "random number"
    Range("B1") = "letter"
    Range("C1") = "ASCII"
    Range("D1") = "new ASCII"
    Columns("A:D").HorizontalAlignment = xlCenter

    For i = 2 To 27
        Range("B" & i) = Chr(i + 63)
        Range("C" & i) = i + 63
        Range("A" & i) = Int((5 - (-5) + 1) * Rnd + (-5))
        Range("D" & i).Formula = _
            "=CHAR(IF(C" & i & "+A" & i & "<65,91-(65-(C" & i & "+A" & i & "))," & _
            "IF(C" & i & "+A" & i & ">90,65+(C" & i & "+A" & i & "-91),C" & i & "+A" & i & ")))"
    Next i
    Columns.AutoFit
End Sub

这将生成以下

enter image description here

您可以查看D new ASCII列中的公式,该公式应为(表格D2

=CHAR(IF(C2+A2<65,91-(65-(C2+A2)),IF(C2+A2>90,65+(C2+A2-91),C2+A2)))