注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

奕克

爱家人爱工作爱生活

 
 
 

日志

 
 

办公自动化之-城院教务系统数据格式转换任务  

2012-05-15 15:56:15|  分类: office |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
         今天同事让帮个忙,用vba搞个数据格式转换,当然处理的是一些隐私数据,这里就不上图了。但是让我联想到了以前处理过的一个任务,这类任务的处理是类似的,人来做累个半死,计算机来搞就很快。
         从城院教务系统里导出的数据都是直接的数据库中数据表记录如下:
办公自动化之-城院教务系统数据格式转换任务 - wucccsk - 天秤的存在与虚无博客

 就是每个学生一门课一条记录,当然其他数据表也是类似的,但是为了便于后期的对比分析,通常希望如下的数据:
办公自动化之-城院教务系统数据格式转换任务 - wucccsk - 天秤的存在与虚无博客

  就是每个学生的所有课是一条记录。

          这个程序的实例在(http://dl.dbank.com/c0acpakcga),我是把sheet1中的原始数据转换后写到了sheet3中,运行main这个宏前先要把sheet3中的数据清空掉。理解代码后通过更改字段坐标应该可以完成类似的任务。代码附上,非常简单,就是坐标运算有点拗,由于赶工给同事基本上没做优化和字段灵活性处理。

         拿这个例子来说明下,如果是坐办公室的人,学学vba还是有必要的,因为总能派上用场,也不见得都能找到我这样的同事帮忙是不,哈哈。。。。


代码:

Sub main()

Worksheets(3).Rows(1).NumberFormatLocal = "@"

old = ""

Index = 2

For i = 2 To Worksheets(1).UsedRange.Rows.Count

  If old <> Worksheets(1).Cells(i, 2).Value Then

    Worksheets(3).Cells(Index, 1).Value = Worksheets(1).Cells(i, 2).Value

  End If

  Find = False

  For j = 2 To Worksheets(3).UsedRange.Columns.Count

    If Worksheets(1).Cells(i, 4).Value = Worksheets(3).Cells(1, j).Value Then

     Find = True

     Worksheets(3).Cells(Worksheets(3).UsedRange.Rows.Count, j).Value = Worksheets(1).Cells(i, 5).Value

     Exit For

    End If

  Next

  If Not Find Then

    Worksheets(3).Cells(1, Worksheets(3).UsedRange.Columns.Count + 1).Value = CStr(Worksheets(1).Cells(i, 4).Value)

    If old <> Worksheets(1).Cells(i, 2).Value Then

      Worksheets(3).Cells(Index, Worksheets(3).UsedRange.Columns.Count).Value = Worksheets(1).Cells(i, 5).Value

    Else

      Worksheets(3).Cells(Worksheets(3).UsedRange.Rows.Count, Worksheets(3).UsedRange.Columns.Count).Value = Worksheets(1).Cells(i, 5).Value

    End If

  End If

  If old <> Worksheets(1).Cells(i, 2).Value Then

      Index = Index + 1

      old = Worksheets(1).Cells(i, 2).Value

  End If

Next

End Sub



    不过我后来发现用原始数据的数据透视表也能简单的完成上述任务的,我又一次杀鸡用了牛刀了。但是数据透视表如果求和字段不是数值而是文字的话,只能显示计数项,所以必要时还是要用vba的。。。。数据透视如图:


办公自动化之-城院教务系统数据格式转换任务 - wucccsk - 天秤的存在与虚无博客
 
 
  评论这张
 
阅读(282)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017