• 締切済み

同一セル中にある重複データをカウントしたい

例えば、A1セルに「2, 2, 2, 3, 12, 22」というカンマで区切ったデータがあり、B2セルに2の個数をカウントしたい(12、22はカウントしない)時、どうすればいいのでしょうか?

みんなの回答

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

頗る“原始的な”方法だけど… 添付図参照、 セル A1 選択 ⇒ Ctrl+C ⇒ セル D1 選択 ⇒ Ctrl+V ⇒ そのままの状態で Alt+AZDEDNCSF ⇒ セル B1 選択 ⇒ キーボードから =countif( を入力した後でマウスでセル B1 選択 ⇒ Ctrl+Shift+→ ⇒ 続いて ,2)を入力(結果的に 式 =COUNTIF(D1:I1,2) を入力したことになる)して Enter をパシーッ

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

通常の関数では、むつかしそうなので、VBAでやってみた。 VBAが縁遠いようなら無視して。 別に、VBAでユーザー関数化はできる。 ーー データ Sheet1のA1:A9 B列が実行結果 A列はデータ B列は結果ですが先に上げたもの。 2, 2, 2, 3, 12, 22 3 2,12,34,52,2  2 3,4,4,5,6,22,2  1 3,2,4,5,2,22,3  2 3,3,4,5,6,22,4,2  1 3,2,4,2,6,22,5  2 3,2,4,5,26,22,6,2  2 3,2,2,5,2,22,7  3 2,2,4,5,2,22,2   4 標準モジュールに Sub test01() For i = 1 To 9 p = Split(Worksheets("Sheet1").Cells(i, "A"), ",") Worksheets("Sheet2").Range("A1:X1") = p x = pplication.WorksheetFunction.CountIf(Worksheets("Sheet2").Range("A1:X1"), 2) Worksheets("Sheet1").Cells(i, "B") = x Next i End Sub Sheet2は作業シートであるとして、確保してください。 上記では、データ数(カンマ数+1)が26を超えるケースもあるときは、修正必要。 ーー Split関数は便利。 Countiif関数が配列データで使えれば、わかりやすいのだが、VBAでは、セルのデータでないと(配列データに対してでは)使えないようだ。 ーーー Pythonではカウントできるようだ。うらやましい。 https://note.nkmk.me/python-collections-counter/ >キーとして要素を指定するとその個数を取得できる。・・ print(c['a']) # 4

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

つたないコードですが動きました。 Option Explicit Public Sub countDuplication() Dim i As Long Dim j As Long Dim arr As Variant Dim result As Variant Dim blnMatch As Boolean With ActiveSheet arr = Split(.Range("A1"), ",") ReDim result(UBound(arr), 1) result(0, 0) = arr(0) For i = 0 To UBound(result, 1) result(i, 0) = -1 result(i, 1) = 0 Next i result(0, 0) = arr(0) For i = 0 To UBound(arr) blnMatch = False For j = 0 To UBound(result, 1) If result(j, 0) = arr(i) Then result(j, 1) = result(j, 1) + 1 blnMatch = True Exit For End If Next j If blnMatch = False Then For j = 0 To UBound(result, 1) If result(j, 0) = -1 Then result(j, 0) = arr(i) result(j, 1) = 1 Exit For End If Next j End If Next i .Range("B2") = result(0, 1) End With End Sub

関連するQ&A