- ベストアンサー
出現回数
Excel2013で、1つのセルに3つの駅名があります。 これから同じ駅がそれぞれ何回出てくるかを知りたく思います。 例えば、“東京 大阪神戸”、“京都 大阪岡山”、“広島 東京京都”、“広島 東京京都”です。 ここで、スペースは表示の都合で入れています。続く場合は区切りは入っていません。また、出てくる駅名は有限で、何れも漢字2文字とします。 またどのセルも同じ書式です。 上の場合の答えは次の通りです。 東京:3 大阪:2 神戸:1 京都:3 岡山:1 広島:2 合計:12
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
[No.4]ですが、[No.2]の添付図のセル D1 に次式を入れるってのは如何でしょうか? =SUMPRODUCT((LEFT(A$1:A$100,2)=C1)+(MID(A$1:A$100,4,2)=C1)+(RIGHT(A$1:A$100,2)=C1))
その他の回答 (4)
済みません、取り急ぎ、[No.2]の回答は撤回します。 なぜなら、例えば “横浜 伊東京都” なるデータの場合は、「東京」をカウントしてしまうから。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 手っ取り早くVBAでやってみました。 ↓の画像のように元データはA列1行目からあり、 C・D列に表示するとします。 シートモジュールです。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, cnt As Long Dim c As Range, str As String, buf As String Range("C:D").Clear For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row buf = WorksheetFunction.Substitute(StrConv(Cells(i, "A"), vbNarrow), " ", "") For k = 1 To Len(buf) Step 2 str = Mid(buf, k, 2) Set c = Range("C:C").Find(what:=str, LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then cnt = cnt + 1 Cells(cnt, "C") = str Cells(cnt, "D") = 1 Else With Cells(c.Row, "D") .Value = .Value + 1 End With End If Next k Next i With Cells(Rows.Count, "C").End(xlUp).Offset(1) .Value = "合計" .Offset(, 1) = WorksheetFunction.Sum(Range("D:D")) End With Range("C1").CurrentRegion.Borders.LineStyle = xlContinuous End Sub 'この行まで ※ 「駅名」は2文字という前提です。 ※ 関数でないのでデータ変更があるたびにマクロを実行する必要があります。m(_ _)m
- aokii
- ベストアンサー率23% (5210/22062)
お礼
一発で解決できました。 No.2に対する私の補足はno.4,5を読む前でした。 ありがとうございました。