2013-09-27 52 views
0

我有2个excel文件,我需要将这些数据组合在一起。Excel按行粘贴数据

我简化了一些示例数据如下。

Excel文件1分

列1与项目代码,可以说,1,2,3

第2栏与项目成本,让说$ 1,$ 2,$ 3

Excel中文件2

列1与项目代码,比方说1,3,4

我想复制Excel文件1的所有第2列,粘贴到Excel文件2中,粘贴到Excel文件2的第1列。如果第一列不匹配,它将跳过数据。

这可能吗?

回答

0
  1. 使用Excel函数(不幸的是,它只在两个工作簿打开时才起作用)。让我们假设“数据源”工作簿位于“C:\ Users \ User \ source.xls”,并且它的数据分别在列A和B中的工作表中名为“Sheet1”。我们还假定,您的目标工作簿的“关键”数据位于列A中。然后,您应该使用以下函数填充所需的列,从第1行开始:=INDIRECT(CONCATENATE("'C:\Users\User\[source.xls]Sheet1'!",ADDRESS(MATCH($A1,'C:\Users\User\[source.xls]Sheet1'!A:A),2,1,1,1)),1)

  2. 使用从“目的地”工作簿下面的VBA宏,而填充表处于活动状态:

    Sub Main() 
        Dim a As Application, b As workbook, s As Worksheet, i As Integer, iMax As Integer, v As Variant 
        Set a = GetInvisibleApplication 
        Set b = GetWorkbook(a, "C:\Users\Zerth\1.xls") 
        Set s = b.Worksheets(1) 
        iMax = GetLastRow(ActiveSheet) 
        For i = 1 To iMax Step 1 
         v = GetValue(s, Cells(i, 1).Value) 
         If Not IsNull(v) Then 
          Cells(i, 2).Value = v 
         End If 
        Next i 
        a.Quit 
    End Sub 
    Function GetInvisibleApplication() As Application 
        Set GetInvisibleApplication = New Application 
        GetInvisibleApplication.Visible = False 
        GetInvisibleApplication.DisplayAlerts = False 
    End Function 
    Function GetWorkbook(ByRef Application As Application, ByVal Path As String) As workbook 
        Application.Workbooks.Open Path 
        Set GetWorkbook = Application.Workbooks(Application.Workbooks.Count) 
    End Function 
    Function GetLastRow(ByRef Sheet As Worksheet) 
        GetLastRow = Sheet.Range("A:A").End(xlDown).Row 
    End Function 
    Function GetValue(ByRef Sheet As Worksheet, ByVal Key As Variant) 
        Dim i, iMax As Integer, Result As Variant 
        i = 0 
        iMax = GetLastRow(Sheet) 
        Result = Null 
        Do While IsNull(Result) And (i < iMax) 
         i = i + 1 
         If Sheet.Cells(i, 1).Value = Key Then 
          Result = Sheet.Cells(i, 2).Value 
         End If 
        Loop 
        GetValue = Result 
    End Function 
    
  3. 使用OLEDB与任何已知的编程语言,在这里找到你的价值观会像做任何其他SQL一样简单查询(即,查询您需要的是SELECT F2 FROM [Sheet1$] WHERE F1 = @parameter,关闭IMEX)。