baidu_35000244
baidu_35000244
2021-04-01 11:07
采纳率: 0%
浏览 49

EXCEL-VBA/复制表头相同的数据时,会出现图例多余的数据,请问代码哪里错误?

Sub 数据入库()
Dim f As FileDialog  '声明控件
  Dim filename$
  Set f = Application.FileDialog(msoFileDialogOpen)  '表示文件对话框的实例。
  With f  '打开文件的路径
    .InitialFileName = "D:\其他文件\EXCEL制作\##EXCEL学习进阶\自用数据库-完善中\销售数据源.XLSX"  '默认初始路径InitialFileName
    .Show
    Workbooks.Open (.SelectedItems(1)) '选择并打开默认初始路径下的文件夹中的文件
    Dim path As String
    Dim target As Workbook

    path = ThisWorkbook.path

    Set target = Workbooks.Open(.SelectedItems(1))  '选择并打开默认初始路径下的文件夹中的文件

        Dim grid1, grid2 As Range '定义两个区域

        For Each grid2 In ThisWorkbook.Sheets(1).Range(Cells(1, 1).Address, Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column).Address) '区域1是本表中第一行所有非空表头数据

            For Each grid1 In target.Sheets(1).Range(Cells(1, 1).Address, Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column).Address) '区域2是目标表中第一行所有非空表头数据

                If grid1 = grid2 Then  '如果两个表头相同

                    target.Sheets(1).Range(Cells(2, grid1.Column).Address, Cells(Cells(Rows.Count, grid1.Column).End(xlUp).Row, grid1.Column).Address).Copy    '复制本表该表头列下的所有数据

                    ThisWorkbook.Sheets(1).Range(Cells(ThisWorkbook.Sheets(1).Cells(Rows.Count, grid2.Column).End(xlUp).Row + 1, grid2.Column).Address, Cells(ThisWorkbook.Sheets(1).Cells(Rows.Count, grid2.Column).End(xlUp).Row + 1, grid2.Column).Address).PasteSpecial Paste:=xlPasteValues   '将复制的数据从目标表对应表头列下的起始空单元格处开始粘贴

                End If

            Next

        Next

    target.Close (True)   '将目标表格保存并关闭

End With
End Sub

因为我刚接触VBA不久,目前还是菜鸟在慢慢学习,但最近工作中急需运用VBA实现,所以上网找了相关的代码,自己按照所需进行修改。但是现在出现以下问题,在复制过程中,会出现图例多余的数据,请问是什么问题呢?

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • soar3033
    soar3033 2021-04-01 11:28

    你这种vba的制表在网上都是有偿解决的,闲鱼也得20吧,你来这不花钱恐怕没人回答

    点赞 评论
  • muyashui

    看你的数据, 两个表比较有规律, 只是想合并数据的话, 用python可能更简单. 

    点赞 评论
  • skyy_s
    鱼鱼得水 2021-04-19 14:48

    为什么做那么复杂,直接复制,粘贴(是指copy方法和paste方法)

    如果没解决,可以追问我,我教你

    点赞 评论

相关推荐