Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

convert integers columns & rows into CString Excel cell format.

Posted on 2000-05-12
3
Medium Priority
?
692 Views
Last Modified: 2009-07-29
Hi all,
I am searching for an algorithm which converts integers Columns and Rows, in an Excel cell.

E.g. if I have nCol=0, nRow=0 => algo returns CString "A1"
if I have nCol=28, nRow=1  => algo must return "AB2" (2 chars wide for Col description)

Thanks a lot !

Regards,
David.
0
Comment
Question by:tradinfo
  • 2
3 Comments
 
LVL 3

Accepted Solution

by:
marcjb earned 200 total points
ID: 2804399
I think that nCol = 28, nRow = 1 should be "AC2".  If that is the case, the following is a C program that has a function to do what you want.

You would have to change the character array stuff to a CString, but the algorithm is the same.  If the column is greater than 25 (since we are using 0 as the base), then there are two letters to describe the column.


#include <stdio.h>

void toExcel(int i, int j, char *s)
{
if ( i > 25 )
    {
    sprintf(s, "%c%c%1i", 'A' + (i/26) - 1, 'A' + (i%26), j + 1);
    }
else
    sprintf(s, "%c%1i", 'A' + i, j + 1 );
}

int main(void)
{
int x, y;
char a[5];

x = 0;
y = 0;
toExcel(x, y, (char*)a);
printf("x: %i  y: %i  a: %s\n", x, y, a);

x = 28;
y = 1;
toExcel(x, y, (char*)a);
printf("x: %i  y: %i  a: %s\n", x, y, a);

return 0;
}

0
 

Author Comment

by:tradinfo
ID: 2804602
Cool code.
Here it is translated in MsVC++ :

void C_Results::ConvCell (long nCol, long nRow, CString& strCell)
{
      CString strCol = "";
      if (nCol>25)
      {      strCol = ((char)('A' + (nCol/26) - 1));
            strCol += ((char)('A' + (nCol%26)) );
      }
      else
            strCol = (char)('A' + nCol);
            
      strCell.Format("%s%d", strCol, nRow + 1 );
}

Thanks.
0
 
LVL 3

Expert Comment

by:marcjb
ID: 2804689
Glad to help :)
0

Featured Post

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Written by John Humphreys C++ Threading and the POSIX Library This article will cover the basic information that you need to know in order to make use of the POSIX threading library available for C and C++ on UNIX and most Linux systems.   [s…
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
Suggested Courses

972 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question