Excel Sheet Column Number

Updated on 27 May, 2025
Excel Sheet Column Number header image

Problem Statement

In spreadsheet applications like Excel, columns are labeled starting with "A", then "B", ..., up to "Z", after which the labels continue with "AA", "AB", and so on. These column titles form a sequence analogous to a base-26 numeral system, with each letter representing a value (A = 1, B = 2, ..., Z = 26). The task is to convert a given string, columnTitle, which represents a column title in this sequenced format, into its respective numeric column number. This problem revolves around mapping a string sequence to a numeric representation, adhering strictly to the described alphabetical sequence.

Examples

Example 1

Input:

columnTitle = "A"

Output:

1

Example 2

Input:

columnTitle = "AB"

Output:

28

Example 3

Input:

columnTitle = "ZY"

Output:

701

Constraints

  • 1 <= columnTitle.length <= 7
  • columnTitle consists only of uppercase English letters.
  • columnTitle is in the range ["A", "FXSHRXW"].

Approach and Intuition

The problem can be understood and approached as a variant of converting a string from a base-26 format to a decimal (base-10) number. Here's how we can think about this transformation process:

  1. Understanding the Positional Value:

    • Just like in the decimal system, where the rightmost digit has the lowest value (units place), and each digit to the left has a value 10 times the value of the position to its right, in this Excel column title system, the position of each character from the right contributes a multiplying factor of 26 raised to an increasing power (starting from 0).
  2. Mapping Letters to Numbers:

    • We first map each letter to a corresponding numerical value where 'A' corresponds to 1, 'B' corresponds to 2, ..., and 'Z' corresponds to 26. This conversion can be done using the ASCII value of the letters (ord(character) - ord('A') + 1).
  3. Calculating the Column Number:

    • To convert the entire string to a number, start from the left of the string, and for each character, multiply its mapped number by 26 raised to the power of its position index from the rightmost side (beginning with 0). Add this value to a cumulative total which will eventually represent the column number.

Additional Observations Based on Constraints:

  • The minimum and maximum possible values for columnTitle are "A" and "FXSHRXW", respectively. This tells us that the function needs to handle variable length inputs ranging from a single character up to 7 consecutive characters.
  • All characters in columnTitle are uppercase English letters, ensuring that the input is always valid under the given system without need for error handling related to invalid characters or case issues.

This approach avoids the need for any special data structures and can be efficiently implemented within the constraints provided.

Solutions

  • C++
  • Java
  • C
  • JavaScript
  • Python
cpp
class Solution {
public:
    int excelColumnNumber(string column) {
        int columnNumber = 0;
        int length = column.length();
        for (int i = 0; i < length; i++) {
            columnNumber *= 26;
            columnNumber += (column[i] - 'A' + 1);
        }
        return columnNumber;
    }
};

The C++ code solution provided calculates the column number of an Excel sheet based on its column title. Use the following steps to understand how the code works:

  1. Define the excelColumnNumber function, which accepts a string representing the Excel column title.
  2. Initialize columnNumber to 0, which will store the eventual numeric column value.
  3. Calculate the length of the input string column and store it in the length variable.
  4. Use a for loop to iterate through each character in the string:
    • Multiply columnNumber by 26 in each iteration to cater to the base-26 numbering system of Excel columns.
    • Add the value of the current character to columnNumber. This is determined by subtracting 'A' from the character to get a zero-based index and then adding 1 to shift it to a one-based index.
  5. Return the computed columnNumber once all characters have been processed.

The function effectively converts a column letter (or combination of letters) to its corresponding Excel column number using a base-26 calculation method. For example, "A" corresponds to 1, "B" to 2, and so on, with "Z" being 26 and "AA" starting from 27.

java
class Solution {
    public int convertTitleToNumber(String column) {
        int columnNumber = 0;
        int length = column.length();
        for (int i = 0; i < length; i++) {
            columnNumber *= 26;
            columnNumber += (column.charAt(i) - 'A' + 1);
        }
        return columnNumber;
    }
}

The program tackles the problem of converting an Excel column title (e.g., "A", "AB", "ZY") into its corresponding column number, which is similar to converting a base-26 number. You aim to convert the alphabetic representation found in Excel sheets into numeric format.

