HOWTO: Convert Indices (row,col) into Excel-Style A1:C1 Strings

ID: Q198112


The information in this article applies to:
  • Microsoft Visual C++, 32-bit Editions, versions 4.0, 5.0, 6.0


SUMMARY

Sometimes it is necessary to convert numerical indices (row,column) into Excel-style "A1:C1" string notation. This can be confusing because after "Z," Excel starts using "BA," "BB," etc. This article contains a function you can use in your code to do this conversion for you.


MORE INFORMATION

C++ code:



   // Converts (row,col) indices to an Excel-style A1:C1 string
   char *IndexToString(int row, int col, char *strResult)
   {
      if(col > 26)
         sprintf(strResult, "%c%c%d",
            'A'+(col-1)/26-1, 'A'+(col-1)%26, row);
      else
         sprintf(strResult, "%c%d", 'A' + (col-1)%26, row);

      return strResult;
   }
 
Some examples of the conversion:
Calling IndexToString() with row=1 and col=26 yields "Z1"
Calling IndexToString() with row=1 and col=27 yields "AA1"
Calling IndexToString() with row=2 and col=52 yields "AZ2"
Calling IndexToString() with row=2 and col=53 yields "BA2"
Calling IndexToString() with row=10 and col=10 yields "J10"

© Microsoft Corporation 1998, All Rights Reserved.
Contributions by Joe Crump, Microsoft Corporation

Additional query words: excel convert

Keywords : kbExcel kbVC400 kbVC410 kbVC420 kbVC500 kbVC600
Version : winnt:4.0,5.0,6.0
Platform : winnt
Issue type : kbhowto


Last Reviewed: October 12, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.