• ベストアンサー

エクセルVBAにて アルファベットを数字に変換

エクセルで、例えば J列は10列目で、 AB列は28列目ですよね。 VBAにて 入力がJだったら10を出力、 ABだったら28を出力 してくれるコードってどう書けばいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

一例です。 Sub Retuno() X = InputBox("列を示す文字列を入力してください。") Y = Range(X & "1").Column Z = MsgBox(X & "は" & Y & "です", vbOKOnly) End Sub

VitaminBB
質問者

お礼

回答ありがとうございます。 エクセルVBAを使うならこの方法が一番シンプルで 良いですね。

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#187541
noname#187541
回答No.3

こんばんは。 >入力がJだったら10を出力 ということは、入力したセルの列番号を数値で出力したいと言うことですね。 シートモジュールに Private Sub Worksheet_Change(ByVal Target As Range) MsgBox Target.Column End Sub としみてください。

VitaminBB
質問者

お礼

回答ありがとうございます。 >ということは、入力したセルの列番号を数値で出力したいと言うことですね。 そうではなくて、他の方の回答が質問の意図です。

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 現在のところは、二桁までです。 ユーザー定義関数を作りました。"ZZ" まで、出力可能です。 大文字・小文字は可能ですが、全角は受けないようにしてあります。 Sub Test() Dim d As Integer  d = Alpha2Num("AB")   MsgBox CStr(d) End Sub Function Alpha2Num(ByVal arg As String)  Dim i As Integer  Dim j As Integer  arg = StrConv(arg, vbLowerCase)  If arg Like "[a-z]*" Then   If Len(arg) = 2 Then    i = (Asc(Mid(arg, 2, 1)) - 96)    j = (Asc(Mid(arg, 1, 1)) - 96) * 26   Else    i = (Asc(arg) - 96)   End If  End If  Alpha2Num = j + i End Function

VitaminBB
質問者

お礼

回答ありがとうございます。 このような答えを期待して質問しましたが、エクセルを使うなら NO1の方の回答がシンプルで良いかも。

すると、全ての回答が全文表示されます。

専門家に質問してみよう