自動入力の参照に使う表は、”完全一致”に限定されているんですが・・・。
完全一致ではなく・・・オートフィルターのように”含む”や”で始まる”といった条件に一致したものと関連する項目を表示するようにはできないのでしょうか??
例えば、商品番号Bで始まるものの値段入力やABCを含む商品番号の値段入力など。。。
もしありましたら教えていただきたいです。よろしくお願い致します。
質問の仕方が分かりにくいかもしれません。。すみませんm(__)m
関数では1件しか検出できないので無理ですね。
オートフィルのオプションを使えば質問文に近いことが可能です。
http://www.eurus.dti.ne.jp/yoneyama/Excel/filter3.htm
ありがとうございます!!!
検索窓を作るような仕組みを考えてみました。(実際にコード入力する欄は別にすることを想定)
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...
あたりの情報が参考になるかも知れません。
ありがとうございます!
やってみます!!!
ワークシート関数は戻り値が一つなので後者は不可能ですが、
前者、最初に条件に一致した値を返す含むや始まるのようにワイルドカードを使える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* で表せます。
ユーザー定義関数というのがあるんですね!!
ありがとうございます。
やってみます!!
「含む」の場合は、FIND関数で、
「で始まる」の場合は、LEN関数とMID関数を組み合わせて判定します。
例)セルA1が、「AAA」を含むかどうか
=FIND(”AAA”,A1)
例)セルA1が、「AAA」(セルC1の値として入っている場合)で始まるかどうか
=MID(A1,1,LEN(C1))=C1
で判定できるかと思います。
ありがとうございます。
後者のBを含むものすべてです。。