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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdXBpMnU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

先通过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了。

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

  1. 数据库表转换成javaBean对象小工具

    package test.utils; import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter; ...

  2. SQL Server 2005中的分区表(三):将普通表转换成分区表(转)

    在设计数据库时,经常没有考虑到表分区的问题,往往在数据表承重的负担越来越重时,才会考虑到分区方式,这时,就涉及到如何将普通表转换成分区表的问题了. 那么,如何将一个普通表转换成一个分区表 呢?说到底, ...

  3. SQL Server 2005中的分区表(三):将普通表转换成分区表

    在设计数据库时,经常没有考虑到表分区的问题,往往在数据表承重的负担越来越重时,才会考虑到分区方式,这时,就涉及到如何将普通表转换成分区表的问题了. 那么,如何将一个普通表转换成一个分区表 呢?说到底, ...

  4. 使用Sql语句快速将数据表转换成实体类

    开发过程中经常需要根据数据表编写对应的实体类,下面是使用sql语句快速将数据表转换成对应实体类的代码,使用时只需要将第一行'TableName'引号里面的字母换成具体的表名称就行了: declare ...

  5. ORACLE普通表转换成分区表

    转http://mp.weixin.qq.com/s?__biz=MzAwMjkyMjEwNg==&mid=2247484761&idx=1&sn=ce080581145931 ...

  6. SQL Server单表已700w+将普通表转换成分区表

    最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话.下面简要说一下将普通表转为分区表的步骤.   一.创建文件组 ...

  7. SQL Server单表已700w+将普通表转换成分区表1

    最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话.下面简要说一下将普通表转为分区表的步骤.   一.创建文件组 ...

  8. Mysql 表转换成 Sqlite表

    目前的转换仅仅支持对没有外键的Mysql数据表 准备: 下载安装 Sqlite Expert 软件 一 获取Mysql中的.sql文件,获取过程省略可以直接导出sql文件 二 在Sqlite Expe ...

  9. 数据表转换成json(DatatableToJson)

    #region 转换Table为JSON数据 /// <summary> /// 转换Table为JSON数据 /// </summary> /// <param nam ...

随机推荐

  1. python datetime,time时间格式和用法

    我是转载的这个大神的   他的网址:https://www.cnblogs.com/wanglinjie/p/9226926.html #以下是time的方法 >>> import ...

  2. LeetCode(111) Minimum Depth of Binary Tree

    题目 Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the s ...

  3. LeetCode(39) Combination Sum

    题目 Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C w ...

  4. cs231n课程索引

    课程资源 课程官网 课程视频-youtube 课程视频-字幕版 官方笔记 官方笔记-中文版 课程作业参考答案

  5. linux相关技术

    1.查询服务器tcp连接状态及连接数 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

  6. iOS阴影

    但是如果把masksToBounds设置为yes就没有阴影了     UIButton *view = [[UIButton alloc]initWithFrame:CGRectMake(, , ,  ...

  7. KD-Tree 的笔记

    声明: 蒟蒻对于 KD-Tree 的一点理解,写在博客里面作为笔记. 1.KD-Tree 的定义 1)关于 K-D KD-Tree 中的 D 即为 Dimension ,意思也就是维度. 所以 KD- ...

  8. springmvc接口接收json类型参数设置

    Springmvc需要如下配置: 1.开启注解 <!-- 开启注解--> <mvc:annotation-driven /> 2.加入相关bean <bean class ...

  9. 洛谷 [P3205] 合唱队

    区间DP 手动模拟一下,我们发现本题就是一个左右加数的区间DP #include <iostream> #include <cstdio> #include <cstri ...

  10. Security arrangements for extended USB protocol stack of a USB host system

    Security arrangements for a universal serial bus (USB) protocol stack of a USB host system are provi ...