Here’s how the Java code achieves the conversion:

  • Initialize an integer columnNumber to zero. This will store the resulting column number.
  • Calculate the length of the string column and store it in length.
  • Iterate over each character in the column string using a for loop.
    • Multiply columnNumber by 26 in each iteration to account for the place value as you move left to right in the string which is similar to how decimal numbers are processed.
    • Convert the current character to its corresponding numeric value by subtracting 'A' and adding 1. (e.g., 'A' becomes 1, 'B' becomes 2, ..., 'Z' becomes 26).
    • Add this value to columnNumber.
  • Return columnNumber as the final result after all characters have been processed.

This approach effectively processes the string from left to right, accumulating the total value while accounting for the position of each character as a factor of 26, mirroring the positional value in a base-26 numbering system.

c
int columnToIndex(char* column) {
    int index = 0;
    int length = strlen(column);
    for (int i = 0; i < length; i++) {
        index = index * 26;
        index += (column[i] - 'A' + 1);
    }
    return index;
}

This guide provides an overview of the solution for converting an Excel sheet column title to a corresponding column number in C. The provided function, columnToIndex, efficiently calculates the index for a given column string representation typically seen in Excel sheets, such as "A", "B", ..., "Z", "AA", etc.

Here's a breakdown of how the function operates:

  1. Initialize index to 0 to store the resultant column number.
  2. Determine the length of the input string column using strlen() to help in iteration.
  3. Loop through each character of the column string using a for loop. The loop iterates from the first to the last character of the string.
  4. Convert each character into its sequential number where 'A' corresponds to 1, but dynamically scale the current index by multiplying it by 26 each iteration. This reflects the 26 letters of the English alphabet, accounting for the positional significance in the column label.
  5. Add the converted character value to index to build up the final column number.
  6. Return the computed index.

Utilize this function to convert Excel column labels to their respective numerical indices, handy for various applications like data processing in spreadsheets where column handling is necessary. Simply provide the desired column label to the function to receive its numerical equivalent.

js
var excelTitleToNumber = function (columnTitle) {
    let total = 0;
    let length = columnTitle.length;
    for (let index = 0; index < length; index++) {
        total = total * 26;
        total += columnTitle.charCodeAt(index) - "A".charCodeAt(0) + 1;
    }
    return total;
};

The provided JavaScript function excelTitleToNumber effectively converts an Excel column title, such as "AB" or "ZY", into its corresponding column number. Follow these steps to understand how this function performs the conversion:

  1. Initialize total to 0, which will hold the numerical value of the column title.
  2. Calculate the length of the columnTitle string and store it in the variable length.
  3. Iterate through each character in the columnTitle from left to right using a for loop that runs from 0 up to length.
  4. In each iteration, multiply total by 26 to shift the previous values (considering the base-26 number system used by Excel titles).
  5. Add the current character's value to total. The character's value is determined by subtracting the char code of "A" from the char code of the current character and adding 1 (since 'A' corresponds to 1, not 0).
  6. After completing the loop, return the calculated total, which is the column number.

This sequence leverages the 26 based positional system inherent to Excel columns, where each column letter is a 'digit' in a base-26 number system. For instance, "A" represents 1, "Z" represents 26, "AA" represents 27, and so forth. This function faithfully reproduces this calculation, converting any Excel column title to its respective numeric identifier.

python
class Solution:
    def columnTitleToNumber(self, title: str) -> int:
        value = 0
        length = len(title)
        for index in range(length):
            value *= 26
            value += ord(title[index]) - ord('A') + 1
        return value

The solution provided converts an Excel-style column title (e.g., "A", "AB", "ZY") into its corresponding column number using Python. The function columnTitleToNumber is a method of the Solution class, taking one parameter title, which is a string representing the column title.

Follow these steps to understand the conversion process:

  1. Initialize value to 0, which will store the resulting column number.
  2. Calculate length of the input string title to determine how many characters it contains.
  3. Use a for loop to iterate over each character of the string:
    • Multiply value by 26 on each iteration. This accounts for the fact that Excel titles are a base-26 numbering system.
    • Convert the character to its corresponding numeric value in the sequence of the English alphabet (where 'A' = 1, 'B' = 2, ..., 'Z' = 26) using the expression ord(title[index]) - ord('A') + 1.
    • Add this numeric value to value.
  4. After exiting the loop, return the calculated value, which represents the column number.

This method effectively handles the conversion by exploiting the positional notation of the characters, treating them as digits in a base-26 numeral system.

Comments

No comments yet.