Рубрики

Найти имя столбца Excel по заданному номеру столбца

Столбцы MS Excel имеют шаблон типа A, B, C,…, Z, AA, AB, AC,…. , AZ, BA, BB,… ZZ, AAA, AAB… .. и т. Д. Другими словами, столбец 1 обозначен как «A», столбец 2 — как «B», столбец 27 — как «AA».

По заданному номеру столбца найдите соответствующее имя столбца Excel. Ниже приведены дополнительные примеры.

Input          Output
 26             Z
 51             AY
 52             AZ
 80             CB
 676            YZ
 702            ZZ
 705            AAC

Спасибо Mrigank Dembla за предложенное ниже решение в комментарии.

Предположим, у нас есть число n, скажем, 28. Таким образом, в соответствии с ним нам нужно напечатать имя столбца. Нам нужно взять остаток с 26.

Если остаток с 26 оказывается равным 0 (имеется в виду 26, 52 и т. Д.), То мы помещаем 'Z' в выходную строку, и новый n становится n / 26 -1, потому что здесь мы рассматриваем 26 как 'Z', в то время как в На самом деле это 25-й по отношению к «А».

Точно так же, если остаток оказывается отличным от нуля. (например, 1, 2, 3 и т. д.), тогда нам нужно просто вставить соответствующий символ в строку и сделать n = n / 26.

Наконец мы переворачиваем строку и печатаем.

Пример:
n = 700

Остаток (n% 26) равен 24. Таким образом, мы помещаем 'X' в выходную строку, и n становится n / 26, который равен 26.

Остаток (26% 26) равен 0. Таким образом, мы помещаем 'Z' в выходную строку, и n становится n / 26 -1, что равно 0.

Ниже приведена реализация C ++ вышеупомянутого подхода.

C ++

// C ++ программа для поиска Excel
// имя столбца из заданного
// номер столбца
#include<bits/stdc++.h>
#define MAX 50

using namespace std;

  
// Функция для печати имени столбца Excel для данного номера столбца

void printString(int n)

{

    char str[MAX]; // Сохранить результат (имя столбца Excel)

    int i = 0; // Сохранить текущий индекс в str, который является результатом

  

    while (n>0)

    {

        // Найти остаток

        int rem = n%26;

  

        // Если остаток равен 0, то в выводе должно быть 'Z'

        if (rem==0)

        {

            str[i++] = 'Z';

            n = (n/26)-1;

        }

        else // Если остаток не равен нулю

        {

            str[i++] = (rem-1) + 'A';

            n = n/26;

        }

    }

    str[i] = '\0';

  

    // Перевернуть строку и вывести результат

    reverse(str, str + strlen(str));

    cout << str << endl;

  

    return;

}

  
// Программа драйвера для проверки вышеуказанной функции

int main()

{

    printString(26);

    printString(51);

    printString(52);

    printString(80);

    printString(676);

    printString(702);

    printString(705);

    return 0;

}

Джава

// Java программа для поиска Excel
// имя столбца из заданного
// номер столбца

  

public class ExcelColumnTitle

{

    // Функция для печати столбца Excel

    // имя для данного номера столбца

    private static void printString(int columnNumber)

    {

        // Сохранить результат (имя столбца Excel)

        StringBuilder columnName = new StringBuilder();

  

        while (columnNumber > 0)

        {

            // Найти остаток

            int rem = columnNumber % 26;

  

            // Если остаток равен 0, то

            // 'Z' должен быть там в выводе

            if (rem == 0)

            {

                columnName.append("Z");

                columnNumber = (columnNumber / 26) - 1;

            }

            else // Если остаток не равен нулю

            {

                columnName.append((char)((rem - 1) + 'A'));

                columnNumber = columnNumber / 26;

            }

        }

  

        // Перевернуть строку и вывести результат

        System.out.println(columnName.reverse());

    }

  

    // Программа драйвера для проверки вышеуказанной функции

    public static void main(String[] args)

    {

        printString(26);

        printString(51);

        printString(52);

        printString(80);

        printString(676);

        printString(702);

        printString(705);

    }

}

  
// Этот код предоставлен Харикришнаном Раджаном

питон

# Программа Python для поиска имени столбца Excel из
# заданный номер столбца

  

MAX = 50

  
# Функция для печати имени столбца Excel
# для данного номера столбца

def printString(n):

  

    # Сохранить результат (имя столбца Excel)

    string = ["\0"] * MAX

  

    # Хранить текущий индекс в str, который является результатом

    i = 0

  

    while n > 0:

        # Найти остаток

        rem = n % 26

  

        # если остаток равен 0, то

        # 'Z' должен быть там в выводе

        if rem == 0:

            string[i] = 'Z'

            i += 1

            n = (n / 26) - 1

        else:

            string[i] = chr((rem - 1) + ord('A'))

            i += 1

            n = n / 26

    string[i] = '\0'

  

    # Перевернуть строку и вывести результат

    string = string[::-1]

    print "".join(string)

  
# Драйвер программы для проверки вышеуказанной функции

printString(26)

printString(51)

printString(52)

printString(80)

printString(676)

printString(702)

printString(705)

  
# Этот код предоставлен BHAVYA JAIN


Выход

Z
AY
AZ
CB
YZ
ZZ
AAC

Связанная статья:
Найти номер столбца Excel из заголовка столбца

Эта статья предоставлена Картиком . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Найти имя столбца Excel по заданному номеру столбца

0.00 (0%) 0 votes