广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Excel表格提取数据到同一行上面

    来源:网络收集  点击:  时间:2024-07-20
    【导读】:
    如下表所示,要把A列里面相同数据(姓名)的B列数据分别提取到同一行上面。如果只是一小部分的表格,可以手动处理;如果数据较多,函数公式可能无法胜任,思来想去,还是觉得使用VBA程序处理比较快捷。工具/原料moreWindows 7Excel 2010方法/步骤1/6分步阅读

    打开Excel表格之后,依次点击【开发工具】、【Visual Basic】,或者按下键盘上面的【Alt+F11】组合键调出VBA编辑器。

    2/6

    在VBA编辑器的菜单栏上面依次点击【插入】、【模块】。

    3/6

    在模块的代码框里面输入以下VBA程序代码,然后再按【F5】键运行VBA程序。

    (Sheet2工作表需是空白的,以免里面的数据被删除)

    Sub Tiqushuju()

    Dim i1, i2, i3, i4, i5

    On Error Resume Next 忽略运行过程中可能出现的报警提示

    Application.DisplayAlerts = False 屏蔽报警提示

    Set mysheet1 = ThisWorkbook.Worksheets(Sheet1) 定义工作表Sheet1

    Set mysheet2 = ThisWorkbook.Worksheets(Sheet2)

    mysheet1.Columns(A:A).Copy 复制工作表Sheet1里面的A列

    mysheet2.Select

    mysheet2.Cells(1, 1).Select

    ActiveSheet.Paste 把工作表Sheet1里面的A列粘贴到Sheet2上面的A列

    mysheet2.Range(A:A).RemoveDuplicates Columns:=1, Header:=xlNo 删除重复项

    mysheet2.Columns(A:A).Copy

    mysheet1.Select

    mysheet1.Cells(1, 4).Select

    ActiveSheet.Paste 把工作表Sheet2里面的A列粘贴到Sheet2上面的D列

    Application.CutCopyMode = False

    mysheet1.Cells(1, 4).Select

    For i1 = 2 To 10000

    If mysheet1.Cells(i1, 4) Then

    i2 = Application.WorksheetFunction.CountIf(mysheet1.Range(A2:A10000), _

    mysheet1.Cells(i1, 4)) 统计A列里面与D列单元格存在相同单元格的个数

    i4 = 0

    i5 = 1 从第1行开始

    For i3 = 1 To i2 按照存在相同个数执行相应的次数

    i4 = Application.WorksheetFunction.Match(mysheet1.Cells(i1, 4), _

    mysheet1.Range(mysheet1.Cells(i5, 1), mysheet1.Cells(10000, 1)), 0)

    获取该单元格所在A列的位置

    i5 = i5 + i4 在原来第几行的基础上递增

    mysheet1.Cells(i1, i3 + 4) = mysheet1.Cells(i5 - 1, 2)

    Next

    End If

    Next

    End Sub

    4/6

    在程序运行之后,回到Excel工作表界面,将会看到其执行结果。

    5/6

    VBA程序释义说明:

    (1)提取不重复的数据项,在觉得使用VBA程序较为麻烦的情况下,可以通过手工提取,这样的程序也会变得简洁很多,几行代码就搞定。即:把需要的数据复制到空白的表格上面,删除重复项之后再把它复制、粘贴过来。

    6/6

    VBA程序释义说明:

    (2)在程序里面借用到了Excel函数的Countif和Match。Countif主要是用来求解存在相同单元格的个数,Match则用来求解满足条件的单元格所在的位置,两者结合使用,可以有效的减少程序的运行时间。

    打个简单的比喻,如果使用If逐一去判断,对应得上是数据则选出来,对于上万的数据来说,那它就要执行上亿次的数据比对,这样就耗费了很多时间。当然,初学VBA,又想不到捷径的情况下可以采用此法,后面再进行修正。

    注意事项

    个人经验,仅供参考。

    EXCELVBA提取数据
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_979083.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 15:50:01  耗时:0.026
    0.0261s