我想将一系列数字(和单个数字)从纯数字格式转换为字母数字格式。整个语句位于单个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或
screen B1-B3,B5,B7-B9,B11-B24,C1-C6,C8-C13,C15-C16,C17,C20-C22或
screen B1-B3,B5,B7-B9,B11-B24
screen C1-C6,C8-C13,C15-C16,C17,C20-C22使用excel函数被证明是相当麻烦的,所以excel宏会更好。我已经寻找了请求转换的示例,但没有找到任何东西。
任何帮助都是非常感谢的。
干杯,
鲍勃
发布于 2018-06-27 07:38:23
嘿,这是我测试过的解决方案。不确定"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 Functionhttps://stackoverflow.com/questions/51051308
复制相似问题