• 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了。



  • 相关阅读:
    [ZROI 9.16模拟赛] Tutorial
    [ZROI 9.15模拟赛] Tutorial
    [USACO 2017 Open Gold] Tutorial
    [USACO 2017 Feb Gold] Tutorial
    [USACO 2017 Jan Gold] Tutorial
    [BZOJ 1208] 宠物收养所
    [BZOJ 1500] 维护序列
    多表查询
    sql查询语句查询顺序
    单表查询
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7200001.html
Copyright © 2020-2023  润新知