『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
名前から番号を取り出したい。
エクセルに記載した感じは、こんな感じ。
名前から電話番号ならこれで出せる。
=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
----------------------------------------
…関数化に意外に手間取ったのは、秘密だ…。(汗)
色々改善点は、あるけど、動くので良しです!
チョット使い勝手が悪い関数は、改良するのに限ります。
| 固定リンク
コメント