LoginSignup
1
1

More than 3 years have passed since last update.

【Excel用】数字↔アルファベット変換

Last updated at Posted at 2019-05-15

やりたいこと

Excelの帳票作成時に、n列目のExcelの横軸のアルファベットって何?となった時に使用する変換です。
またその逆でこのアルファベットはn列目?もあります。
組み合わせればA列からn番目の列のアルファベットは何?が可能です。
Excelの帳票作成用なので0以下は考慮しません。
整数のみの前提です。

数値からアルファベットへ変換

入力例 出力例
1 A
2 B
26 Z
27 AA
28 AB
52 AZ
53 BA
private string ConvertAlphabet(int index)
{
    string result = string.Empty;

    //26より大きい場合は繰り返す
    do 
    {
        //対象を26で割った余り
        int amari = index % 26;
        //対象を26で割った商
        int sho = index / 26;

        //割り切れた時(Zを出すため)
        if (amari == 0)
        {
            amari = 26;
            sho--;
        }

        //余りの数のアルファベットを出力
        result = ((char)((int)'A' + amari - 1)).ToString() + result;

        //商を次の対象とする
        index = sho;

    }
    while (index > 26);

    //残りのアルファベットを出力
    result = ((char)((int)'A' + index - 1)).ToString() + result;

    return result;
}

アルファベットから数値へ変換

入力例 出力例
A 1
B 2
Z 26
AA 27
AB 28
AZ 52
BA 53
private int ConvertInt(string alphabet)
{
    int index = 0;
    int length = 0;

    foreach (char c in value)
    {
        //最後の1文字は処理しない
        if (length == value.length - 1)
        {
            break;
        }

        index += 26 * ((int)c - (int)'A' + 1);
        length++;
    }

    index += (int)c - (int)'A' + 1;

    return index;
}

参考

10進数をn進数に変換する計算式

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1