2016-07-23 8 views
-4

要件の1つに固執しています。私は1つのマスターシート(SHeet1)50列を持つヘッダーと私は別のヘッダーを持つ30列の別のsheet2があります。だから今私は両方のシートヘッダーのシート1のヘッダーはどのシート2のヘッダーに移動し、別のSheet2にロード/コピー30の列を移動することを意味する必要があります。 Shee2の列ヘッダーには、マッピングを必要としないデフォルト値もほとんどありません。 以下は私の要件です。1つのシートから別のシートに選択した列のデータをロードまたはコピーする方法

マスターシート1 - >合計レコード100k +。

Object ID system project object_id Revision Iteration ows_BaseName object_name ows_DocumentState ows_Modified_x0020_By ows_Created_x0020_By ows_DocumentOwner ows_Keywords ows_Languages ows_Title ows_Author ows_FileDirRef ows_BaseName 
1 System1 Project 1 Object1 Revision1 Iteration1 ows_BaseName1 object_name1 ows_DocumentState1 ModifiedBy1 CreatedBy1 ows_DocumentOwner1 ows_Keywords1 English ows_Title1 ows_Author1 ows_FileDirRef1 ows_BaseName1 
2 System2 Project 2 Object2 Revision2 Iteration2 ows_BaseName2 object_name2 ows_DocumentState2 ModifiedBy2 CreatedBy2 ows_DocumentOwner2 ows_Keywords2 English ows_Title2 ows_Author2 ows_FileDirRef2 ows_BaseName2 
3 System3 Project 3 Object3 Revision3 Iteration3 ows_BaseName3 object_name3 ows_DocumentState3 ModifiedBy3 CreatedBy3 ows_DocumentOwner3 ows_Keywords3 English ows_Title3 ows_Author3 ows_FileDirRef3 ows_BaseName3 
4 System4 Project 4 Object4 Revision4 Iteration4 ows_BaseName4 object_name4 ows_DocumentState4 ModifiedBy4 CreatedBy4 ows_DocumentOwner4 ows_Keywords4 English ows_Title4 ows_Author4 ows_FileDirRef4 ows_BaseName4 

シート2 - >コピーするこのようなニーズに - >

MASTEROBJECTNUMBER MASTERORGANIZATION_NAME MASTERCONTAINERTYPE MASTERCONTAINER MASTERCONTAINER_ORG_NAME MASTERWBMSOURCEIDENTIFIER REVISION DEPARTMENT DESCRIPTION DOCTYPE TITLE FOLDERPATH FORMAT ITERATION ITERATIONNOTE CREATEDBY MODIFIEDBY LIFECYCLE LIFECYCLESTATE CREATEDDATE MODIFIEDDATE TEAM TYPE SOURCEDESCRIPTION WBMSOURCEIDENTIFIER 
1 ABCD LIBRARY System1 ABCD 10 Revision1 ENG ows_Title1 $$Document ows_Title1 /Default/Design_Build_Test Microsoft Excel Iteration1  CreatedBy1 ModifiedBy1 Document LC EFFECTIVE 14-10-2014 14-10-2015  Document Excel Data 100 
2 ABCD LIBRARY System2 ABCD 20 Revision2 ENG ows_Title2 $$Document ows_Title2 /Default/Design_Build_Test Microsoft Excel Iteration2  CreatedBy2 ModifiedBy2 Document LC EFFECTIVE 14-10-2014 14-10-2015  Document Excel Data 101 
3 ABCD LIBRARY System3 ABCD 30 Revision3 ENG ows_Title3 $$Document ows_Title3 /Default/Design_Build_Test Microsoft Excel Iteration3  CreatedBy3 ModifiedBy3 Document LC EFFECTIVE 14-10-2014 14-10-2015  Document Excel Data 102 
+1

のようなものは、SO教えて」、 "私のためのコード" ではありません「コードを検索する」、「コードを検索する」などがあります。特定の問題を克服する上で問題を抱えている既存のコードを持つ人たちを支援するためのサイトです。あなたが動作しないコードをお持ちの場合は、編集を使用して元の投稿に投稿し、それが何をしているかを説明してください。 –

+0

こんにちはScott ..あなたの返信とコメントに感謝します。私はvlookup機能で試してみましたが、それほど効率的ではありませんでした。だから、VBAを通してやっていると思ったけど、もう一度試してみましょう。もう一度あなたの応答と提案に感謝します。 – user6622113

+0

@ScottCranerコメントに加えて、何が望ましい結果であるかは非常に不明です。 3枚のシートに2枚のシートを組み合わせる必要がありますか?またはシート1の値でシート2を更新したいですか?どちらのシートでも関連するレコードを見つけるためのキーは何ですか? – EBH

答えて

0

この

Public Type ColHeaderDest 
    Object As Long 
    ID As Long 
    system As Long 
    project As Long 
    object_id As Long 
    REVISION As Long 
    ITERATION As Long 
    ows_BaseName As Long 
    object_name As Long 
    ows_DocumentState As Long 
    ows_Modified_x0020_By As Long 
    ows_Created_x0020_By As Long 
    ows_DocumentOwner As Long 
    ows_Keywords As Long 
    ows_Languages As Long 
    ows_Title As Long 
    ows_Author As Long 
    ows_FileDirRef As Long 
    ows_BaseName As Long 
