Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


25143 / 76736 ←次へ | 前へ→

【56937】Re:複数の条件でそれぞれ集計を出したいのですが・・・
発言  kanabun  - 08/7/11(金) 19:52 -

引用なし
パスワード
   ▼菜実 さん:

>上半期のシートが出来上がり、下半期を作成している途中なのですけど
>下記のヒントをいただいていましたが、どのように修正すればいいか分からず

>「何列目」に 加算すればよいか と言うことを教えていただき、
>単純に m = 月数-9 としてみましたがどうも違うようで、涙目です。

先ほど、いちど付け焼刃の案をアップしましたが、不具合をみつけたので、
一度削除して、もうす少しはマシなのを再掲します。
一番最初に、上半期か 下半期かInputBoxで問い合わせがありますので、
ここで集計する最初の月を数字で入れてください(通常、4 か 10;
ただし、1〜12 の有効な月数ならどれでもかまいません。指定の月から
6か月分を集計します)
◆印が主な変更か所です

Sub Try5() '月の列番号も dic に記憶
 Dim r As Range
 Dim Code, Price, Cat, Mon
 Dim i As Long, m As Long, n As Long, numRecords As Long, k As Long
 Dim dic As Object
 Dim mCol As Long     '◆表示列番号
 Dim BeginMonth As Integer '◆上半期なら 4 下半期なら 10 とする
 
'◆最初の月数をインプット
 BeginMonth = Val(InputBox("何月から半期分の集計?", , 10))
 Select Case BeginMonth
  Case 1 To 12
  Case Else: Exit Sub
 End Select
 
 Set r = Range("A1").CurrentRegion
 With Application
  Set r = .Intersect(r, r.Offset(1)) '1行目をカット
  Code = .Transpose(r.Columns("E")) 'コード (文字列)
  Price = .Transpose(r.Columns("I")) '発注額
  Cat = .Transpose(r.Columns("J"))  '区分
  Mon = .Transpose(r.Columns("H"))  '納期
 End With
 numRecords = UBound(Code)
 ReDim Ans(numRecords, 6)
 Ans(0, 0) = "コード"        '0行目に 列見出し
 
 Set dic = CreateObject("Scripting.Dictionary")
 '列見出し 月名の代入
 For i = BeginMonth To BeginMonth + 5    '◆半期分
   m = i: If m > 12 Then m = m - 12    '◆
   mCol = i - BeginMonth + 1        '◆
   dic(MonthName(m)) = mCol        '◆ (下)10月が1列目
   Ans(0, mCol) = MonthName(m) & "計"   '◆
 Next
 
 'コード別に集計
 For i = 1 To numRecords
   If dic.Exists(Code(i)) Then '既存のコードのときは
     n = dic(Code(i))     '表の行番号をdicから得る
   Else
     k = k + 1        '新規コード なら コードと(行番号)を登録
     dic(Code(i)) = k
     Ans(k, 0) = Code(i)
     n = k
   End If
   Select Case Cat(i)  '区分が「A」または「B」のときだけ集計
    Case "A", "B"
      m = Month(Mon(i))
      If dic.Exists(MonthName(m)) Then  '◆
        mCol = dic(MonthName(m))
        Ans(n, mCol) = Ans(n, mCol) + Price(i)
      End If
   End Select
 Next
 
 With Range("M1").Resize(k + 1, 7)
   .ClearContents
   .NumberFormat = "#,##0"
   .Columns(1).NumberFormat = "@"
   .Value = Ans
 End With
End Sub

0 hits

【56510】複数の条件でそれぞれ集計を出したいのですが・・・ なみ 08/6/19(木) 17:34 質問
【56512】Re:複数の条件でそれぞれ集計を出したいの... ハチ 08/6/19(木) 17:58 発言
【56532】Re:複数の条件でそれぞれ集計を出したいの... なみ 08/6/20(金) 9:12 お礼
【56523】Re:複数の条件でそれぞれ集計を出したいの... kanabun 08/6/19(木) 22:23 発言
【56524】Re:複数の条件でそれぞれ集計を出したいの... kanabun 08/6/19(木) 22:27 発言
【56525】Re:複数の条件でそれぞれ集計を出したいの... kanabun 08/6/19(木) 22:30 発言
【56529】Re:複数の条件でそれぞれ集計を出したいの... kanabun 08/6/19(木) 23:47 発言
【56533】Re:複数の条件でそれぞれ集計を出したいの... なみ 08/6/20(金) 9:14 お礼
【56536】Re:複数の条件でそれぞれ集計を出したいの... なみ 08/6/20(金) 9:48 質問
【56537】Re:複数の条件でそれぞれ集計を出したいの... ひげくま 08/6/20(金) 9:58 発言
【56540】Re:複数の条件でそれぞれ集計を出したいの... なみ 08/6/20(金) 10:10 お礼
【56544】Re:複数の条件でそれぞれ集計を出したいの... なみ 08/6/20(金) 11:02 質問
【56546】Re:複数の条件でそれぞれ集計を出したいの... kanabun 08/6/20(金) 11:30 発言
【56625】Re:複数の条件でそれぞれ集計を出したいの... なみ 08/6/25(水) 13:02 お礼
【56936】Re:複数の条件でそれぞれ集計を出したいの... 菜実 08/7/11(金) 14:07 質問
【56937】Re:複数の条件でそれぞれ集計を出したいの... kanabun 08/7/11(金) 19:52 発言
【56952】Re:複数の条件でそれぞれ集計を出したいの... 菜実 08/7/14(月) 13:40 お礼

25143 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free