【发布时间】:2015-12-01 08:29:40
【问题描述】:
我需要从数字创建代码。
例如。如果我们定义
A as 1
B as 2
...
J as 9
K as 0
如果单元格的值为 499,则应返回等效代码“DJJ”。
【问题讨论】:
-
向我们展示您的尝试。还请告诉我们更多关于您的单元格的信息:它们总是 3 位数字吗?
标签: excel-formula
我需要从数字创建代码。
例如。如果我们定义
A as 1
B as 2
...
J as 9
K as 0
如果单元格的值为 499,则应返回等效代码“DJJ”。
【问题讨论】:
标签: excel-formula
首先,在 ASCII 表中找到与数字“1”相关的字符:
=CHAR(1)
这将为您提供与 ASCII 代码 1 相关的字符。现在找到 A 的代码 #,然后将其添加到您的结果中:
=CODE("A")
这将为您提供与字母“A”相关的 ASCII 码。如果您对其进行测试,您将看到 ASCII 表有一个特定的顺序。它按字母顺序排列小写字母,按顺序排列数字,按字母顺序排列大写字母(特殊字符以特定方式随处可见)。这种排序允许您找到字母“A”之后的字母,只需添加 1、2 等 - 即:
=CHAR(A1+CODE("A")-1)
这将为您提供与在 A1 中找到的数字相关联的字符,从“A”字符在 ASCII 表中的位置开始。
最后,假设 A1 包含一个 3 位数字。要将上述内容整合到一个有凝聚力的公式中,我们只需要应用它 3 次,每个单词中的每个字符一次。我们可以使用 LEFT、MID 和 RIGHT 函数来做到这一点,如下所示:
=CHAR(LEFT(A1)+CODE("A")-1) & CHAR(MID(A1,2,1)+CODE("A")-1) & CHAR(RIGHT(A1)+CODE("A")-1)
这首先获取在 A1 中找到的最左边的字符(例如,数字 5),并将其添加到字母“A”的 ASCII 代码中。然后它返回 ASCII 表 [5 - 1 + CODE("A")] 中 "A" 右侧 4 位的字符。然后它对 A1 中的第二个字符(比如数字 6)执行此操作。然后它对 A1 中最右边的字符(比如数字 0)执行此操作。
这个方法没有错误检查;它假定 A1 始终包含一个 3 位数字,格式不带小数。
请注意,此方法使 0 = 到 A。我将由您决定是否要将所有数字向右移动,以便 1 = A 和 0 = K。
【讨论】: