前提・実現したいこと
以下のプログラムはsheet1に記載の下記の表から「田中」のラベルを含む行のみをsheet2へコピーしsheet2の数値列の合計値をresult.xlsxに出力させるプログラムです。
ところが、total_amountという変数にオートフィルターで抽出した合計値を格納できません。
どうすればきちんと格納できるのでしょうか?
表(sheet1)
列1 | 列2 | 列3 |
---|---|---|
名前 | 記号 | 数値 |
有村 | A | 10 |
田中 | B | 20 |
橋本 | C | 30 |
田中 | D | 40 |
桜井 | E | 50 |
吉岡 | F | 60 |
田中 | G | 70 |
広瀬 | H | 80 |
田中 | I | 90 |
中野 | J | 100 |
ソースコード
VBA
1Sub Macro8() 2 Sheet2.Cells.ClearContents 3 With Range("A1") 4 .AutoFilter 1, "田中" 5 Range(Range("A1"), Cells(Rows.Count, 1).End(xlUp)).Copy Sheets("Sheet2").Range("A1") 6 Range(Range("C1"), Cells(Rows.Count, 3).End(xlUp)).Copy Sheets("Sheet2").Range("B1") 7 8 Debug.Print (WorksheetFunction.Subtotal(9, Sheets("Sheet2").Range("B:B"))) 'ここは正しい合計値(220)が格納される 9 Dim total_amount As Double 10 total_amout = WorksheetFunction.Subtotal(9, Sheets("Sheet2").Range("B:B")) 11 Debug.Print ("total_amount: " & total_amount) 'total_amountがなぜか0になってしまう 12 13 14 15 'result.xlsxを開き合計値を書き込む 16 Set wb = Workbooks.Open(ThisWorkbook.Path & "/result.xlsx") 17 Set ws = wb.Worksheets(1) 18 ws.Cells(1, 1) = total_amount 19 wb.Close 20 End With 21End Sub
出力結果
220
total_amount: 0 ←こうなる理由がわかりません
補足情報(FW/ツールのバージョンなど)
mac os
excel 2016
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/30 11:48
2020/07/30 11:56
2020/07/30 12:39 編集
2020/08/04 08:11