• ベストアンサー

EXCEL 部分一致でLookup 条件が増えてしまいました

avanzatoの回答

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.1

こんにちは。 ユーザー定義関数を使用したほうが簡単かと思います。 以下を標準モジュールに追記してください。 Option Explicit Function NVLOOKUP(Str As String) Dim I As Integer For I = Len(Str) To 1 Step -1 NVLOOKUP = Application.VLookup(Left(Str, I), Range("Sheet2!A1:B5").Value, 2, False) If IsError(NVLOOKUP) = False Then Exit For Next I End Function Sheet1のB1に =NVLOOKUP(A1) にして、以降コピーで良いです。 これで結果が出ると思います。 動作の説明ですが ユーザー定義関数NVLOOKUPの中で引数をVLOOKUPしています。 ただし、引数をLEFTを使い一文字づつ減らして検索します。 VLOOKUPの戻り値がエラーでなければそのときのVLOOKUPの戻り値が返されます。

k8-stk
質問者

お礼

ご回答ありがとうございます! VBAはあまりわからないので勉強になりました。 試してみましたが、なぜか上手くいかない箇所がありました。 私のやり方がまずかったのかもしれませんが、今回はend-u様の方法を使わせていただきました。 VBAも学んでいきたいと思います。 本当にありがとうございました。

