如何使用单独表格中定义的数字替换单元格中的字母

如何使用单独表格中定义的数字替换单元格中的字母

我有一个单元格,其中混合了数字和字母(例如AA12CC45WR),并且它们是随机的。

在另一张表上,我有一张表格,其中每个字母都有等价内容,如(单元格A1B1

A=1
C=25
W=66
R=77 

ABC 字母直到 Z

解决方案应该是11122525456677

如何生成一个函数来用另一张表中定义的数字替换所有字母?

答案1

这是一个进行解码的函数。将其放在模块中并根据需要更新 Range 引用。如果单元格A1有原始“代码”值,请在另一个单元格中输入公式:=Decode(A1)以获取“解码”值。

Public Function Decode(Code As String) As String
    Dim iIdx As Integer
    Dim sChar As String
    Dim sResult As String
    For iIdx = 1 To Len(Code)
        sChar = UCase$(Mid$(Code, iIdx, 1))
        If Asc(sChar) >= 65 And Asc(sChar) <= 90 Then
            sChar = WorksheetFunction.VLookup(sChar, Worksheets("Sheet2").Range("A1:B26"), 2, False)
        End If
        sResult = sResult & sChar
    Next iIdx
    Decode = sResult
End Function

答案2

如果今天(2020 年)感兴趣:

如果需要的话,可以使用以下公式:

=TEXTJOIN("",FALSE,VLOOKUP(MID(A1,SEQUENCE(LEN(A1)),1),$F$1:$G$36,2,FALSE))

它假设输入值在 A1 中,并使用一个有两列的查找表,左列包含从 0-9 到 AZ 的文本字符(36 行),最右边的列单元格中首先是公式 =F_。这些将被替换为字母的值(尽管 0-9 条目可能不会),就像人们定义的那样(立即替换所有字母,或者随着时间的推移,现在替换几个字母,然后替换几个字母,因此任何未分配数值的字母都会替换自身。该表是 F1:G36。

根据需要修改源和查找表地址。

如果需要,还可以使用TEXTJOIN()分隔符(可能是连字符)来分隔每个原始字符的值。其他将它们连接/重新连接在一起的方法会比较困难。

在 2011 年,人们会使用CONCATENATE() or union-ing withROW() in place ofSEQUENCE() though notLEN(A1)`,所以这也会变得更加困难。

相关内容