• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ある文字が含まれているセルの個数を結果表示)

セル内の特定の文字を含むセルの個数を結果表示する方法

このQ&Aのポイント
  • Excel2003の環境で、特定の文字が入っているセルの個数を集計し、結果をセル「AC1」に表示する方法について質問させてください。
  • 質問内容は、セル「S列」に「test」という文字が含まれているセルを探し、その個数をカウントして結果を表示したいというものです。
  • データ数が変動するため、ワイルドカードを使用して検索する方法を試していますが、うまくいっていない状況です。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 Excel2003を所有していないため、動作確認が出来ておりませんが、おそらく次の様なVBAのマクロで大丈夫だと思います。 Sub Macro1() Dim ans As Long ans = Application.WorksheetFunction.CountIf(Columns("S:S"), "*test*") Range("AC1").Value = ans End Sub

その他の回答 (2)

noname#212058
noname#212058
回答No.2

EXCEL の COUNTIF 関数を使うのではだめでしょうか? これならワイルドカードも使えますし。 http://www.pursue.ne.jp/Document_xls/xls0022.htm どうしても VBA で処理したいのであれば WorksheetFunction.CountIf メソッドとか。 http://www.happy2-island.com/excelsmile/smile03/capter01404.shtml

saiwai
質問者

お礼

サイトのご提示ありがとうございました。 本来の状態では、結構大がかりなVBAになっておりまして… 実際のデータ数も100程度から万単位の場合もありまして VBAでという希望でした。 素人にちょっぴり毛が生えたレベルの自分にはなかなか難しい事が多いですが ご提示いただいたサイト等も活用させていただきます。

noname#203218
noname#203218
回答No.1

2003ユーザーではありませんが、Likeでワイルドカード比較出来る思います。 変数は全部Longに統一しました。 for~nextは最終行から行う必要はありませんので1行目からとしています。 ifは今回分岐が無いので1行で可能です。 Sub Macro1() Dim Maxrow, i, ans As Long ans = 0 With ActiveSheet Maxrow = Range("S" & Cells.Rows.Count).End(xlUp).Row For i = 1 To Maxrow If Range("S" & i).Value Like "*test*" Then ans = ans + 1 Next i Range("AC1") = ans End With End Sub

saiwai
質問者

お礼

よく下から上がってをやっているせいで、固定観念にとらわれておりました… もっと柔軟に考えられるようにしないといけませんね。 ご教授ありがとうございました。