2013-09-27 3 views
0

나는 데이터를 결합해야하는 Excel 파일이 2 개 있습니다.행에 따라 Excel 붙여 넣기 데이터

일부 샘플 데이터는 다음과 같이 단순화했습니다. 상품 코드와

엑셀 파일 1

열 1, 1, 2, 항목 비용 3

열 2, $ 1, $ 2, $ 3

Excel을 말할 수 말할 수 상품 코드와 파일 2

열 1, 1, 3, 4

,691 말할 수 있습니다

Excel 파일 1의 모든 열 2를 복사하여 Excel 파일 2의 열 1에 붙여 넣을 Excel 파일 2에 붙여 넣으려고합니다. 열 1이 일치하지 않으면 데이터를 건너 뜁니다.

이것이 가능합니까? 엑셀 함수를 사용

답변

0
  1. 은 (모두 통합 문서가 열려있을 때 슬프게도, 그것은 단지 작동). "데이터 원본"통합 문서가 "C : \ Users \ User \ source.xls"에 있고 "Sheet1"이라는 워크 시트에 A 및 B 열의 데이터가 있다고 가정합니다. 또한 목표 통합 문서의 "핵심"데이터가 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 매크로를 사용하여, 인구 시트가 활성화되어있는 동안 : 당신의 가치를 찾는 것은 다른 SQL을만큼 쉬운 것입니다 알려진 프로그래밍 언어와 OLEDB를 사용

    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. 쿼리 (즉, 필요한 쿼리는 SELECT F2 FROM [Sheet1$] WHERE F1 = @parameter이고 IMEX은 꺼져 있음).

관련 문제