如何删除所有前导字母字符?

时间:2016-03-16 18:27:54

标签: excel excel-vba vba

我有兴趣从列中出现的单元格中删除前导字母(alpha)字符。我只希望删除前导字母字符(包括UPPER和LOWER情况):如果字母字符出现在数字后面,则应保留它们。列中的某些单元格可能没有前导字母字符。

以下是我的例子:

36173
PIL51014
4UNV22001
ZEB54010
BICMPAFG11BK
BICMPF11

请注意,前导字母字符的数量并不总是相同。我不能简单地在Excel中使用左或右功能,因为我希望保留和删除的字符数会有所不同。

我正在寻找的正确输出如下:

36173
51014
4UNV22001
54010
11BK
11

注意第二行到最后一行如何保留字符“BK”,第三行保留“UNV”。我不能简单地删除所有字母字符。

我是Visual Basic的初学者,无法弄清楚如何使用excel函数来解决我的问题。我该怎么做?

4 个答案:

答案 0 :(得分:3)

这是一个Excel公式,它将删除前导字母字符"实际上,它会查找第一个数字字符,然后返回所有内容:

select t1.function, avg(t1.salary)
from (select 
       rank() over(order by avg(salary) desc) rnk_high
      ,rank() over(order by avg(salary)) rnk_low
      ,function 
      from tablename
      group by function) t 
join tablename t1 on t.function = t1.function
where rnk_high = 1 or rnk_low = 1
group by t1.function

最后的=MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&"0123456789")),99) 需要比您可能正在处理的最长字符串长一些值。 99通常有效。

答案 1 :(得分:3)

这是一个基于公式的解决方案,包含测试结果:

reduce(lambda (c,s), a: (c + [{'value':s+a['value'], 'date':a['date']}], s+a['value']), some_data,([],0))[0]

>>> [{'date': '2016-02-06', 'value': 2},
    {'date': '2016-02-07', 'value': 3},
    {'date': '2016-02-08', 'value': 8},
    {'date': '2016-02-09', 'value': 11},
    {'date': '2016-02-10', 'value': 12}]

enter image description here

如果任何字符串长度超过100个字符,请更改末尾的=MID(A1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"),255),100) 。另外255不需要,但它不会受到伤害。

答案 2 :(得分:2)

这个简短的UDF应该删除前导字母字符。

Function noLeadAlpha(str As String)
    If Not IsNumeric(str) Then
        Do While Asc(str) < 48 Or Asc(str) > 57
            str = Mid(str, 2)
            If Not CBool(Len(str)) Then Exit Do
        Loop
    End If
    noLeadAlpha = str
End Function

udf_no_leading_alphas

答案 3 :(得分:0)

Koodos Jeeped,你打败了我。

但无论如何,这是另一种选择:

Function RemoveAlpha(aString As String) As String

    For i = 1 To Len(aString)
        Select Case Mid(aString, i, 1)
            Case "0" To "9"
                RemoveAlpha = Right(aString, Len(aString) - i + 1): Exit For
        End Select
    Next i

End Function