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は、文字数制限ありそうなのと、少ない文字数でも文字化け

しちゃいますのでした!

f:id:rasemo:20191011141514p:plain
それ以外のカウントは、正常に起動しますので、

ファイル名で、分かるようにしておけば良いかと思います。

f:id:rasemo:20191011141534p:plain