excel中一个字代表几个数字,如我(1,2,3),爱(4,5,6),你(7,8,9),

,A1输入我爱你,B1就显示1,2,3,4,5,6,7,8,9

如果输入的字不是太多,例如最多三五个,可以使用VLOOKUP(MID(A1,1,1),...)&VLOOKUP(MID(A1,2,1),...)&VLOOKUP(MID(A1,3,1),...)这样的公式,如果长度不是固定的,后面的几个VLOOKUP要套一个IF(LEN(A1)>=2,...,...)防止错误。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-01-23

您好,如果字符长度比较小,字库不多,那么用MID函数分解A1单元格,用VLOOKUP函数来检索查找字库,用&连接符链接每个查找到的字符,例如=VLOOKUP(MID(A1,1,1),Sheet2!A:B,2,false) & "," & VLOOKUP(MID(A1,2,1),Sheet2!A:B,2,false)  & "," & VLOOKUP(MID(A1,3,1),Sheet2!A:B,2,false) 

其中Sheet2!A:B为字库文件

如果字数比较多的话,可以使用VBA编程,如:

代码如下,此时改变单元格A1的数值,在B1自动会计算出您要的答案。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then
m = Len(Cells(1, 1))
Dim a() As String   '建立两个动态数组为字库
Dim b() As String
For k = 1 To m     '使用for循环将单元格内字符分组
        If Cells(1, 1) <> "" Then
        ReDim Preserve a(k - 1)   '确定动态数组下标
        a(k - 1) = Mid(Cells(1, 1), k, 1)  '分解A1单元格,每个字符为字库中每一个字
        End If
Next


ReDim Preserve b(k - 2)   '确定动态数组下标
For i = 0 To k - 2
Select Case a(i)   '用Select赋值字库中每一个字
Case "我"
b(i) = "1,2,3"
Case "爱"
b(i) = "4,5,6"
Case "你"
b(i) = "7,8,9"
End Select
If c <> "" Then
c = c & "," & b(i)
Else
c = b(i)
End If
Next
Cells(1, 2) = c
End If
End Sub

本回答被提问者采纳
第2个回答  2018-01-23
首先你得找个地方存放你的编码,比如说你在sheet2表中A:B两列存放,A列存放汉字,B列存放对应的编码。
sheet1中进行你要的操作,由于你将要输入的文字数并不确定,不建议用函数的形式来完成,你可以在Sheet_change事件中来完成你所要的操作
Private Sub Worksheet_Change(ByVal Target As Range)
Dim str_wen As String, str_ma As String
Dim i As Integer
If Not Application.Intersect(Target, Range("A:A")) Is Nothing And Target.Count = 1 Then
str_wen = Target.Value
On Error GoTo 100
For i = 1 To Len(str_wen)
str_ma = str_ma & Sheet2.Range("A:A").Find(Mid(str_wen, i, 1)).Offset(, 1)
Next
End If
Target.Offset(, 1) = str_ma
Exit Sub

100 MsgBox """" & Mid(str_wen, i, 1) & """" & "字未能找到对应代码"
End Sub
相似回答