« 『ここね』でパンを買ってみた。 | トップページ | 『Excel』の『データの入力制限』の設定って面倒なので『vba』でやってみる! »

2018年6月10日 (日)

『Excel』の『vlookup』だと検索対象の左側が表示対象にできない!ので出来るのを作ってみた。

『Excel』で『vlookup』だと指定範囲が検索対象の左側しか指定できない。

何でそんな半端な…。

ならば他の手段で出来ないかと考えてみた。

例えばこんな感じのリストを考える。

番号    名前    電話番号
0001    A01    000-000-0001
0002    A02    000-000-0002
0003    A03    000-000-0003
0004    A04    000-000-0004
0005    A05    000-000-0005
0006    A06    000-000-0006
0007    A07    000-000-0007

名前から番号を取り出したい。

エクセルに記載した感じは、こんな感じ。

0000

名前から電話番号ならこれで出せる。

=VLOOCKUP(E2,B:C,2,FALSE)

でも番号は、

=VLOOCKUP(E2,B:C,0,FALSE)

では、表示されない…。

そこで、別な関数との組み合わせで対応してみた。

=INDIRECT("A"&MATCH(E2,B:B,0),TRUE)

で名前から番号が求められる。

意外に検索対象の左側に表示したいものがある事がある。

で、勢い検索対象を一番左側にコピーしたりして凌いでいたが
この関数で解決!

まあ、こんな風に関数として登録したら良いかも…。

=VLOOKUPEX(E2,B:B,"A")

Module1.bas
----------------------------------------
'---------------------------------------
' s0=検索対象文字列
' s1=検索する桁を示す文字列
' s2=結果を取り出す桁を示す文字列
' 使い方:=VLOOKUPEX(E2,B:B,"A")
Public Function VLOOKUPEX(r0 As Range, r1 As Range, s2 As String) As Variant
    VLOOKUPEX = Range(s2 & WorksheetFunction.Match(r0, r1, 0))
End Function

----------------------------------------

…関数化に意外に手間取ったのは、秘密だ…。(汗)

色々改善点は、あるけど、動くので良しです!

チョット使い勝手が悪い関数は、改良するのに限ります。

|

« 『ここね』でパンを買ってみた。 | トップページ | 『Excel』の『データの入力制限』の設定って面倒なので『vba』でやってみる! »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 『Excel』の『vlookup』だと検索対象の左側が表示対象にできない!ので出来るのを作ってみた。:

« 『ここね』でパンを買ってみた。 | トップページ | 『Excel』の『データの入力制限』の設定って面倒なので『vba』でやってみる! »