当前位置: 首页 > 知识库问答 >
问题:

有条件地将Excel文件-2数据复制到Excel文件-1?

岳毅
2023-03-14

我正在使用Excel2007。当某些列数据从文件-1与文件-2匹配时,我试图将单价从Excel文件-2数据复制到Excel文件-1。

我的VBA代码:

Sub mySales() 
    Dim LastRow As Integer, i As Integer, erow As Integer, Pipe_Class As String, Pipe_Description As String, End_Type As String, Pipe_Size As String
    Dim wbk As Workbook
    strPriceFile = "C:\Temp\File-2.xlsx"
    LastRow = ActiveSheet.Range(“A” & Rows.Count).End(xlUp).Row
    For i = 2 To LastRow
        Pipe_Class = ""
        Pipe_Description = ""
        End_Type = ""
        Pipe_Size = ""
        Pipe_Class = ActiveSheet.Cells(i, 1).Value
        Pipe_Description = ActiveSheet.Cells(i, 2).Value
        End_Type = ActiveSheet.Cells(i, 3).Value
        Pipe_Size = ActiveSheet.Cells(i, 4).Value
        Set wbk = Workbooks.Open(strPriceFile)
        Worksheets("SOR2").Select
        If Cells(i, 1) = Pipe_Class And Cells(i, 2) = Pipe_Description And Cells(i, 3) = End_Type And Cells(i, 4) = Pipe_Size Then
            Range(Cells(i, 12), Cells(i, 12)).Select
            Selection.Copy

??? After Here how select my current file & paste ????????

            Worksheets("SOR1").Select
            erow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
            ActiveSheet.Cells(erow, 12).Select
            ActiveSheet.Paste
            ActiveWorkbook.Save
        End If
    Next i
    ActiveWorkbook.Close
    Application.CutCopyMode = False
End Sub

共有1个答案

公良浩邈
2023-03-14

我没有检查您的所有代码,但我已经重构了您的问题中的内容,试图打开工作簿一次,并分配适当的对象,以便您可以跟踪应用于哪个工作表的操作。

Sub mySales() 
    Dim LastRow As Integer, i As Integer, erow As Integer
    Dim wbSrc As Workbook
    Dim wsSrc As Worksheet
    Dim wbDst As Workbook
    Dim wsDst As Worksheet
    Dim strPriceFile As String

    Set wbDst = ActiveWorkbook
    Set wsDst = ActiveSheet

    strPriceFile = "C:\Temp\File-2.xlsx"
    Set wbSrc = Workbooks.Open(strPriceFile)
    Set wsSrc = wbSrc.Worksheets("SOR2")

    LastRow = wsDst.Range("A" & wsDst.Rows.Count).End(xlUp).Row
    erow = LastRow + 1

    For i = 2 To LastRow
        If wsSrc.Cells(i, 1).Value = wsDst.Cells(i, 1).Value And _
           wsSrc.Cells(i, 2).Value = wsDst.Cells(i, 2).Value And _
           wsSrc.Cells(i, 3).Value = wsDst.Cells(i, 3).Value And _
           wsSrc.Cells(i, 4).Value = wsDst.Cells(i, 4).Value Then

            wsSrc.Cells(i, 12).Copy wsDst.Cells(erow, 12)
            erow = erow + 1  ' your current code would always copies to the same row,
                             ' but I **think** you probably want to copy to the
                             ' next row each time
        End If
    Next i

    wbSrc.Close
    If erow > LastRow + 1 Then
       wbDst.Save
    End If
    wbDst.Close
End Sub

代码完全未经测试,但是,即使它不能工作,至少它应该让您了解应该如何处理多个工作簿和多个工作表。

 类似资料:
  • Microsoft Excel是使用最广泛的电子表格程序,它以.xls或.xlsx格式存储数据。 R可以使用一些特定于Excel的包直接从这些文件中读取。 很少有这样的软件包 - XLConnect,xlsx,gdata等。我们将使用xlsx软件包。 R也可以使用这个包写入excel文件。 安装xlsx包 您可以在R控制台中使用以下命令来安装“xlsx”软件包。 它可能会要求安装一些此软件包所依赖

  • 通过官方提供的插件我们可以将图表中数据导出为常见的 Excel 数据文件(.csv 和 .xls),下面是一个实例: 使用方法 额外引入插件即可,我们提供的版本已经解决了中文乱码问题,详见 社区帖子 <!-- 基本的文件 --> <script src="http://code.highcharts.com.cn/highcharts/highcharts.js"></script> <scrip

  • 我想将工作表添加到现有的 excel 文件中。我该怎么做?我正在从事一个硒项目,我想将所有自动化结果表添加到单个 excel 文件中。现在,我可以为每个工作表创建新的Excel文件。

  • 我正在阅读一个用一些分隔符分隔的文本文件。 我的文本文件内容示例 Avc def efg JKSJD 1 2 3 5 3 4 6 0 每次调用createRow和createCell时是否都会创建新对象? 如果是,有什么替代方案?。如何以更好的性能将大数据写入excel?

  • 问题内容: 我有SSIS包,可以将数据从表导出到Excel文件 这是我的步骤: 删除Excel表 创建具有我选择查询格式的Excel表格,该表格用于从数据库中检索数据 将数据从数据库插入Excel文件 我用过像查询 我从10000行中检索出3000行,并将这3000行放入我的Excel工作表中。 但是,当打开我的Excel工作表时,我看到滚动条一直延伸到第10000行并结束,因此我的Excel工作

  • 我以.txt格式抓取了NLP数据,需要将其复制到Excel。数据位于名为“article”的文件夹中。此文件夹中包含2012年至2020年的其他子文件夹。子文件夹的名称为日期,例如“2012-04-18”。每个子文件夹中都有几个.txt文件。 我想:复制每个. txt文件的内容,并将它们与子文件夹上显示的相应日期匹配到excel文件中。因此excel文件将有一列日期(从子文件夹复制)和相应的行,其