基本上,我只需要在大写字母范围内保留一些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)。
答案 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
这将生成以下
您可以查看D new ASCII
列中的公式,该公式应为(表格D2 )
=CHAR(IF(C2+A2<65,91-(65-(C2+A2)),IF(C2+A2>90,65+(C2+A2-91),C2+A2)))