• 締切済み

エクセルマクロ 列同一文字の個数をカウントして・・

sheet1 C1:見出し、C2以降にデーター(表示形式:文字列)が入っているのですが 処理データーは毎回違い、特定ではありません。C2以降の同じ文字をカウントして、 その数をメッセージボックスに表示させたいのですが・・・色々調べて試してみたのですが、 上手くいきません。 メッセージボックスの表示イメージ     1111 50件     2111 25件        3111 10件     C1 見出し C2 1111 C3 1111 C4 2111 C5 3111 C6 3111 |  | C* 1111  以上、ご教示よろしくお願いいたします。

みんなの回答

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

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 とか。

nikorasu_k
質問者

お礼

ありがとうございます。 色んな書き方があるのですね・・・ ホント、勉強になりました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

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 みたいな。

nikorasu_k
質問者

お礼

ありがとうございます。 大変助かりました。 これで、今晩眠れそうです。 本当に貴重なお時間使っていただき 感謝いたします。

関連するQ&A