使用VBA在Excel中过滤区域代码

需要一些帮助。 我做了脚本/编码已经很长时间了,现在真的很生疏。

问题:我有一个电子表格(Excel Visual Basic),包含一个月以上的电话(超过3万条logging)。 我的目标是过滤掉具有特定区号(免费电话,本地电话等)的呼叫,并计算他们从呼叫长途电话所欠的电话费用。

此外,这是一个退休之家,最终用户不能正确input电话号码。 我需要在数字的起始处去掉3-4个数字

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

这里是我现在的代码,我迷失在如何将3-4位数字合并到该区域,并且使用前3-4位数字parsingH列中的每条logging

电话号码存储在列H中

arraysTFL将存储我需要过滤掉的所有地区代码。

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 

我个人使用这个正则expression式:

 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正则expression式5.5的引用。