excel中一个字代表几个数字,如我(1,2,3),爱(4,5,6),你(7,8,9),
发布网友
发布时间:2023-02-23 14:00
我来回答
共3个回答
热心网友
时间:2024-10-28 17:23
如果输入的字不是太多,例如最多三五个,可以使用VLOOKUP(MID(A1,1,1),...)&VLOOKUP(MID(A1,2,1),...)&VLOOKUP(MID(A1,3,1),...)这样的公式,如果长度不是固定的,后面的几个VLOOKUP要套一个IF(LEN(A1)>=2,...,...)防止错误。
热心网友
时间:2024-10-28 17:24
您好,如果字符长度比较小,字库不多,那么用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
热心网友
时间:2024-10-28 17:24
首先你得找个地方存放你的编码,比如说你在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