この記事では、指定された日付範囲に基づいて、生データワークシートから新しいワークシートにデータを抽出するマクロを作成します。

生データは3つの列で構成されています。最初の列には日付が含まれ、2番目の列にはエージェント名が含まれ、3番目の列にはその特定の日付にエージェントが行った販売数が含まれます。

ArrowRawData

マクロを実行する前に、ユーザーから2つの入力が必要です。ユーザーは開始日と終了日を定義する必要があります。指定された日付に基づいて、マクロは定義された日付範囲から新しいワークシートまでのデータを抽出します。

開始日と終了日を指定した後、ユーザーは「送信」ボタンをクリックしてマクロを実行する必要があります。

ArrowMainSheet

マクロを実行すると、「RawData」シートのデータが日付列に基づいて並べ替えられ、指定された日付範囲に基づいて新しく挿入されたワークシートにデータが抽出されます。

ArrowAfterRunningMacro

ArrowOutputSheet

ロジックの説明

マクロは、セルJ8とJ9からそれぞれ開始日と終了日の入力を受け取ります。このマクロは、最初に「RawData」シートのデータを列Aに基づいて昇順で並べ替えます。定義された範囲にフィルターを適用した後、単一の範囲でデータをコピーできるように、日付値に従ってデータを並べ替えました。

データを並べ替えた後、その上にフィルターを適用します。適用されるフィルターは2つの条件に基づいています。最初の条件は、列Aの値が開始日以上である必要があり、2番目の条件は、列Aの値が終了日以下である必要があることです。

フィルタを適用した後、新しいワークシートが挿入され、フィルタリングされたデータがコピーされて貼り付けられます。

コードの説明

Range( “A1″)。CurrentRegion.Sort key1:= Range( “A1″)、order1:= xlAscending、Header:= xlYes上記のコードは、定義された範囲でデータを並べ替えるために使用されます。 Key1は、ソー​​トされるデータに基づいて列を指定します。ソート順はorder1によって提供されます。昇順はすでに定義しています。降順を定義するには、xlDescending定数を使用できます。ヘッダーは、データ範囲にヘッダーが含まれるかどうかを指定するために使用されます。

Range( “A1″)。CurrentRegion.AutoFilter Field:= 1、Criteria1:= “> =”&StartDate、Operator:= xlAnd、Criteria2:= “⇐”&EndDate上記のコードは、データ範囲にフィルターを適用するために使用されます。 Field1は、フィルターが適用される列番号を指定します。 Criteria1とCriteria2は、フィルタリングするデータに基づいて条件を定義します。

演算子は、2つの条件の間で使用される演算子を指定します。

Worksheets.Add after:= Worksheets(Worksheets.Count)

上記のコードは、ワークブックの最後のワークシートの後に新しいワークシートを挿入するために使用されます。

マクロにコードと一緒にコメントを入れているので、コードを簡単に理解できます。

コードについては、以下に従ってください

Sub CopyDataBasedOnDate()

'Disabling screen updates

Application.ScreenUpdating = False

'Declaring two variables of Date data type

Dim StartDate, EndDate As Date

'Declaring variable for worksheet object

Dim MainWorksheet As Worksheet

'Initializing the Date variables with starting date from cell J8

'and end date from cell J9 of "Macro" sheet

StartDate = Sheets("Macro").Range("J8").Value

EndDate = Sheets("Macro").Range("J9").Value

'Initializing worksheet object with "RawData" worksheet

Set MainWorksheet = Worksheets("RawData")

'Activating the worksheet object

MainWorksheet.Activate

'Sorting the data by date in column A in ascending order

Range("A1").CurrentRegion.Sort _

key1:=Range("A1"), order1:=xlAscending, _

Header:=xlYes

'Filter the data based on date range between starting date and end date

Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:= _

">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate

'Copy the filter data

ActiveSheet.AutoFilter.Range.Copy

'Inserting new worksheet after the last worksheet in the workbook

Worksheets.Add after:=Worksheets(Worksheets.Count)

'Pasting the copied data

ActiveSheet.Paste

'Auto adjusting the size of selected columns

Selection.Columns.AutoFit

Range("A1").Select



'Activating the "RawData" sheet

MainWorksheet.Activate

'Removing filter from the worksheet which we applied earlier

Selection.AutoFilter

Sheets("Macro").Activate

End Sub

このブログが気に入ったら、FacebookやFacebookで友達と共有してください。

皆様からのご意見をお待ちしております。私たちの仕事を改善し、あなたのために改善する方法をお知らせください。 [email protected]までご連絡ください