|
いつもいつもすいません。
月別の売上表があります。
1ヶ月だけの抽出のマクロはできたのですが
例えば1月〜3月まで抽出したいときは
どうしたらいいでしょうか。
また、集計のマクロがあるのですが、
1/12,1/13,1/14,2/12,2/14と日付中心に集計をすると
1/12の集計、1/13の集計と1日づつでてきてしまいます。
1月の合計、2月の合計、とでてくる集計のやり方は、ありますでしょうか。
申し訳ないのですが教えていただけますでしょうか。
売上表
A B C D E F G
1 売上 NO コード 品名 単価 数量 計
2 1/12 1 1111 スカート 10 1 10
3 1/12 1 1111 スカート 10 1 10
4 1/13 1 1111 スカート 10 1 10
5 2/12 1 1111 スカート 10 1 10
6 2/14 1 1111 スカート 10 1 10
7 3/12 1 1111 スカート 10 1 10
A B C D E F G
1 売上 NO コード 品名 単価 数量 計
2 1/12 1 1111 スカート 10 1 10
3 1/12 1 1111 スカート 10 1 10
41/12集計 2 1111 スカート 10 2 20
5 1/13 1 1111 スカート 10 1 10
61/13集計 2 1111 スカート 10 1 10
抽出・集計マクロ
Sheets("仕入日計").Select
'----------------宣言セクション(各項目 最大1000件まで格納する)---
Dim 仕入(1000) As Date
Dim No(1000) As Single
Dim コード(1000) As Single
Dim 品名(1000) As String
Dim 単価(1000) As Single
Dim 数量(1000) As Single
Dim 計(1000) As Single
Dim n As Integer
Dim i As Integer
Dim mstr As String
Dim WS1 As Worksheet
Dim WS2 As Worksheet
Dim TDate As Date
Dim SName As String
'------------------メッセージボックスの表示------------------------------
mstr = InputBox("何年/何月分を抽出しますか?(数字のみ)", "抽出月指定")
↑
ここを何年何月〜何年何月とできますでしょうか
'-----------------該当データを一旦メモリ上に格納する---------------------
Set WS1 = ThisWorkbook.Worksheets("仕入日計")
n = 0
i = 1
Do While WS1.Cells(i + 1, "A") <> "" '----A列で空欄がくるまで繰り返す
TDate = WS1.Cells(i + 1, "A")
If Year(TDate) = Year(mstr) And Month(TDate) = Month(mstr) Then '----メッセージボックスで入力した月のデータを格納
仕入(n) = WS1.Cells(i + 1, "A").Value
No(n) = WS1.Cells(i + 1, "B").Value
コード(n) = WS1.Cells(i + 1, "C").Value
品名(n) = WS1.Cells(i + 1, "D").Value
単価(n) = WS1.Cells(i + 1, "E").Value
数量(n) = WS1.Cells(i + 1, "F").Value
計(n) = WS1.Cells(i + 1, "G").Value
n = n + 1
End If
i = i + 1
Loop
Sheets("仕入月別").Select
Columns("A:G").Select
Selection.ClearContents
Range("A1").Select
Set WS2 = ThisWorkbook.Worksheets("仕入月別")
WS2.Range("A1").Value = "仕入" '----------項目名
WS2.Range("B1").Value = "No"
WS2.Range("C1").Value = "コード"
WS2.Range("D1").Value = "品名"
WS2.Range("E1").Value = "単価"
WS2.Range("F1").Value = "数量"
WS2.Range("G1").Value = "計"
For i = 0 To n - 1 '-----------メモリ上に格納していたデータを代入
WS2.Cells(i + 2, "A").Value = 仕入(i)
WS2.Cells(i + 2, "B").Value = No(i)
WS2.Cells(i + 2, "C").Value = コード(i)
WS2.Cells(i + 2, "D").Value = 品名(i)
WS2.Cells(i + 2, "E").Value = 単価(i)
WS2.Cells(i + 2, "F").Value = 数量(i)
WS2.Cells(i + 2, "G").Value = 計(i)
Next i
Sheets("仕入月別").Select
Range("A1").Select
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(6, 7), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
↑
集計のマクロ
Set WS1 = Nothing
Set WS2 = Nothing
End Sub
|
|