我想将一系列数字(和个位数(从纯数字格式转换为字母数字格式。 整个语句位于单个 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 宏会更好。 我寻找了请求转换的示例,但没有找到任何东西。
任何帮助将不胜感激。
干杯
鲍勃
嘿,这是我测试的解决方案。 不确定"屏幕"是否需要在字符串中。 让我知道,如果是这种情况,我会调整它。
它是一个用户定义的函数。 因此,将此 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