関連するQ&A

  • EXCEL 部分一致でLookup

    お世話になります。 エクセルで悩んでいます。 Sheet2(値段表マスターデータ)を参考に、 Sheet1へ機種の値段を入力していきたいと思っています。 以下のような形式になっています。 Sheet1 (☆に値段を入れたい)   機種名 値段 1 A-5    ☆ 2 A-23SS   ☆ 3 A-101   ☆ 4 A-56ABC  ☆ 5 B-1234   ☆ ・ ・ ・ Sheet2 (値段表のマスターデータ)   機種名 値段 1 A-5 1000 2 A-23 2000 3 A-56 3000 4 A-101 4000 5 B-1234 5000 ・ ・ ・ (以下数千行) 【望む結果】 Sheet1   機種名 値段 1 A-5    1000 2 A-23SS   2000 3 A-101   4000 4 A-56ABC  3000 5 B-1234   5000 ・ ・ ・ VLOOKUP関数で処理できるかと思ったのですが、 派生機種などがあり、後ろに違うアルファベットがついたりするので不可能でした。  (上記Sheet1の「A-23SS」「A-56ABC」のようなもの) Sheet2を参考に、「A-5」「A-56」などをちゃんと区別して 結果を出すことは可能でしょうか。 よろしくお願いします。

  • 条件に合ったデータを抜き出す

      A   B   C   D 1 あ   AA   VV   FF 2 い   CC   FF   HH 3 あ   SS   FF   DD 4 う   SS   EE   AA 以上のようなデータが有るときに、別シートに A列のデータを条件に以下のように抜き出したいのです。 別シートの各セルに式が入っていて、上記データを 変更しても別シートの抽出結果が自動で変わるようにしたいです。 ”あ”の抽出   あ   AA   VV   FF   あ   SS   FF   DD ”い”の抽出   い   CC   FF   HH ”う”の抽出   う   SS   EE   AA

  • エクセルの関数の使い方(ルックアップ?)

    エクセルの関数の使い方(ルックアップ?) 例えばシートが2枚あります。 ・1シート目 A列に 1 2 3 4 5 と並べます。 ・2シート目 A列に 3 5 と並べます。 この時、2シート目のA列に該当する数字が1シート目のA列に存在した場合、 1シート目のB列(A列の横)に○又は1を入力したいです。 どうすればできるでしょうか?

  • エクセル:データ一致したとき1を足す

    教えて下さい。 シート(1)A列とB列に Aさん 2 Bさん 1 Cさん 3 Dさん 5  と1000行くらいあります。 シート(2)A列に Aさん Dさん Eさん   とあります。 シート(2)にある人のみシート(1)のB列の数字に1足したいのですが何か方法はありますか? 自慢じゃないけどVBAは分かりません。 どうぞよろしくm(__)m

  • Excel 条件付き書式に付いて

    Excel のシートでA1からA10まで4桁の数字が入っています。 その中に、例えば 3546c のように語尾にアルファベットが一文字入っているもんもあります。このアルファベットの入った行のG列のセルに色をつけたいのですが、どうしたらよいか教えて下さい。 A1 2365 A2 8634e A3 8635 A4 2975f 宜しくお願いいたします。

  • エクセルのLOOKUP関数について

    いつもお世話になってます。 Win98 Excel97です。 以前教わったIF関数でがんばろうとしたら7つまでしか入らないみたいで(T_T) Aのセルに数字1~10(これ以外の数字は入りません)までを入れると色々と反映するようにしたいのです。 入力はシート1のAセルのみにしたいのですが A B     C 1 ○○会社  03-×○ 2 ▲▲会社  045- 3 ■■会社  03- ・ ・ ・ のように10種類まであります。 受注するたびに手入力なんですが条件が多い上、手入力でミスが多発してます(T_T) 毎日のことなので固定させたいのですが、元となる表をシート2の1~10行で作りました。 シート1のAセルに1と入力したらシート2のA1行を丸ごと持ってきたいのですが?。 シート1のAセルは1000行まであり、1~10までのどれかしか入らないので何とかしたいのです。 説明不足でしたら補足はすぐお入れ致します。 どうぞよろしくお願い致します。  

  • 複数の条件で他のシートを検索する

    先日教えてくださった方々ありがとうございました。 また質問なんですが、先生方知恵を貸してください。 sheet1 A | B | C | D | E | F | G ======================= 1 | 2 | 3 | AA | BB | 00 | 空欄 1 | 2 | 3 | BB | CC | 11 | 空欄 2 | 3 | 4 | CC | AA | 22 | 空欄 5 | 6 | 7 | BA | CA | 12 | 空欄 sheet2 A | B | C | D ========================== AA | BB | 00 | 3 AD | C | 01 | 4 BB | CC | 11 | 2 CC | AA | 22 | 4 CA | BA | 20 | 5 BA | CA | 12 | 1 このように入力されています sheet1のDEFに完全に一致する組み合わせをsheet2のABCから探し Dをsheet1の空欄Gに出力させる さらにそのGと一致するsheet1のABCがあれば文字色を変える というものです。 分かり難いですが、教えてください。 関数のVLOOKUPで出力までは出来たのですが、 文字色を変えることが出来ませんでした。 マクロで全部やってしまった方が早そうなので知恵をお貸しください。 。

  • excelで文字列の部分一致の抽出について

    excel初心者です。excelの文字列中の一部が、決まった検索ワード(複数、別シートに一覧になっている)と一致する場合に、その検索ワードに対応する数字がふられるようにする数式を教えてください。countifやvookupでやってみましたが、検索ワードが複数なのでワイルドカード*が使えず、挫折しました。 sheet1が基データで、sheet2が検索ワードとそれに対応する数字のリストです。sheet1のB列に検索ワードの対応数字を入れたいです。sheet1のB列にどんな数式を入れたらいいのでしょうか。 sheet2の検索ワードの範囲はA1~B65です。 *追伸:サンプルの各シートのA列とB列の間にスペースを入れたつもりですが、質問文では削除?されて、くっついた表示になっています。見づらくてすみませんが、数字はB列だと思ってください。もうしわけありません。 サンプル: sheet1 (A列) 山口理事長 佐藤名誉会長 小林事業本部長 高橋代表取締役社長 高田課長 山本専務理事 sheet2 (A列) (B列) 社長 1 会長 1 代表取締役 1 理事 2 本部長 2 専務 3 (以下50個ほど続きます。B列の数字は重複します) ↓以下のようにしたいです sheet1 (A列) (B列) 山口理事長 2 佐藤名誉会長 1 小林事業本部長 2 高橋代表取締役社長 1,1 高田課長 山本専務理事 3,2 アドバイスの程、何卒よろしくお願いします。

  • エクセルでアルファベットの連続を簡単に入力するには

    以下のようにアルファベットを連続して 簡単に入力する方法があれば教えてください A B ・ ・ Y Z AA AB ・ ・ AZ BA BB BC ・ ・ ZZ

  • Excelで条件に満たしたセルを飛ばす

    色々と前の投稿を見ましたが、どうしても答えが分からず質問させてもらいます!! 1から31(1ヶ月)のセルの中で、毎月ランダムにたくさんのアルファベットが入ります。 その中で、「a」というアルファベットのみを別シートに飛ばし、その別シート上では「1」として表記したいです。さらに、その「a」が入った日付も一緒に別シートに飛ばしたいです。 一ヶ月の中で「a」が入るのは2~5回ぐらいなので、別シートには7日分の表を用意するつもりです。 ただ、その1ヶ月の中でどこに「a」が入るかは決まっていません。 日付も全く未定なので、「a」が入ったら別シートに1として、さらに日付が入ったセルの数字も一緒に飛ばす。 マクロは全く分からないので、出来れば関数が良いです!!