- ベストアンサー
Excel関数で特定の文字列を参照し、結果を表示する方法
- Excelの関数を使って、特定の文字列を参照し、結果を表示する方法について教えてください。
- Excelのセル内の文字列を条件として、他のセルの値を参照する方法について教えてください。
- ExcelのSUMPRODUCT・COUNTIF・IF・ROW・INDEX関数を組み合わせて特定の文字列を参照し、結果を表示する方法について教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
=MIN(10^ISERROR(FIND($B$1:$B$6,A1))*($C$1:$C$6),999) と入力してCtrl+Shift+Enterで配列数式にしてください。
その他の回答 (4)
- mu2011
- ベストアンサー率38% (1910/4994)
余りスマートでないのですが次の方法は如何でしょうか。 D1セルに=IF(SUMPRODUCT((RIGHT(A1,(LEN($B$1:$B$870)))=$B$1:$B$870)*(ROW($B$1:$B$870)))>0,INDEX($C$1:$C$870,SUMPRODUCT((RIGHT(A1,LEN($B$1:$B$870))=$B$1:$B$870)*(ROW($B$1:$B$870)))),999)を設定、D1セル枠の右下の■をダブルクリックして下さい。
お礼
ありがとうございます。 No4さんのものでできました。
- EL-SUR
- ベストアンサー率76% (83/108)
■D1セル =IF(SUMPRODUCT(COUNTIF(A1,"*"&B$1:B$870&"*")),INDEX(C$1:C$870,MAX(INDEX(COUNTIF(A1,"*"&B$1:B$870&"*")*(ROW(B$1:B$870)),0))),999) A列は検索用ならそれほどデータは多くないということですよね。 あまり多く入力すると処理が重くなります(それでなくても重いですが・・) B列に重複する文字列はありませんか? たとえば川越市と南川越市のように。 そういうのがあると正しい結果が返らない可能性があります。 その場合、B列の入力順は川越市→南川越市のように文字数の少ない方を上の行にしておけばいいかもしれません。 B列が何行目から始まっていても、ROW(B$1:B$870) はそのままにしておいてください。
お礼
ありがとうございます。 やってみましたがエラーが出てしまいました。 No4さんのもので解決できました。
D1セルに =IF(ISERROR(VLOOKUP(A2,$B$2:$C$870,2,FALSE)),999,VLOOKUP(A2,$B$2:$C$870,2,FALSE)) D列にフィルコピーでは??
お礼
ありがとうございます。やってみましたが、この方法だと、完全一致の際は正しく表示されるのですが、部分一致、例えば秩父郡横瀬町と書いてある中から横瀬町を検索して361と表示させるところが999になってしまいます。 もし原因がお分かりでしたら再度ご助言お願いします。
補足お願いします。 1.A列にはA1、A2、A3にそれぞれ別々の文字列が入っているようですが、検索対象となるのはあくまで「A1」ということでいいのでしょうか? だとすると、A2以降のセルは使用しないということになりますが。 2.上記の例ではD1に203とありますが、C1は201です。 これらの数字の間にはなぜ相関関係がないのでしょうか。
お礼
すみません、説明がわかりにくかったですよね。 補足しましたのでお手数ですがお願いします。
補足
1.A1の文字列の一部又は全部がB1~870の中に含まれているか検索したいのです。従って、D1に表示させるのはA1を検索した結果です。D1に表示させるときはA2以下のA列は使用しません。また、D2以降、関数をコピーしてA2、A3・・・の検索結果も出していきます。 2.A1に川田市とありますので、B列から川田市がないか検索します。するとB3にありますので、その行のC列、つまりC3の203をD1に表示させたいです。従って、A2は秩父郡横瀬町なので、B列から検索して秩父郡横瀬町の一部、横瀬町が入っているB4のC列、つまり361をD2に表示させる。という感じにしたいです。
お礼
できました~(泣) ありがとうございました(泣) これで仕事が進みます♪