我想将一系列数字(和个位数)从仅数字格式转换为字母数字格式。整个语句位于单个excel单元格中,并且希望转换后的版本位于相邻的单元格中。
例如:
Assuming 1-24=B1-B24
Assuming 25-48=C1-C24
输入-
screen 1-3,5,7-9,11-30,32-37,39-40,41,44-46
期望的输出(全部可接受)
screen B1-B3,B5,B7-B9,B11-C6,C8-C13,C15-C16,C17,C20-C22
OR
screen B1-B3,B5,B7-B9,B11-B24,C1-C6,C8-C13,C15-C16,C17,C20-C22
OR
screen B1-B3,B5,B7-B9,B11-B24
screen C1-C6,C8-C13,C15-C16,C17,C20-C22
事实证明,使用excel函数非常麻烦,因此excel宏会更好。我在寻找请求转换的示例,但没有找到任何内容。
非常感谢您的帮助。
干杯
鲍勃
答案 0 :(得分:1)
嘿,这是我测试过的解决方案。不知道“ screen”是否需要在字符串中。让我知道,如果是这种情况,我会进行调整。
它是用户定义的功能。因此,将此vba放到模块中,然后转到工作表并键入“ = AlphaConvert(” +单元格引用。
这里的假设是一次只能引用一个单元格。
最后,可以轻松地将其转换为子例程,并且运行速度可能比该函数快一点。
Public Function AlphaConvert(TargetCell As Range)
Dim v As Long
Dim vArr() As String
Dim i As Long
Dim iArr() As String
Dim a As String
vArr = Split(TargetCell.Value, ",")
For v = LBound(vArr) To UBound(vArr)
If InStr(vArr(v), "-") > 0 Then
iArr = Split(vArr(v), "-")
For i = LBound(iArr) To UBound(iArr)
If i = LBound(iArr) Then
a = AlphaCode(iArr(i))
Else
a = a & "-" & AlphaCode(iArr(i))
End If
Next i
vArr(v) = a
Else
vArr(v) = AlphaCode(vArr(v))
End If
If v = LBound(vArr) Then
AlphaConvert = vArr(v)
Else
AlphaConvert = AlphaConvert & "," & vArr(v)
End If
Next v
End Function
Private Function AlphaCode(Nbr As Variant)
Select Case Nbr
Case 1 To 24
AlphaCode = "B" & Nbr
Case Else
AlphaCode = "C" & Nbr - 24
End Select
End Function