Excel VBA質問箱 IV

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

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


46894 / 76732 ←次へ | 前へ→

【34805】Re:カウント方法について
発言  ichinose  - 06/2/13(月) 14:33 -

引用なし
パスワード
   こんにちは。
>しかし、実行してみたところ、一行目 - をつけることにより
>日付と認識するらしく、5月 日というように項目名が変更されてしまいます。
>"-" に" - "スペースを入れてもダメでした
>>     keystr = Join(compstr(), "-")
>>     If .Exists(keystr) Then
>>       .Item(keystr) = .Item(keystr) + 1

こんな場合ですか?
セルA1から

      A       B
 1   項目1      項目2
 2    1        11
 3    2        12
 4    3        13
 5    4        14
 6    5        15
 7    6        16
 8    7        17


こんなデータが入っているとき、

'==================================
Sub test()
  Dim rng As Range
  Set rng = Range("a2", Cells(Rows.Count, 1).End(xlUp)) '*
  If rng.Row > 1 Then '*
    Call 集計(rng, 0, 1) 'A列とB列の組合せ集計
    End If
End Sub

を実行すると、
セルA10から、
1月11日
2月12日
3月13日
4月14日
5月15日
6月16日
7月17日

という結果が表示されてしまいます。

とここまで記述して下さい。

入力データが何なのかを明確に記述する事ですよ!!

今回は見当がついたからよかったですけど・・・。


これは、集計プロシジャーを

'================================================================
Sub 集計(基準セル範囲 As Range, ParamArray 比較列() As Variant)
'基準セル範囲を基準に比較列として指定されたオフセット位置で集計を行う
'Input--基準セル範囲:集計を行う基準になるセル範囲(列方向のセル範囲を指定する例-A1:A6)
'    比較列:集計する列を基準セル範囲からのオフセット値で指定する
' 例1  セル範囲A2:A6を集計する
'    call 集計(range("a2:a6"),0)
'
' 例2  セル範囲b2:b6を集計する
'    call 集計(range("a2:a6"),1)
'  又は call 集計(range("b2:b6"),0)
'
' 例3  セルA2:B6を集計する
'    call 集計(range("a2:a6"),0,1)
'
' 例4  セルA2:A6を基準セルとしてA列とC列で集計する
'    call 集計(range("a2:a6"),0,2)
  Dim dic As Object
  Dim idx As Long
  Dim crng As Range
  Dim cnt As Long
  Dim keystr As String
  Dim s_tag As Variant
  Dim s_val As Variant
  ReDim compstr(0 To UBound(比較列()))
  Set dic = CreateObject("scripting.dictionary")
  With dic
    For Each crng In 基準セル範囲
     For idx = LBound(比較列()) To UBound(比較列())
       compstr(idx) = CStr(crng.Offset(0, 比較列(idx)).Value)
       Next
     keystr = Join(compstr(), "-")
     If .Exists(keystr) Then
       .Item(keystr) = .Item(keystr) + 1
     Else
       .Add keystr, 1
       End If
     Next
    cnt = .Count
    s_tag = Application.Transpose(.keys)
    s_val = Application.Transpose(.items)
    With 基準セル範囲
     .Offset(.Count + 1, 0).Resize(cnt, 1).NumberFormatLocal = "@"
'       追加して下さい↑
     .Offset(.Count + 1, 0).Resize(cnt, 1).Value = s_tag
     .Offset(.Count + 1, 1).Resize(cnt, 1).Value = s_val
     .Offset(.Count + 1, 0).Resize(cnt, 2).Sort _
            Key1:=.Offset(.Count + 1, 1), _
            Order1:=xlDescending, Header:=xlNo
       '↑ソートする
     End With
    End With
  Set dic = Nothing
End Sub
1 hits

【34650】カウント方法について hatena 06/2/9(木) 10:47 発言
【34655】Re:カウント方法について ichinose 06/2/9(木) 12:58 発言
【34660】Re:カウント方法について hatena 06/2/9(木) 14:30 質問
【34667】Re:カウント方法について hatena 06/2/9(木) 15:53 質問
【34678】Re:カウント方法について ichinose 06/2/9(木) 18:31 発言
【34710】Re:カウント方法について hatena 06/2/10(金) 12:04 お礼
【34733】Re:カウント方法について hatena 06/2/10(金) 18:21 質問
【34752】Re:カウント方法について ichinose 06/2/10(金) 23:29 発言
【34754】Re:カウント方法について ichinose 06/2/11(土) 5:48 発言
【34796】Re:カウント方法について hatena 06/2/13(月) 11:39 発言
【34805】Re:カウント方法について ichinose 06/2/13(月) 14:33 発言
【34818】Re:カウント方法について hatena 06/2/13(月) 18:42 お礼
【34662】Re:カウント方法について Kein 06/2/9(木) 15:00 回答
【34709】Re:カウント方法について hatena 06/2/10(金) 12:02 質問
【34713】Re:カウント方法について Kein 06/2/10(金) 13:47 回答
【34715】Re:カウント方法について hatena 06/2/10(金) 14:33 質問
【34716】Re:カウント方法について Kein 06/2/10(金) 14:48 回答

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