-1

これを説明する最良の方法は、毎月作成されるスプレッドシートです。自動化する必要があります。Excelに出荷されるレポートから、プロジェクト番号列からすべてのデータを取得して、別のブックに移動する必要があります。このワークブックには、2012年と2013年のワークシートがあります。新しいワークブックに移動するには、300、400、500などのすべてのプロジェクトが必要です。次に、2012年のプロジェクトを1つのワークシートに、2013年を別のワークシートに移動します。そのようなことを自動化するにはどうすればよいですか?

助けてくれてありがとう

300873 会社 10/09/2012300874会社
10/09/2012412774 会社 30-01-12412972会社 23-05-12412986 会社 名 17-07-12413001 会社 名 08/06/13413048 会社名前 14-08-12413049会社 名 14-08-12413062 会社 20-08-13







413068 会社名 23-08-12413169会社
21-09-13510003 会社 27-12-12600161 会社 28-02-12

したがって、これらを使用して、2012年のすべてのプロジェクトを1つのシートに入れ、他のすべてのプロジェクトを別のワークブックの2013年のシートに入れたいと思います。また、スプレッドシートに入れて行を埋めるには300---プロジェクトが必要です。番号300の下にあるため、これには行の追加が含まれる場合があります。

4

1 に答える 1

0

このためのマクロを非常に簡単に設計できます。使用するツールをいくつか提供します。試してみてください。何か問題が発生した場合は、戻ってきて、コードを投稿し、すでに作成したこの質問についてさらに質問してください。あなたが学ぶことができるように、コードと一緒にあなたを助けます.

プロジェクト番号列からすべてのデータを取得し、別のワークブックに移動する必要があります。


まず、マクロからファイルを開くためのコード:

ChDir "[pathway to the folder]"       'loads file

Workbooks.Open Filename:= "[pathwayToFolder including filename]"

Workbooks("[workbook name]").Activate

他に便利なのは、実際にそれらのシートを選択したり移動したりすることなく、異なるシートや範囲を具体的に参照できることです。たとえば、このコードは、特定のワークブック、シート、および範囲に移動せずに特定の何かを書き込みます

Workbooks("Book1").Sheets("Sheet1").Range("A5") = "Test"

次に、コピーと貼り付け:

このコードはすべてのセルをコピーし、それらをすべて別のシートに貼り付けます。明らかに、より具体的な範囲をコピーして貼り付けることができます(必要に応じてグーグルで検索してください)

Cells.Copy
Sheets("[sheetname]").Select
ActiveSheet.Range("A1").Select
ActiveSheet.Paste

第三に、年の決定:

日付が列「C」にある場合、これを行うだけです

Dim i As Integer, rowNumber As Integer
i = 1         'whatever row your data begins on
rowNumber = ActiveSheet.UsedRange.Rows.Count      'gets used number of rows

Do              'Loops through all data on the sheet

   If Right(Range("C" & i), 2) = "12" Then    'checks the last 2 characters in date column

      'copy data from that row and paste it wherever applicable   

   ElseIf Right(Range("C" & i), 2) = "13" Then  'checks for 2013

      'move 2013 data wherever applicable

   End If

   i = i + 1
Loop Until i = rowNumber

このコードを何かにまとめて、この質問についてご連絡ください。

また、将来的には、質問する前にいくつかの調査を行い、これに取り組むようにしてください。質問は実際には複数の質問であり、非常に広範であるため、答えるのが難しくなります. それが誰かがそれを反対票を投じた理由です。

お役に立てれば!

于 2012-10-18T14:48:15.083 に答える