본문 바로가기

C/C++

엑셀에서 숫자를 컬럼명으로 변환하기

엑셀에서 숫자를 컬럼명으로 변환하기

숫자를 엑셀의 영문 컬럼명으로 변환 하는 함수
'AAAA'와 같이 4글자 컬럼명까지 변환 가능하다.


 NumberToExcelColumn

bool NumberToExcelColumn(int32 nColumn, int32 nRow, ADT_CHAR* pszColumn)

{

        if (!pszColumn) return false;

  

        int32 nZColumn = 26;

        int32 nZZColumn = 702;        //nZColumn + (26 * 26);

        int32 nZZZColumn = 18278;     //nZZColumn + (26 * 26 * 26);

 

        int32 nAColumn = 1;

        int32 nAAColumn = 27;         // nZColumn + 1

        int32 nAAAColumn = 703;       // nZZColumn + 1

        int32 nAAAAColumn = 18279;    // nZZZColumn + 1

 

        char chFours = (char)((nColumn-nAAAAColumn) / 17576) % 26 + 'A';

        char chThrees = (char)((nColumn-nAAAColumn) / 676) % 26 + 'A';

        char chTwos = (char)((nColumn-nAAColumn) / 26) % 26 + 'A';

        char chOnes = (char)((nColumn-nAColumn) % 26) + 'A';

 

        //AAAA1 - ZZZZ1

        if (nColumn > nZZZColumn)

           sprintf(pszColumn, "%c%c%c%c%d", chFours, chThrees, chTwos, chOnes, nRow);

//AAA1 - ZZZ1

        else if (nColumn > nZZColumn)  

               sprintf(pszColumn, "%c%c%c%d", chThrees, chTwos, chOnes, nRow);

        //AA1 - ZZ1

        else if(nColumn > nZColumn )                                             

               sprintf(pszColumn, "%c%c%d", chTwos, chOnes, nRow);

//A1 - Z1

        else          

               sprintf(pszColumn, "%c%d", chOnes, nRow);

 

        return true;

}





<참조>