0

2つのワークブックがあります。1つはYYYYW**。xlsxの形式で名前が付けられ、*は週番号を表し、もう1つは同様に名前が付けられていますが、最後にプロジェクト制御があります。最初のブックには、いくつかの値を含むいくつかの行があります。それらは300---数から800---数の範囲です。これらには、納期と、プロジェクトがアクティブかクローズかも含まれます。

プロジェクト管理ワークブックには、2012年のプロジェクト用に1枚、2013年のプロジェクト用に1枚、クローズド用に1枚の計3枚のシートが含まれています。

私が聞きたいのは、プログラムでデータの範囲を取得し、それらを新しいワークブックの対応するシートに転送する方法です。

ありがとう

Project|    Description             |   Delivery  |   Total Sales  |  
------------------------------------------------------------------------        
300661 |CCBS - HLP250               |   01/01/2012|  Active        |
------------------------------------------------------------------------      
300710 |STOCK - ITM250 ELECTRICS    |   01/01/2012|  Closed        |
------------------------------------------------------------------------      
300731 |Nirvana: 4th Piece packer   |   28/02/2012|  Closed        | 
------------------------------------------------------------------------     
300766 |STOCK - SATU                |   01/01/2012|  Active        | 
------------------------------------------------------------------------     
300767 |STOCK - HLP 250 CONVERSION  |   01/01/2012|  Active        | 
------------------------------------------------------------------------     
300768 |STOCK - PNEUMATIC, EMBOSSING|   01/01/2012|  Active        | 
------------------------------------------------------------------------     
412972 |I.T.M. BV                   |   23/05/2013|  Closed        |
------------------------------------------------------------------------      
412986 |I.T.M. BV                   |   17/07/2012|  Closed        | 
------------------------------------------------------------------------     
413001 |I.T.M. BV                   |   06/08/2012|  Closed        | 
------------------------------------------------------------------------     
510003 |Internal Project for issuing|   27/12/2013|  Active        | 
------------------------------------------------------------------------    
600161 |Tabak Invest  Kit & Conv    |   28/02/2012|  Closed        | 
------------------------------------------------------------------------     
600166 |UTC DUBAI                   |   10/01/2012|  Closed        | 
------------------------------------------------------------------------     
600168 |UTC HLP250 Conversion       |   20/02/2012|  Closed        | 
------------------------------------------------------------------------  

上記の情報は、開いているか閉じているかにかかわらず、配達年ごとに並べ替える必要があります。正しいシートに配置したら、図のように番号順にコピーする必要があります。

上記の例では、プロジェクト510003は納期とアクティブステータスのためにワークブック2013に入りますが、300661、3006、300767、300768はすべて2012年に入り、残りはプロジェクトが完了して閉じたときに閉じたシートに入ります。状態

4

1 に答える 1

0

これは非常に開始する必要があります。実際のデータとファイルに一致するように微調整する必要がありますが、構造はしっかりしている必要があります。

Option Explicit

Sub MoveIt()

Dim wkbData As Workbook, wkbPaste As Workbook

Set wkbData = ThisWorkbook
Set wkbPaste = Workbooks("ProjectControl")

With wkbData

    Dim wks As Worksheet
    Set wks = Sheets(1) 'assumes data is in sheet1

    With wks

        ' -> note that use of .usedrange implies data is in a table with no other _
            data or formatting in the worksheet
        .UsedRange.AutoFilter 4, "Closed"

        Dim rng As Range
        Set rng = Intersect(.UsedRange, .UsedRange.Offset(1)).SpecialCells(xlCellTypeVisible)

        rng.Copy wkbPaste.Sheets("Closed")

        .UsedRange.AutoFilter 4, "Active"
        .UsedRange.AutoFilter 3, xlFilterThisYear

        Set rng = Intersect(.UsedRange, .UsedRange.Offset(1)).SpecialCells(xlCellTypeVisible)

        rng.Copy wkbPaste.Sheets("2012").Range("A1")

        .UsedRange.AutoFilter 4, "Active"
        .UsedRange.AutoFilter 3, xlFilterNextYear

        Set rng = Intersect(.UsedRange, .UsedRange.Offset(1)).SpecialCells(xlCellTypeVisible)

        rng.Copy wkbPaste.Sheets("2013").Range("A1")

    End With

End With

End Sub
于 2012-10-24T13:57:19.350 に答える