VBSとVLOOKUP関数(VBAではなく(笑))
最近RPAの仕事をしていますが、VBSの機能を使われています。
一番ホットなRPAが、一番とは言わないまでもレガシーの技術を使っているのは、
とても興味深いところです!!
なので、最近、GASやPythonをみなさんがする中、時代に逆行するかのように、
VBSの勉強をしています(笑)
そこで、せっかく覚たので、初期の勉強中に作ったVBSファイルのご紹介☆
時々、VlookUP関数で、「P列」って何番目だったかなぁ?
と思う時がありますが、そんな時に使うのに。
option explicit
dim s
const alp = "abcdefghijklmnopqrstuvwxyz"
s = inputbox(alp,"?")
msgbox instrrev(alp,s)
これだけをメモ帳にコピペして、拡張子を「.vbs」で保存すれば、Ok♪
ダブルクリックで開いて、
好きな文字を入れて、「OK」ボタンで、何番目か表示されます。
これだけだったら、
エクセルで、「=column(S1)」とか、手入力すれば、すぐ出ちゃいますよね?
でも、VLOOKUP関数の検索エリアは、必ずしも、A列から始まるとは限りません。
「N2:S10」となった場合、Q列のデータが欲しい時、
「Q列はN列から何番目」と言うのを数えなければいけません。
もちろん、
VLOOKUP関数の第3引数の『列番号』のところに、「,column(S1)-column(N1)+1,」
入れれば、列挿入した時にも対応してくれます。
しかし、驚くことに、世の中には、
「『column(S1)』なんて、訳の分からん関数入れるな!分かりやすく数字を入れろ!」
と言われる、上司がいるのです!!
なので、そんな方たちに、備えておくのが、できる、歯牙無いサラリーパーソンなのです!!
◆ ファイル「列間隔数1.vbs」
option explicit
dim s
const alp = "abcdefghijklmnopqrstuvwxyz"
s = inputbox("列間隔を知りたい文字を入力してください。" _
& vbCrLf & "(入力例)「va」「av」どちらでもOK☆", _
"VLOOKUP関数用列間隔数")
dim le,ri
le = left(s,1)
ri = right(s,1)if instr(alp,le)>=instr(alp,ri) then
msgbox instr(alp,le)-instr(alp,ri) +1
else
msgbox instr(alp,ri)-instr(alp,le) +1
end if
ちょっとカッコつけた、配列を使ったパターンだと、
◆ ファイル「列間隔数2.vbs」
option explicit
dim s
const alp = "abcdefghijklmnopqrstuvwxyz"
s = inputbox("列間隔を知りたい文字を入力してください。" _
& vbCrLf & "(入力例)「v,a」「a,v」どちらでもOK☆", _
"VLOOKUP関数用列間隔数")
dim v
v = split(s,",")if v(0)>=v(1) then
msgbox instrrev(alp,v(0))-instrrev(alp,v(1)) +1
else
msgbox instrrev(alp,v(1))-instrrev(alp,v(0)) +1
end if
ですっ!!
これを、デスクトップとかに、置いとけば、いちいちエクセル内に、
「=column(S1)-column(N1)+1」なんて打って、調べるようなことは
しなくても良くなります☆
あまり、日の目を見るようなファイルではないですが、
VBSの練習とか、イメージ用に使ってもらえれば、うれしいです(^▽^)
(追記)
WIn7のPCでやった時は、上記CD動作しましたが、
Win10のPCでは、Inputboxが動作しませんでした(**)
Inputboxは、文字数制限ありそうなのと、少ない文字数でも文字化け
しちゃいますのでした!
それ以外のカウントは、正常に起動しますので、
ファイル名で、分かるようにしておけば良いかと思います。