• ベストアンサー

エクセルシートの検索・何回登場したか

自分でも調べてみたのですが、 良いやり方が思いつかず、困っています。 どうか質問させてください。 エクセルのシート(年毎に一枚,30枚ほど)があり、 各シートに氏名(文字列)が並んでいます。 成果をあげた人の名前なので、 同じ氏名が2度以上、多い人では一枚のシートに10回以上出現することもあります。 各氏名について、 エクセルの全てのシートを検索して、 何回登場したかを知りたいのですが、 良い方法はないでしょうか・・・。 どなたかご存知の方、ご教授いただけないでしょうか。

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

  • ベストアンサー
  • TTQ
  • ベストアンサー率56% (9/16)
回答No.1

この関数はどうでしょうか? =COUNTIF(A1:A30,"山田 太郎") このようにするとA1からA30までに入力されている 山田 太郎 と言う文字列の個数を調べることができます。 同様にSheet2以降にもこの関数のセルを作り、最後にカウントしたセルを串刺しで合計するという方法はいかがでしょうか?

aili55
質問者

お礼

ありがとうございます! COUNTIF・・・なるほど!眼からうろこです。 おかげさまでできました! 本当に助かりました。

その他の回答 (1)

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

VBAでやると(色々方法があるが) Sub test01() Dim sh As Worksheet t = 0 For Each sh In Worksheets 'MsgBox sh.Name x = WorksheetFunction.CountIf(sh.Columns("A:Z"), "a") MsgBox x t = t + x Next MsgBox t End Sub 1つのブックのAからZ列までに「大島」が何度現れるかカウントします。 ーー 上記で ●「大島」は任意の名前に変える。 ●A:Zは対象となる列(カウント解消の名前の現れる)に変える。 ●あるシートをカウントから除く If sh.Name <> "Sheet2" Then ・・ End If を入れる。 ●シート(例Sheet1)に件数を書き出す。 Sub test01() Dim sh As Worksheet t = 0 i = 1 For Each sh In Worksheets MsgBox sh.Name If sh.Name <> "Sheet2" Then x = WorksheetFunction.CountIf(sh.Columns("A:Z"), "大島") MsgBox x Worksheets("Sheet1").Cells(i, "J") = sh.Name Worksheets("Sheet1").Cells(i, "K") = x i = i + 1 t = t + x End If Next MsgBox t End Sub Msgboxは本番では削除して可。

aili55
質問者

お礼

詳しく教えていただき、ありがとうございます。 VBAを覚えておくと、とても役に立ちそうですね・・・。 頑張って勉強してみます。 ありがとうございました。

関連するQ&A