人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excel(エクセル)のVLOOKUP関数についてお伺いしたいことがあります。
自動入力の参照に使う表は、”完全一致”に限定されているんですが・・・。

完全一致ではなく・・・オートフィルターのように”含む”や”で始まる”といった条件に一致したものと関連する項目を表示するようにはできないのでしょうか??

例えば、商品番号Bで始まるものの値段入力やABCを含む商品番号の値段入力など。。。

もしありましたら教えていただきたいです。よろしくお願い致します。
質問の仕方が分かりにくいかもしれません。。すみませんm(__)m

●質問者: mamakazu
●カテゴリ:コンピュータ
✍キーワード:ABC Excel すみません エクセル フィルター
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● Gay_Yahng
●20ポイント

vlookupでは出来ないですね。

例のBを含む のは1つだけでしょうか?Bを含むものすべてを検索したいのでしょうか?

http://q.hatena.ne.jp/1210229090

◎質問者からの返答

ありがとうございます。

後者のBを含むものすべてです。。


2 ● Baku7770
●20ポイント

関数では1件しか検出できないので無理ですね。

オートフィルのオプションを使えば質問文に近いことが可能です。

http://www.eurus.dti.ne.jp/yoneyama/Excel/filter3.htm

◎質問者からの返答

ありがとうございます!!!


3 ● kaiton
●20ポイント

検索窓を作るような仕組みを考えてみました。(実際にコード入力する欄は別にすることを想定)


A2を検索窓とします。(コードの一部でも入れる)

マスタとなるデータをH1:J11に作り

コード 名称 単価
aaa111 aaaa 100
abc123 abcabc 110
bde654 bbbttt 200
... ... ...

F2: 1 or 2 (1:始まる、2:含む)の検索方法を指定


G2=IF(ISERROR(FIND($A$2,H2,1)),9999,IF($F$1=1,IF(FIND($A$2,H2,1)=1,ROW(),9999),ROW()))

をG11までコピー


B2=SMALL($G$2:$G$11,ROW()-1)

をB11までコピー


C2=IF($B2<>9999,INDEX($H$1:$J$11,$B2,COLUMN()-2),"")

をE2の横へコピー、C:E列を下に11行目までコピー


これで、A2の検索窓で a とか aa と入力しエンターでC,D,E列に検索結果が表示されると思います。

B,G列は計算列なので、非表示にしても良いかもしれません。


http://www.geocities.jp/chiquilin_site/data/060322_extraction.ht...

あたりの情報が参考になるかも知れません。

◎質問者からの返答

ありがとうございます!

やってみます!!!


4 ● SALINGER
●20ポイント

ワークシート関数は戻り値が一つなので後者は不可能ですが、

前者、最初に条件に一致した値を返す含むや始まるのようにワイルドカードを使えるVLookUp関数を

ユーザー定義で作ってみました。


VBEで標準モジュールに以下のコードをコピーしてください。

参考、標準モジュールの追加方法

Function myLookUp(st As String, r As Range, retu As Long) As String
 Dim gyou As Long
 gyou = Range(Cells(r.Row, r.Column), Cells(r.Row + r.Rows.Count - 1, r.Column)) _
 .Find(st, Cells(r.Row + r.Rows.Count - 1, r.Column), xlValues, xlWhole, _
 xlByColumns, xlNext, True, True, False).Row
 myLookUp = Cells(gyou, r.Column + retu - 1).Value
End Function

ここで作ったユーザー定義関数は

=myLookUp(検索値、範囲、列番号)

と、VLookUpとほとんど同じですが、検索値に*や?のワイルドカードを使うことができます。

(*は任意の文字列、?は任意の一文字)

例えばBから始まるは B*、ABCを含むは *ABC* で表せます。

◎質問者からの返答

ユーザー定義関数というのがあるんですね!!

ありがとうございます。

やってみます!!


5 ● minubow
●20ポイント

「含む」の場合は、FIND関数で、

「で始まる」の場合は、LEN関数とMID関数を組み合わせて判定します。

例)セルA1が、「AAA」を含むかどうか

=FIND(”AAA”,A1)

例)セルA1が、「AAA」(セルC1の値として入っている場合)で始まるかどうか

=MID(A1,1,LEN(C1))=C1

で判定できるかと思います。

http://dummy

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