[備忘録] 列番号からExcelの列文字の算出ロジック

うちみたいにPJ変わるごとに前のリソースが使えないような仕事をしてると、
前にこれやったのになぁ~どうやるんだっけ?っていう事によく遭遇するわけで。

凄く作業の無駄な気がするわけですが・・・

ま、前置きはともかく。毎回毎回調べてコード書くのも面倒なんで、
ここに記載しておいたり。

・列番号から列文字の算出


    Private Function ConvIdxToCol(ByVal intColIndex As Integer) As String

        Dim strCol As String = ""
        Dim intAcode As Integer = 64

        Dim intAlpha As Integer = CInt(Math.Floor((intColIndex - 1) / 26))
        Dim intRemaind As Integer = intColIndex - (intAlpha * 26)

        '2桁目を算出
        If intAlpha > 0 Then
            strCol = Chr(intAcode + intAlpha)
        End If

        '1桁目を算出
        If intRemaind > 0 Then
            strCol = strCol & Chr(intAcode + intRemaind)
        End If

        Return strCol
    End Function

・列文字から列番号の算出


    Private Function ConvColToIdx(ByVal strCol As String) As Integer
        Dim intAcode As Integer = 64
        Dim intCol As Integer = 0

        Dim chrCols() As Char = strCol.ToCharArray

        If chrCols.Length > 1 Then
            '2桁目を計算
            intCol = (Asc(chrCols(0)) - intAcode) * 26
            '1桁目を計算
            intCol = intCol + Asc(chrCols(1)) - intAcode

        Else
            'そのまま計算
            intCol = Asc(chrCols(0)) - intAcode

        End If

        Return intCol

    End Function

相対位置を求めるようなロジックはこれの組み合わせで出来るから、

とにかくこれだけ記録っと。

しかしVBのコードって見た目が美しくないよなぁ・・・w

 

コメント

タイトルとURLをコピーしました