初めて問い合わせします。大量のデータを検証しなければいけません。
関数などで方法を教えて頂ければ幸いです。
1セルに対し、1セルを検索する方法はわかっております(countifやifを使って)
でも、セル単位ではなく文字列単位での検索方法を知りたいと思います。
わかりづらいかもしれませんが、現状をお知らせします。
シート1「登録データ一覧」(5万件)
A列1行目 ア社
A列2行目 イ社
A列3行目 ウ社
A列4行目 エ社
A列5行目 ☆ーア社
A列6行目 ウー☆社
シート2「検索したい社名一覧」(500社)
A列1行目 ア社
A列2行目 イ社
A列3行目 ウ社
<出したい結果>
(1)検索したい会社が、シート1上で何社登録があるか
ア社→【答え:2社】
イ社→【答え:1社】
ウ社→【答え:2社】
(2)登録データ一覧上、検索したい会社が存在するか
ア社→【答え:○】
イ社→【答え:○】
ウ社→【答え:○】
エ社→【答え:×】
☆ーア社→【答え:○】
ウー☆社→【答え:○】
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
1)検索したい会社が、シート1上で何社登録があるか
=COUNTIF(範囲,"*ア*社*")
となれば上記の回答になります。
(2)登録データ一覧上、検索したい会社が存在するか
{=IF(SUM(COUNTIF(セル,{"*ア*社*","*イ*社*","*ウ*社*"})),"○","×")}
と配列数式にすれば結果は出せます。
※配列数式は{}無しの状態を入力して、Ctrl+Shift+Enterで設定できます。
つまり "ア社" を "*ア*社*" に変換できるようにすればOKなのですが
中間に*を追加できる関数がないのでユーザー定義する必要があります。
Function MOJIPLUS(MOJI)
Dim MOJIP(1 To 500)
For Each Mc In MOJI
Mx = Mx + 1
ML = Len(Mc)
For I = ML To 1 Step -1
MOJIP(Mx) = Mid(Mc, I, 1) & "*" & MOJIP(Mx)
Next I
MOJIP(Mx) = Replace("*" & MOJIP(Mx), "**", "*")
Next Mc
MOJIPLUS = MOJIP
End Function
上記で500セルまでの範囲のセルに対応できますがその分、メモリを食うので検索データ数の増減はご自身でご検討ください。
(1)=COUNTIF(範囲,MOJIPLUS(検索文字))
(2){=IF(SUM(COUNTIF(セル,MOJIPLUS(検索文字の範囲))),"○","×")}
で計算できるはずです。
ご回答ありがとうございました。
今回は、これだといくつか問題が発生してしまった為、counifに*を入れて検索し、目で調べる方法で処理しました。
しかし、このユーザー定義のおかげで、他の作業がとても楽になりました。ありがとうございました。
No.7
- 回答日時:
#06です
本当の目的はシート2に「エクセル」という文字列があり、シート1の会社名から「エクセル」という文字列を含む会社の数を検索したいということでしょうか。これなら関数で可能です。
B1の式は以下の通りです
=COUNTIF(Sheet1!A:A,"*"&A1&"*")
(COUNTIF関数はワイルドカードが使用できます)
質問では「ウ」と「社」の両方の文字列を含む会社の数を検索したいとおっしゃっているように読み取れました。もしシートに「エクセル社」と文字列があって、「エクセル」と「社」の両方を含む会社の数を検索しようとすると、これは実現が困難です。
それは「エクセル,社」「エク,セル社」「エ,クセル社」のように文字列のどこを区切りににして検索すれば良いのかが機械的に判定できないからです。
ご回答ありがとうございました。
説明の仕方があまりうまくなく、混乱させてしまったこと、お詫び致します。
わかりやすい説明をありがとうございました。
今後ともよろしくお願い致します。
No.6
- 回答日時:
補足要求です
>ウ社→【答え:2社】
とのことですが、これはシート1の「ウ社」と「ウー☆社」が該当するのでしょうか?
すると具体的な例で書くと、シート1に「宇宙株式会社」「宇宙有限会社」「宇宙電気株式会社」「小宇宙社」がある場合は
「宇社」→【答え:4社】
になるのですか? 何か変ですね。
また「小宇宙社」はシート2に「宇社」と「小社」があった場合どちらでカウントするのが正しいのでしょうか。
集計の条件をもう少し補足していただけませんか
この回答への補足
ご回答ありがとうございました。
確かにおっしゃるとおりの内容ではおかしいのですが、検索したい500社が正式社名となっており、zap35さんの例のような件数は少ないと考えています。
たとえば「エクセル」という会社の検索をしたい場合、「エクセル」はヒットしても「エクセル 経理部」がヒットしない方が困る件が多数出た為、今回の問い合わせとなりました。
※「エクセルインターナショナル」がヒットしてしまってもいたしかたない状況と考えています。
100%正しいデータを作りたいのですが、私では力不足ゆえ、こういった方法を探すこととなりました。
よろしくお願い致します。
No.5
- 回答日時:
考えていましたが、☆の部分が確定していない場合は(1)は関数だけでくむのはかなり難しいと思います。
(「有限」・「株式」などある程度決まっていればよいかもしれませんが)
No3の方の通りマクロで実行してみてはどうでしょうか?
(2)については
=IF(COUNTIF(Sheet1!$A$1:$A$50000,Sheet2!A●)>0,"○","×")
で良いと思います。検索と言うことは一つのセルに入力した後結果が出るようにするのでしょうか?その場合は●を入力欄に合わせます。
早速のご回答、ありがとうございました。
おっしゃる通り、マクロ実行しかないのかもしれません。
初めての単語もある為、少し時間をかけて考えてみようと思います。
お時間割いていただきありがとうございました。
No.4
- 回答日時:
はじめまして
勝手に話を変えちゃいけないとは思うのですが、察するところ「☆」は「株式会社」表すのではないかと…
シート1「登録データ一覧」(5万件)
A列1行目 マルビシ
A列2行目 上田屋
A列3行目 たつなみ
A列4行目 Koide
A列5行目 株式会社マルビシ
A列6行目 たつなみ株式会社
シート2「検索したい社名一覧」(500社)
A列1行目 マルビシ
A列2行目 上田屋
A列3行目 たつなみ
…でよろしければ…
シート1のB1に
=IF(ISERROR(FIND("株式会社",A1)),A1,IF(FIND("株式会社",A1)=1,MID(A1,5,100),LEFT(A1,LEN(A1)-4)))
これをB50000迄コピー(B1セルの右下にカーソルを合わせカーソルが十字に変わったらダブルクリック)する。
シート2のB1に
=COUNTIF(Sheet1!$B$1:$B$50000,Sheet2!A1)
これをB500までコピーB1セルの右下にカーソルを合わせカーソルが十字に変わったらダブルクリック)する。
シート1のC1に
=IF(COUNTIF(Sheet2!$A$1:$A$500,Sheet1!B1),"○","×")
これをC50000迄コピー(C1セルの右下にカーソルを合わせカーソルが十字に変わったらダブルクリック)する。
これでいかがでしょうか?
勝手に変えてしまいましてごめんなさい。
ご回答ありがとうございました。
しかし、「株式会社」などは元々入力しないように整理しているデータベースなので、伺いたかった事ではありません。
お時間割いていただきありがとうございました。
No.1
- 回答日時:
(1)検索したい会社が、シート1上で何社登録があるか
ア社→【答え:2社】
イ社→【答え:1社】
ウ社→【答え:2社】
を出すには、COUNTIFが使えると思います。
たとえばシート3上に
=COUNTIF(Sheet1!$A$1:$A$50000,Sheet2!A1)
これをA500までコピーすればよいと思います。
条件複写なので、検索範囲が崩れると困るので$でAを囲んでおきます。
ちなみに「COUNTIF(範囲,検索条件)」は、範囲内で条件に一致するのは何件あるかを表示します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) Excel_マクロ_複数のシートのVLOOKUPで表示された#N/A以外に色付けをしたいです 1 2023/02/16 22:37
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数学 Tan(θ)-1/Cos(θ)について...
-
スマートな関数を教えて下さい。
-
Excel ウインドウ枠の固定をす...
-
EXACT関数とIF関数の組み合わせ...
-
4つのパターンを表示するEXACT...
-
関数を教えて下さい。
-
Excel:一部のフォントでセルの...
-
エクセルで指定した日付、店舗...
-
エクセルでセルに「氏名を入力...
-
Excel 2019 のピボットテーブル...
-
スプレッドシートの関数VLOOKUP...
-
エクセルで日付の入ったセルの...
-
Excelファイルの「数式」タブ→...
-
excelの不要な行の削除ができな...
-
Excelのif関数で文字が見えなく...
-
各ページの1番上の表示について
-
エクセル関数に詳しい方、教え...
-
INDIRECTを使わず excelで複数...
-
Excel 2019 は、SPILL機能があ...
-
UNIQUE関数が使えないバージョ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報