VBA 把电信的电话费用表转换成部门电话费用明细表(图文)

今天同事要做一个这样的工作,就是把电信发来的费用表,转换成按部门划分的电话费用表,100多部电话,如果一个个去核对,真还是需要些时间的。问题来了,有更好的方法么,我们来看一下。

电信公司给的费用明细是这个样子的,单个号码与费用合计并不在一起。

先通过Excel的筛选功能,去掉号码的空格行,这样把号码和费用放的近一点,因为中间的数据行数不是固定的,这样至少只差一行,就好办多了。

由于错开一行,把费用行数据整体剪切上移一行即可与号码在同一行。再把没有用的行列删除即可。

这是转换后的结果,如A列和C列。由于部门费用表中并没有区号显示,所以两者进行对接需要对号码进行处理一下,这不把A列截取右边8位即可。有一个宽带号码特殊的情况,需要手动处理一下。

这个就是部门费用表,上面的数据需要对应号码更新费用到下面这个表里面。原来的两张费用表用着不方便先放到一个Sheet中,这样查找起来方便多了。

写一个VBA的程序,对整理的号码进行循环,然后在部门号码表里查找,找到的话就将右边的值进行替换。这里面进行了一个出错的处理,否则如果不处理的话有找不到号码的时候就会报错而执行不下去。

Sub getDate()    On Error Resume Next                                         '不报错继续执行        For cln = 1 To 147            PhoneNumber = Sheets("sheet1").Cells(cln, 2)            money = Sheets("sheet1").Cells(cln, 3)                                         Dim rng As Range            Set rng = Worksheets("总公司").Range("E1:E187").Find(PhoneNumber, , , 1)                      ' MsgBox (rng.Address)                        rng.Offset(0, 1).Value = money                        '向右偏移一列即为费用值                If Err.Number = 0 Then                Sheets("sheet1").Cells(cln, 4) = "OK"             '成功标识                            End If                        If Err.Number <> 0 Then                Sheets("sheet1").Cells(cln, 4) = "Error"          '错误标识,重点查看即可                Err.Number = 0            End If    NextEnd Sub

程序都执行完了,再核对一下,对特殊的几个号码再处理一下就OK了。每天告诉自己我很棒!

VBA 把电信的电话费用表转换成部门电话费用明细表(图文)

相关文章:

你感兴趣的文章:

标签云: