通过VBA

时间:2016-06-17 16:37:02

标签: excel vba excel-vba

需要一些帮助。自从我完成脚本/编码并且现在真的生锈以来已经很长时间了。

问题:我有一个电子表格(Excel Visual Basic),其中包含一个月内的电话(超过30k的记录)。我的目标是过滤掉具有特定区号(免费电话,本地电话等)的电话,并计算他们拨打长途电话所需的金额。

此外,这是一个养老院,最终用户没有正确输入电话号码。我需要在数字开头处删除3-4位数字。

示例:1800-XXX-XXXX或800-XXX-XXXX | 1605-XXX-XXXX

这是我目前的代码,我迷失在如何将3-4位数字合并到该区域并让它解析H列中的每个记录前3-4位

电话号码存储在第H列

数组TFL将存储我需要过滤掉的所有区号。

Sub CleanEntry()
Dim i As Integer
Dim TFL As Variant
TFL = Array("1800", "1877")

For i = Sheet1.UsedRange.Rows.Count To 1 Step -1

If Left(Cells(i, "H"), 4) Like TFL(i) Then
Sheet1.Rows(i).EntireRow.Delete
End If

Next

End Sub

1 个答案:

答案 0 :(得分:1)

我个人使用正则表达式:

Sub CleanEntry()
    Dim i As Integer

    Dim filter As New RegExp
    filter.Pattern = "^1?(8(77|00))|605" 'Or whatever else you need to match.

    For i = Sheet1.UsedRange.Rows.Count To 1 Step -1
        If filter.Test(Trim$(Cells(i, "H").Value)) Then
            Sheet1.Rows(i).EntireRow.Delete
        End If
    Next
End Sub

注意:您需要添加对Microsoft VBScript正则表达式5.5的引用。