2015-01-20 3 views
1

누구나 다음 일을하는 매크로를 도와 줄 수 있습니까? 헤더가있는 시트 1에 데이터가 있고 헤더 만있는 시트 2가 있으며 데이터가 없습니다. 시트 1과 시트 2의 일치하는 헤더를 검색하고 시트 2에 붙여 넣기 데이터를 복사하는 매크로가 필요합니다. 예를 들어, 시트 1에 & 2에 헤더 인보이스가 있으면 시트 1의 데이터를 해당 헤더 아래의 시트 2에 붙여 넣어야합니다 . 그러나 문제는 데이터를 붙여 넣는 것입니다. 매크로는 다음 인보이스의 3 행을 남겨두고 각 인보이스를 붙여 넣어야합니다. 마찬가지로 Sheet2에있는 다른 헤더에 대해 수행해야합니다. (Sheet1) 송장 Inv 날짜 금액 251 5/5/14 125150 5656 10/8/14 85000조건부 복사 붙여 넣기

시트 (2) 계정 GL 송장 Inv 날짜 DB xxxx (251) 5/5/14

3 이후 행 5656 10/8/14

DB의 XXXX 내가 다른 매크로를 확인하지만, 3 행 후 datas를 붙여 넣을 수 없습니다. 제발 도와주세요.

답변

0

여기 있습니다. 시트 이름을 각각 "원본"및 "대상"으로 변경해야합니다.

Sub copyPaste() 

    Dim srcColumnName As String 
    Dim srcColumnIndex As Integer 
    Dim srcRowIndex As Integer 
    Dim trgtColumnName As String 
    Dim trgtColumnIndex As Integer 
    Dim trgtRowIndex As Integer 
    Dim srcItemColumnIndex As Integer 
    Dim trgtItemColumnIndex As Integer 
    Dim srcItemName As String 

    srcColumnIndex = 1 
    srcRowIndex = 1 

    Do While (1) 

     trgtColumnIndex = 1 
     trgtRowIndex = 1 

     srcColumnName = Worksheets("Source").Cells(srcColumnIndex, srcRowIndex).Value 

     'MsgBox ("Source Column Name: " + srcColumnName) 

     If (srcColumnName = "") Then 
      Exit Do 
     End If 

     Do While (1) 

      trgtColumnName = Worksheets("Target").Cells(trgtColumnIndex, trgtRowIndex).Value 

      'MsgBox ("Target Column Name: " + trgtColumnName) 

      If (trgtColumnName = "") Then 
       Exit Do 
      End If 

      srcItemColumnIndex = 2 
      trgtItemColumnIndex = 2 

      If (trgtColumnName = srcColumnName) Then 

       Do While (1) 

        srcItemName = Worksheets("Source").Cells(srcItemColumnIndex, srcRowIndex).Value 

        'MsgBox ("Source Item : " + srcItemName) 

        If (srcItemName = "") Then 
         Exit Do 
        End If 

        Worksheets("Target").Cells(trgtItemColumnIndex, trgtRowIndex).Value = Worksheets("Source").Cells(srcItemColumnIndex, srcRowIndex).Value 

        srcItemColumnIndex = srcItemColumnIndex + 1 
        trgtItemColumnIndex = trgtItemColumnIndex + 3 

       Loop 

      End If 

      trgtRowIndex = trgtRowIndex + 1 

     Loop 

     srcRowIndex = srcRowIndex + 1 

    Loop 

    MsgBox ("Program Completed successfully !!! ") 

End Sub 

감사 Nirmalya

+0

안녕 Nirmalya, 매크로 주셔서 감사합니다. 그러나 그것은 어떤 데이터도 보이지 않습니다. 매크로를 실행했는데 Prrogram이 성공적으로 완료되었음을 보여 주지만 대상 시트에는 데이터가 붙여지지 않습니다. 조언을 해주십시오. –

+0

원본 시트에 설명 된대로 정확한 열로 데이터를 입력하십시오. 또한 대상 시트에 머리글을 수동으로 작성하십시오. 그런 다음 매크로를 실행하십시오. 대상 시트에 머리글이 없으면 작동하지 않습니다. –