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
    Next

End Sub
程序都执行完了,再核对一下,对特殊的几个号码再处理一下就OK了。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。