End Type 

Public Type ColHeaderSource 
    MASTEROBJECTNUMBER As Long 
    MASTERORGANIZATION_NAME As Long 
    MASTERCONTAINERTYPE As Long 
    MASTERCONTAINER As Long 
    MASTERCONTAINER_ORG_NAME As Long 
    MASTERWBMSOURCEIDENTIFIER As Long 
    REVISION As Long 
    DEPARTMENT As Long 
    DESCRIPTION As Long 
    DOCTYPE As Long 
    TITLE As Long 
    FOLDERPATH As Long 
    FORMAT As Long 
    ITERATION As Long 
    ITERATIONNOTE As Long 
    CREATEDBY As Long 
    MODIFIEDBY As Long 
    LIFECYCLE As Long 
    LIFECYCLESTATE As Long 
    CREATEDDATE As Long 
    MODIFIEDDATE As Long 
    TEAM As Long 
    TYPE As Long 
    SOURCEDESCRIPTION As Long 
    WBMSOURCEIDENTIFIER As Long 
End Type 

Sub test() 

    Dim x As Long 
    Dim y As Long 

    Dim HeaderRowDest As Long 
    Dim HeaderRowSource As Long 
    ' Where is the column description row ? This can be automated but I can't be bothered, sorry 
    HeaderRowDest = 0 
    HeaderRowSource = 0 

    Dim shtSource As Worksheet 
    Dim shtDestination As Worksheet 
    Set shtSource = Worksheets("Sheet1") 
    Set shtDestination = Worksheets("SHeet 2") 

    ' Find last row and next row for source and destination sheets 
    Dim LastRowSource As Long 
    Dim NextRowDest As Long 
    NextRowDest = shtDestination.Range("A" & shtDestination.Rows.Count).End(xlUp).Row + 1 
    LastRowSource = shtSource.Range("A" & shtSource.Rows.Count).End(xlUp).Row + 1 

    Dim myColHeaderDest As ColHeaderDest 
    Dim myColHeaderSource As ColHeaderSource 
    ' Get column header for destination sheet 
    For x = 1 To shtDestination.Cells(HeaderRowDest, shtDestination.Columns.Count).End(xlToLeft).Column 
     Select Case shtDestination.Cells(HeaderRowDest, x).Range.Text 
      Case "Object" 
       myColHeaderDest.Object = x 
      Case "ID" 
       myColHeaderDest.ID = x 
      Case "system" 
       myColHeaderDest.system = x 
      ' ... and so on 
     End Select 
    Next x 

    ' Get column header for source sheet 
    For x = 1 To shtSource.Cells(HeaderRowSource, shtSource.Columns.Count).End(xlToLeft).Column 
     Select Case shtSource.Cells(HeaderRowSource, x).Range.Text 
      Case "MASTEROBJECTNUMBER" 
       myColHeaderSource.MASTEROBJECTNUMBER = x 
      Case "MASTERORGANIZATION_NAME" 
       myColHeaderSource.MASTERORGANIZATION_NAME = x 
      Case "MASTERCONTAINERTYPE" 
       myColHeaderSource.MASTERCONTAINERTYPE = x 
      ' ... and so on 
     End Select 
    Next x 

    ' Loop through all rows in the source sheet, starting at the column description row 
    For x = HeaderRowSource + 1 To LastRowSource 

     NextRowDest = shtDestination.Range("A" & shtDestination.Rows.Count).End(xlUp).Row + 1 

     For y = 1 To shtSource.Cells(HeaderRowSource, shtSource.Columns.Count).End(xlToLeft).Column 
      Select Case y 
       Case myColHeaderSource.MASTEROBJECTNUMBER 
        shtDestination.Cells(myColHeaderDest.Object, NextRowDest).Text = shtSource.Cells(myColHeaderSource.MASTEROBJECTNUMBER, x) 
       Case myColHeaderSource.MASTERORGANIZATION_NAME 
        shtDestination.Cells(myColHeaderDest.ID, NextRowDest).Text = shtSource.Cells(myColHeaderSource.MASTERORGANIZATION_NAME, x) 
       Case myColHeaderSource.MASTERCONTAINERTYPE 
        shtDestination.Cells(myColHeaderDest.system, NextRowDest).Text = shtSource.Cells(myColHeaderSource.MASTERCONTAINERTYPE, x) 

       ' And so on 
      end select 
     Next y 

    Next x 


End Sub 
+0

このコードのように動作しません "注意します"明らかに、ows_BaseNameで始まるあいまいな名前に関するエラーがありました。空白でない空白文字がそこにあると思います。それを修正する必要があります。 – Shodan

+0

ありがとう@Shodan。 _を削除することによって、owsBaseNameとして変更されます。しかし、それは "次のようなものではない"としてコンパイルエラーを出します。いくつかのループエラーがあります。これを見てください。 – user6622113

+0

はい、欠けていたエンドセレクトがありました。 HeaderRowDest = 0 HeaderRowSource = 0に適切な値を設定する必要があります。おそらく他のもの、これはあなたを始めるためのものです。 – Shodan

関連する問題