• ベストアンサー

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

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

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答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の方の回答がシンプルで良いかも。

関連するQ&A

  • エクセルの外枠のアルファベットを印刷 もしくは入力したいのですが

    エクセルの外枠の 列のアルファベットごと印刷したいのですが可能でしょうか?? もしくは、一行目のところに、列のアルファベットが abc...aa,ab,ac と入力できればよいのですが。。横に長くデータをいれているので(たてにも長く入っているのですが)手動は少し たいへんなのです・・・ よろしくお願いします。 (当方、マクロ、vbaは???です)

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • エクセルのセルにVBAで(  )付の式

    エクセルのVBAで作業していますが、1つの列の全ての行を (  )付けとしたいのですが、式をお教え下さい。 例えばD列に数値AB123と入れたら(AB123)となるようにしたいのです。 現在のVBA式にはD列のカラミはありません。 単純に追加すればいいと思いますので・・・・ よろしくお願い致します。

  • EXCEL マクロ・VBA 自動で連番を振る

    EXCELのマクロ・VBAについて質問です。 例えば、B列にデータを入力すると、入力した行まで自動的にA列に連番が入力されるようにしたいのですが、どういった方法があるでしょうか。 マクロやVBAについてはこれから勉強をしようと思っている素人ですので、コードとその解説をいただけると助かります。

  • Excel VBA 実行しない

    お世話になります。 ExcelのVBAで列に上書き足し算を入れているシートが、上書きできなくなってしまいました。 コードを表示で確認しましたが、コード自体は入力されています。 元に戻す方法はありますでしょうか。 毎日使ってるのでとても困ってます。 お分かりになる方、至急教えて欲しいです。 よろしくお願いします。

  • Excel VBAで教えてください。

    Excel VBAで教えてください。 テキストデータをExcelで読み込んだ後、Sheet1に以下のデータが入っており、 A列 B列   C列 氏名 開始日(yyyy/mm/dd) 終了(yyyy/mm/dd) テキストボックスに開始日(yyyy/mm/dd)、終了日(yyyy/mm/dd)、を入力し、入力した開始日から終了日のデータ検索し、A列からのデータをコピーし、Sheet2に貼り付けしたい。 テキストデータをExcelで読み込むコードはできたのですが、その後の処理ができずに困っています。 ユーザーフォームに入力するコードも教えてください。

  • VBAのコードに関する質問です。

    B列の値が3の時に対応するJ列の値を選択し、そのJ列の値の平均値をI2に出力する、というVBAのコードを教えてほしいです。

  • excel vbaの関数の使い方

    excel VBAでsumproduct関数を使いたいがでますのですがどうしても実行できません 何が原因でしょうか、どなたか教えてください。 ------------------------------------------------- 下記コードは実行できます。 Worksheets("集計").Range("j4").Value = WorksheetFunction.Sum(Worksheets("日常").Range("h4:h13")) 下記コードは型が違うとのコメントがでます。 Worksheets("集計").Range("j4").Value = WorksheetFunction.SumProduct((Worksheets("日常").Range("c4:c13") >= j2) * Worksheets("日常").Range("c4:c13") <= k2) * Worksheets("日常").Range("d4:d13") = l2 * Worksheets("日常").Range("f4:f13") = m2 * Worksheets("日常").Range("h4:h13") --------------------------------------------------------------------- ワークシートは、日常、集計、の二つがあります。 「日常」には、C4:H13にデータがあります。 c列に年月日、d列にコード番号、e列に購入箇所、f列にコード番号、g列に商品、h列に金額 が入力されています。 「集計」には、j2に開始日、k2に終了日、l2にd列のコード番号、m2にf列のコード番号、 が入力されています。 環境は、windows10 使用しています。 ----------------------------------------------------------- 以上の状況ですがvba でsumproduct関数を使いたいのですが実「実行」できません,たかどなたか教えて頂けませんか。

  • エクセルVBAで

    エクセルのVBAでA列に平仮名全角で文字が入力されているデータをB列にローマ字に変換して入力するようにするということは可能でしょうか? 宜しくお願いします。

  • エクセルで数字とアルファベットと文字列を分割する方法

    こんばんは。 エクセルのセルで数字とアルファベットの文字列を分割する方法を教えて下さい。 100AB3.4C → "100" "AB" "3.4" "C" 間にスペースやカンマなど無く、文字数は異なります。 数字は小数点がある場合と無い場合があります。(上記の "100" "3.4" のように) 同じ列に同様のデータが数件~数千件あり、まとめて分割したいです。 関数もしくはマクロ(VBA)で可能であれば教えて下さい。 最近マクロの勉強を初めたのですが、方法が思いつきません。。。 宜しくお願いします。

専門家に質問してみよう