• 締切済み

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

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

noname#242384
noname#242384

みんなの回答

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

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

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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

  • 関数で可視セルのデータ個数カウント

    Excel2002を使用しています。 オートフィルタで抽出したデータの個数を関数で カウントしたいのですが、可視セルのみをカウント 出来る関数はあるのでしょうか? 例えば   A 1 件数 2  2 3  1 4  3 5  1 6 関数 A6セルに何らかの関数を入れておき、 A列のオートフィルタを使って、1を抽出した時は A6に”2” 3を抽出した時はA6に”1”を表示させたいの です。 このように、可視セルのデータ個数のみを カウントする関数はありますでしょうか? フィルタを使わずにCOUNTIF関数でカウントする 方法、また、可視セルをコピー貼り付け後 カウントする方法は避け、あくまでフィルタで 抽出したデータの個数を瞬時にカウントしたいの です。 ご教授宜しくお願いします。

  • 可視セルの重複データを除いたデータをカウントする方法

    可視セルの重複データを除いたデータをカウントする方法 Excel2003を使用しています。 A列~N列までオートフィルタを設定しています。 K列である特定の文字が入力されているセルを抽出しているときに表示されているC列のデータのうち、重複するデータを除いた個数を求めたいのですが、どうしたらよいでしょうか? 上記の状態で、C列のプルダウンに表示されているリストのデータ数が求めたい個数と同じになりますが、プルダウンに表示されているリストのデータ数をカウントする方法などあるのでしょうか? よろしくお願いします。

  • エクセルでセルをカウントしたい!

    エクセルを使ってある言葉が出てくるセルの数をカウントしたいと 思っています。 たとえば一つのセル、 Aの1に「言葉の数を数えます。」 と文字がはいっていたとして、 これを=COUNTIF(A1:A1,"*数*")とすれば、 出てきた個数ではなく、セルの数として 「1」と返ってくると思います。 これを応用して、 Aの1に「数」と入力されていて、 Bの1に「言葉の数を数えます。」が入っていて、 =COUNTIF(B1:B1,"*数*")で数えるのではなく、 =COUNTIF(B1:B1,"*A1*")としてAの1の文字を 認識させてセルの数をカウントしたいんです。 しかしこれではエラーがでるし、 だからといって =COUNTIF(B1:B1,A1)では0になってしまいます。 どのようにすればA1の文字を参照させセルの数を カウントすることができるでしょうか?

  • エクセルのセル内の数字をカウントしたい・・

    エクセルのカウントについて教えて下さい。 「5,6,7」や「10,11,15,20」などのように書かれたセルがあります。 カンマで区切られた数字の個数を自動的に数え別のセルにその結果を書き出したいのですが、 エクセルの数式だけでできますか? できればVBAは使いたくないと思います。 例:「5,6,7」なら"3" 、 「10,11,15,20」なら"4"と言う感じです。 よろしくお願いいたします。

  • エクセル 重複データのカウント

    初めまして。 初めて質問いたします。 よろしくお願いいたします。 エクセルで、A列に7ケタの数字13万件         B列に同じく7ケタの数字100~2000件         C列にB列にデータがある行まで=COUNTIF($A$2:$A$130000,B2) 上記の状況で、C列の値は1か0しか出ない状態なので、 セルD1に=COUNTIF(B2:B2000,0)と入れてB列にあるけどA列にないデータの 数(重複していないデータ)をカウントしています。 しかしながら、ベースとなっているA列のデータが13万件と多いので、 再計算などに結構時間がかかっているので、どうにかならないかと思いまして 質問させていただきました。 ちなみに、A列のデータは少しずつ増えていきます。 1度B列にあってA列にないデータは、次にB列に違うデータを入れてカウントする際に 新規データとしてA列に追加しています。 なんとか処理が速くなる方法などありましたらご教授下さい。 よろしくお願いいたします。

  • エクセルにて指定データをカウントする。

    以下のようなデータがあります。 ○ × = × × = ○ ○ ここにはデータが全部で8個あり、=が2個ありますから これを 2/8と表示させたいと思ってます。 指定した範囲のセルの個数はCOUNTA、指定したデータと一致するものは COUNTIFで数えられると思いますが、これらを A / B という表示形式で表示する方法が分かりません。また、COUNTIFの中で COUNTIF(A1:A8, "×")はうまく動きますが、COUNTIF(A1:A8, "=")はちゃんとカウントしてくれません。よろしくお願いします。

  • カウント方法

    シート【A】に入力されているデーターの個数を、シート【B】の表にカウントさせたいのですが、シート【A】のデーターは毎日消され新たに入力される状態になっています。 そこで、データーが消えてしまってもカウントした個数を残るようにし新たに入力された個数をプラスさせていく方法はありますか? 例 ~本日~ シート【A】    A       B  品名  個数 1 赤   2 2 白   3 3 赤   4 シート【B】    A       B  品名  個数 1 赤   6 2 白   3   ↓ ~翌日~ シート【A】    A       B  品名  個数 1 赤   5 2 白   1 3 白   3 シート【B】    A       B  品名  個数 1 赤   11 2 白   7

  • 重複データのカウント

    こんにちは。 何個か似たような質問が過去にありますが、それを参照してもなかなかうまく式が組めないので、投稿させていただきます。 A列  B列 ○   1 ○   2 ▲   3 ◆   2 ▲   1 ○   2 このようにデータがある場合、 ○… ○*1 + ○*2 + ○*2 ▲… ▲*3 + ▲*1 ◆… ◆*2 としてカウントを行いたいと思います。 A列のデータはこの3種類ではなく、常に変化します。 SUMPRODUCTを使うべきでしょうか?? 初歩的な質問で申し訳ありません。 宜しくお願します。

  • エクセルで連続するデータの個数だけカウントする

    エクセルは2013を使用しています。 シートには各セルに「○」 「×」 「□」 「空白」が入力されています。    A   B  C 1  ○   ○ 2  × ○   3  × ○ □ 4     ○ □ 5  ○ × □ 6  × □ ○ 7  ○ □   8       ○ 計  2 5 3 ※A列の計・・・×が連続している ※B列の計・・・○と□が連続している ※C列の計・・・□が連続している このように連続するデータの個数だけをカウントする方法を教えて下さい。 よろしくお願い致します。

  • データの無いセルをカウントしない方法

    下記の数式で、各数字の合致数を求めて表示しています。 =SUMPRODUCT(COUNTIF(I4:J4,B2:C3000)) 求めるデータ数が、毎回違う為、範囲をB2:C3000としています。 データがC3000迄無い場合、空欄のセルをゼロと認識して、ゼロのカウントが増えてしまいます。 空欄の部分は、ゼロとしてカウントせず、データが入っている部分だけカウントする方法はありますでしょうか? ご教授、宜しくお願いします。

専門家に質問してみよう