- ベストアンサー
EXCELで企業名を検索し、フラグを立てたい。
EXCEL2000を使用しています。 つかぬ事をお伺い致しますが、 1.sheet1に企業名や、担当者名、住所等々が入ったデータがあります。 2.行いたい作業は、企業名に例えば、<NTT***>や<SONY****><NEC**>と入った企業名の隣の列にフラグを立てたいのです。 3.2.であげた企業のグループ会社にフラグを立てたいのです。 4.その他には、中小企業も入っており、1社しか社名がないものをもちろんあります。これにはフラグは立ちません。 5.検索する名称がはっきりとわかっていれば、 (=IF(OR(COUNTIF(A1,"*NTT*"),COUNTIF(A1*NTT*")),"1",""))でいいのですが、1万件程のデータがあり、条件に一つ一つの企業名を入れて計算式を完成させるのではなく、「左から何文字目かが同じ文字であれば、フラグが立つ」ようにしたいのですが、このような事は可能でしょうか? 解りにくくて恐縮ですが、ご回答の程、よろしくお願い致します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#04です。マクロをちょっと改変します .Cells(idxB, 3) = "*" の行を .Cells(idxB, 3) = .Cells(idxA, 1).Value に変更して下さい。そうすれば結果は以下のようになり、後で検索しやすいと思いました。 A列 B列 C列 検索企業 企業リスト グループ nec aaaaaa sony bbbbbb ntt eenecee nec ffffSONY sony hhhhhh ntt-comgg ntt 以下続く
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
>解りにくくて恐縮ですが 4,5が判りにくい。例示が不十分。 で回答者側でこうですかと聞かねばならない。 文字列の中にその「文字連」が見つかれば、どこでもということで やってみます。 A1に会社名・文字列を入れる A2以下に 会社名データがあるとする。 例データA1とA2:C6(c2:C6は後記関数式の結果) SONY NTTコミニ コミNTT マリンSONY 1 NTTメンテナンス SONYミュジック 2 C2に =IF(ISERROR(FIND($A$1,A2)),"",MAX($C$1:C1)+1) と入れて下方向に式を複写。 E2に =IF(ROW()-1>MAX($C$2:$C$100),"",INDEX($A$2:$A$100,MATCH(ROW()-1,$C$2:$C$100,0),0)) と入れて下方向に式を複写。 結果 マリンSONY SONYミュジック こんなのでよいですか。 フラグだけならE列は不要。 自称imogasi方式というとき方で、OKWAVEに沢山載せている。
お礼
無事に作業が出来ました。 どうもありがとうございました。 またよろしくお願い致します。
- zap35
- ベストアンサー率44% (1383/3079)
COUNTIFの条件が *NTT* となっているところをみると企業名の途中に文字列があってもヒットさせたいのかな? と思いました。 このマクロはA列(A2から下)にヒットさせたい企業名、B列(B2から下)に企業リストを入れて動かすと、C列にフラグが立つようにしたものです。nttなどの文字列が先頭になくても良いですし、大文字、小文字は区別しません。 A列 B列 C列 検索企業 企業リスト nec aaaaaa sony bbbbbb ntt eenecee * ffff 以下続く Private Sub リスト突合() Dim Kekka Dim idxA, idxB As Long Application.ScreenUpdating = False With ActiveSheet For idxB = 2 To .Range("B65536").End(xlUp).Row .Cells(idxB, 3) = "" For idxA = 2 To .Range("A65536").End(xlUp).Row Kekka = Application.Search(.Cells(idxA, 1).Value, .Cells(idxB, 2).Value) If IsNumeric(Kekka) Then .Cells(idxB, 3) = "*" idxA = .Range("A65536").End(xlUp).Row + 1 End If Next idxA Next idxB End With Application.ScreenUpdating = True End Sub 最初はfunctionにしようかとも思いましたが件数が多いとのことなのでマクロにしました。文字列検索で配列関数が使えないため、マクロでも時間がかかると思いますがちょっと我慢して下さい
- mshr1962
- ベストアンサー率39% (7417/18945)
#2です。 >入力した結果、「値の更新:Sheet2」のウインドウが出てきて、今式を入れたシートを選択した結果、「#N/A」という値が全てに返ってきました。 NTT,SONY,NECを入力したのはSheet2ですよね。 その範囲を選択した状態で「挿入」「名前」「定義」で 名前を検索企業にして「追加」を押してください。 これで上手くいきませんか?
お礼
無事に作業が出来ました。 どうもありがとうございました。 またよろしくお願い致します。
- mshr1962
- ベストアンサー率39% (7417/18945)
上記2をSheet2に記入(例 検索企業=Sheet2!$A$2:$A$100) =TEXT(SUMPRODUCT((検索企業=LEFT(A1,LEN(検索企業)))*1),"#")
補足
ご回答いただき、ありがとうございます。 入力した結果、「値の更新:Sheet2」のウインドウが出てきて、今式を入れたシートを選択した結果、「#N/A」という値が全てに返ってきました。 何が問題なのでしょうか? 申し訳ありませんが、ご回答の程、よろしくお願い致します。
- mu2011
- ベストアンサー率38% (1910/4994)
左からn文字取り出し、それにあった企業リストを検索する方法ですが如何でしょうか。 =IF(SUMPRODUCT((LEFT(A1,3)=3文字企業名リスト)+(LEFT(A1,4)=4文字企業名リスト)),1,"") ※企業名リストは絶対参照範囲で指定(例えば、A1:A10なら$A$1:$A$10)して下さい。
お礼
無事に作業が出来ました。 どうもありがとうございました。 またよろしくお願い致します。
補足
解りやすいご回答をいただき、ありがとうございます。 入力したのですが、ひとつもフラグが返ってきません。 何が原因なのでしょうか? 考えられる理由で結構ですので、ご回答頂ければ助かります。 よろしくお願い致します。
お礼
無事に作業が出来ました。 どうもありがとうございました。 またよろしくお願い致します。