包含范围(数字)到字母数字的文本的 Excel 转换



我想将一系列数字(和个位数(从纯数字格式转换为字母数字格式。 整个语句位于单个 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

最新更新