- 締切済み
エクセルマクロ 列同一文字の個数をカウントして・・
sheet1 C1:見出し、C2以降にデーター(表示形式:文字列)が入っているのですが 処理データーは毎回違い、特定ではありません。C2以降の同じ文字をカウントして、 その数をメッセージボックスに表示させたいのですが・・・色々調べて試してみたのですが、 上手くいきません。 メッセージボックスの表示イメージ 1111 50件 2111 25件 3111 10件 C1 見出し C2 1111 C3 1111 C4 2111 C5 3111 C6 3111 | | C* 1111 以上、ご教示よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- okormazd
- ベストアンサー率50% (1224/2412)
Sub test() Dim r As Long, mxr As Long, nc As Long, n As Long, retmes As String mxr = Range("C" & Rows.Count).End(xlUp).Row For r = 2 To mxr nc = WorksheetFunction.CountIf(Range("C" & r & ":C" & mxr), Range("C" & r)) If nc = 1 Then n = WorksheetFunction.CountIf(Range("C2" & ":C" & mxr), Range("C" & r)) retmes = retmes & Range("C" & r) & vbTab & n & "件" & vbCrLf End If Next MsgBox retmes End Sub とか。
- keithin
- ベストアンサー率66% (5278/7941)
sub macro1() dim d as object dim h as range dim x dim res as string on error goto errhandle set d = createobject("Scripting.Dictionary") for each h in range("C2:C" & range("C65536").end(xlup).row) d(h.value) = d(h.value) + 1 next for each x in d.keys res = res & vblf & x & vbtab & d(x) & "件" next res = mid(res, 2, 9999) msgbox res exit sub errhandle: d.add h.value, 1 resume next end sub みたいな。
お礼
ありがとうございます。 大変助かりました。 これで、今晩眠れそうです。 本当に貴重なお時間使っていただき 感謝いたします。
お礼
ありがとうございます。 色んな書き方があるのですね・・・ ホント、勉強になりました。