スプレッドシートの列インデックスを文字に変換する方法


スプレッドシートでは、行は1から始まり、数値的にインデックス付けされますが、列はアルファベット順にインデックスされます.たとえば、スプレッドシートの列9999の文字は何ですか?この記事では、プログラムによって列インデックスを対応する文字に変換する方法を見ていきます.
スプレッドシートでは、列がアルファベット順にインデックスされます.
  • 明らかに、最初の26列は26文字アルファベット、AからZに対応しています.
  • 次の676列(26 * 26)は、27日から702番目まで、2文字でインデックスされます.[ aa , ab , ... ay , az ], [ ba , bb , by by , bz ], ...[ Ma , Mb , My , My , Mz ], ...[ Za , zb , ...]各アルファベットの文字を順番にすべての26のアルファベットの文字に先行する.
  • 次の17576列(26 * 26 * 26)は、703から18278まで、3文字でインデックスされます.[ AAA , Aab , Alay , Aaz , Aaba , abb , aby , abz ,<高橋潤子>上記の各文字AAは、上記のすべての26のアルファベットの文字に先行する順番を取る.
  • など
  • 上記の観察は再帰的パターンを示唆する.3文字の列は2文字で列に依存し、2文字と1文字列に依存して列.また、列の文字数は、インデックスが26で割った値に依存する.再帰的パターンを適用するためにカラムインデックスを26に分割する必要があることを示唆した.そこで、アルゴリズムの手順を示します.
  • アルファベット=[' A '、' B '、' C '、' D '、...' X '、' Y '、' Z ')を聞かせてください
  • を返します.
  • 他の場合はgetColumnLetter ( k/26 ) +アルファベット[( k % 26 )- 1 ]を返す
  • コラムインデックス
    コラム手紙
    26で割る
    12
    エル
    = 12
    13
    エム
    = 13
    26
    Z
    = 26
    27
    AA
    = 1 + 26 + 1
    37
    AK
    = 1 + 26 + 11
    38
    アル
    = 1 + 26 + 12
    53

    = 2 + 26 + 1
    75
    BW
    = 2 + 26 + 23
    988年
    アッツ
    = 37 * 26 + 26
    989年
    アラ
    = 38 * 26 + 1
    1390年
    バル
    = 53 + 26 + 12
    1963年
    BBM
    = 75 * 26 + 13
    例として1963年のコラムを見ましょう.
  • 1963 = 75 * 26 + 13として、第63のコラム手紙は、第75のコラム手紙と第13のコラム手紙の連結です.
  • 13<26として、13列目の文字はMである13文字のアルファベット文字です.
  • 75 = 2 * 26 + 23として、第75のコラム手紙は、第2のコラム手紙と第23のコラム手紙の連結です.
  • 2<26として、2列目の文字はBである2番目のアルファベット文字です.
  • 23<26として、23列目の文字はWである23文字のアルファベット文字です.
  • したがって、第75列の文字はB + W = BWです.
  • したがって、1963列目の文字はBW + M = BWMです.
  • 988が26で割り切れるので、少しのトリッキーなコラム988 thを分析しましょう.
  • 988は38 * 26 + 0として、988番目の列の文字は、第38列の文字と第0列の文字の連結です.しかし、列インデックスは1から始まります.
  • 実際には988は26で割り切れるので988=37 * 26 + 26として表現できます.それは、第988列の手紙が第37のコラム手紙と第26のコラム手紙の連結であることを意味します.
  • 26 = 26として、26番目の列文字はZである26番目のアルファベット文字です.
  • 37 = 1 * 26 + 11として、第37のコラム手紙は第1のコラムの手紙と第11のコラムの手紙の連結です.
  • 1<26、1列目の文字は、第1のアルファベット文字です.
  • 11時26分、11列目の文字は11番目のアルファベットです.
  • したがって、37番目の列文字は+ K = AKです.
  • したがって、988番目の列文字はAK + Z = AKZです.
  • JavaScriptでこのアルゴリズムを実装するには、特定の点に注意を払う必要があります.
  • 関数の入力である列インデックスは1から始まり、JavaScriptの配列は0から始まります.
  • カラムインデックスを26で割るとき、結果を丸くする必要があります.
  • カラムインデックスが26で割り切れると残量は0である.次の再帰的な呼び出しを適用するために、残り26を増加させながら結果を1つ減らす必要がある.
  • 最後に、JavaScriptの対応する文字列に列インデックスを変換するコード例を次に示します.
    function getColumnLetters(columnIndexStartFromOne) {
      const ALPHABETS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    
      if (columnIndexStartFromOne < 27) {
        return ALPHABETS[columnIndexStartFromOne - 1]
      } else {
        var res = columnIndexStartFromOne % 26
        var div = Math.floor(columnIndexStartFromOne / 26)
        if (res === 0) {
          div = div - 1
          res = 26
        }
        return getColumnLetters(div) + ALPHABETS[res - 1]
      }
    }
    

    どのようにGoogleシート、Google AppsのスクリプトとGoogleのデータスタジオで個人的な株式ポートフォリオトラッカーを作成する
    Googleのシート、Google AppsのスクリプトとGoogleのデータStudioで美しい個人的な株式ポートフォリオトラッカーを作成する方法を説明しますthis post

    https://www.allstacksdeveloper.com/p/lion-stock-portfolio-tracker.html

    どのようにGoogleシートとGoogleのデータスタジオで配当所得トラッカーを作成する
    インthis post , 私はどのようにGoogleシートのピボットテーブルを使用して配当所得トラッカーを作成する方法を説明します.
    インthis post , 私はどのようにGoogleのデータスタジオで配当所得トラッカーを作成する方法を説明します.
    それらをチェックアウトすることを忘れないでください!
  • https://www.allstacksdeveloper.com/2021/11/create-dividend-tracker-with-google-sheets.html
  • https://www.allstacksdeveloper.com/2021/12/create-dividend-income-tracker-google-data-studio.html