[[20120518161737]] 『月単位で日付に順番をつける』(みりん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

 『月単位で日付に順番をつける』(みりん)

 データを入力する Sheet1 から、Sheet2 に月別の集計表を作成します。
 以下の様に、日付が重複する場合もあり、重複したデータは列を変えて同行に集計します。
 Sheet2 は、月や類別を変えて Sheet1 のデータを抽出できれば、と思います。

 Sheet2 に日付を固定できれば集約できそうなんですが、
 日付がランダム且つ抜けや重複もあり、つたない知識で困難を極めております。
 こちらで検索しても、キーワードにヒットせず徒労に終わりました(T_T)
 Sheet1 に作業列があっても問題ないので、ご教示ください。

 【Sheet1】
   A列      B列    C列
  日付     類別    数量   
 H23.4.15   山     2.0
 H23.4.20   森     1.5
 H23.4.29   山     0.5
 H23.4.29   森     2.5
 H23.5.5    山     1.5
 H23.5.5    山     1.0
 H23.5.5    森     2.0
 H23.5.11   森     0.5
 H23.5.11   森     1.5
 H23.5.21   山     0.5
 H23.7.10   森     0.5
 H23.7.11   森     2.0

 【Sheet2】(例:4月 山 集計)
   A列      B列    C列
   4月     類別    数量
 H23.4.15   山     2.0
 H23.4.29   山     0.5

 【Sheet2】(例:5月 森 集計)
   A列      B列    C列   D列
   4月     類別    数量
 H23.5.5    森     2.0
 H23.5.11   森     0.5   1.5


 こんな事になるのかな ?
 Sheet1 の、Cells(1,"e") で、月を数値で指定 例: 5 、Cells(1,"f") で、種別を指定 例: 森 
 結果は、Sheet2 へ表示されます。

 Sub test()
   Dim i&, j&, D As Object, v, w
   Dim Mo&, Na$, n&, S
      Set D = CreateObject("scripting.dictionary")
      With Sheets("Sheet1")
         Mo = .Cells(1, "e").Value '月
         Na = .Cells(1, "f").Value '種別
         v = .Cells(1, 1).CurrentRegion.Value
         For i = 2 To UBound(v)
            If Month(v(i, 1)) = Mo And v(i, 2) = Na Then
               D(v(i, 1)) = D(v(i, 1)) & "," & v(i, 3)
            End If
         Next
      End With
      n = 1
      With Sheets("sheet2")
         .Cells(1, 1).CurrentRegion.Offset(1).ClearContents
         For Each w In D.keys
            n = n + 1
            .Cells(n, 1).Value = w
            .Cells(n, 2).Value = Na
            S = Split(D(w), ",")
            For j = 1 To UBound(S)
               .Cells(n, 2 + j).Value = S(j)
            Next
         Next
      End With
      Set D = Nothing
 End Sub
 (HM)


(HM)さま
ありがとうございました

 関数では難しいでしょうか?
 マクロにもあまり明るくないので、集計項目を追加された時に対処できないので‥
 (みりん)


 >Sheet1 に作業列があっても問題ないので、ご教示ください。

 作業列あったほうが分かりやすいと思うんでこれで。

 ○Sheet2のA1に月(文字列)、B2に類別。

 ○Sheet1に作業列。
 D2 =IF(MONTH(A2)&"月"=Sheet2!$A$1,IF(B2=Sheet2!$B$2,A2,""),"")
 E2 =IF(MONTH(A2)&"月"=Sheet2!$A$1,IF(B2=Sheet2!$B$2,C2,""),"")
 D2:E2 下へコピー。

 ○Sheet2
 A2 =IF(COUNT(Sheet1!D:D)<ROW(A1),"",SMALL(Sheet1!D:D,ROW(A1)))
 C2 =IF(B2="","",SUMIF(Sheet1!D:D,A2,Sheet1!E:E))
 A2:C2 下へコピー。

 B3 =IF(A3="","",B2)  下へコピー。

 ※Sheet1 年度複数の月度ないこと。

 (GobGob)

(GobGob)さま
ありがとうございました。

 ご提示くださった関数でうまく集約できないのですが、
 参考にして完成したいと思います。
 (みりん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.