Поиск буквы столбца в excel

 

Tosyan12

Пользователь

Сообщений: 117
Регистрация: 22.04.2018

Есть формула СТОЛБЕЦ(), она возвращает числовой номер столбца, в моём же случае нужно вернуть букву это столбца, как это сделать?

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

=SUBSTITUTE(ADDRESS(1;COLUMN();4);1;)

Изменено: БМВ10.10.2019 13:10:36

По вопросам из тем форума, личку не читаю.

 

Tosyan12

Пользователь

Сообщений: 117
Регистрация: 22.04.2018

А можно русскую формулу? Я переводчиком перевёл но таких функций у меня нет.

 

Настя_Nastya

Пользователь

Сообщений: 801
Регистрация: 14.07.2019

#4

11.10.2019 20:04:12

Код
=ПСТР(АДРЕС(1;СТОЛБЕЦ();2);1;ДЛСТР(АДРЕС(1;СТОЛБЕЦ();2))-НАЙТИ("$";АДРЕС(1;СТОЛБЕЦ();2)))
 

Светлый

Пользователь

Сообщений: 487
Регистрация: 07.03.2019

#5

11.10.2019 20:08:17

До Z включительно:

Код
=СИМВОЛ(СТОЛБЕЦ()+64)
 

GRIM

Пользователь

Сообщений: 232
Регистрация: 21.09.2016

#6

11.10.2019 20:09:31

Цитата
Tosyan12 написал:
Я переводчиком перевёл но таких функций у меня нет.

Не может такого быть.

Код
=SUBSTITUTE(ADDRESS(1;COLUMN();4);1;)

=

Код
=ПОДСТАВИТЬ(АДРЕС(1;СТОЛБЕЦ();4);1;)
 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

Светлый,  досокращал формулу до результата сокращенного  :D

GRIM, Thanks for adaption and translation :-)

По вопросам из тем форума, личку не читаю.

 

Tosyan12

Пользователь

Сообщений: 117
Регистрация: 22.04.2018

#8

12.10.2019 11:52:34

Цитата
GRIM написал:
ПОДСТАВИТЬ(АДРЕС(1;СТОЛБЕЦ();4);1;)

Помогите составить формулу из 2ух. Значит есть 2 формулы

Код
=ГИПЕРССЫЛКА("#ЛИСТ1!L"&СТРОКА(N35);"►") и =АДРЕС(СТРОКА();СТОЛБЕЦ();4)

Мне нужно сделать так чтобы при нажатии на стрелочку вправо можно было попасть на стрелочку влево, в которой тоже есть формула, которая ведёт влево и при этом можно было добавлять столбики между формулами и переключение всё равно будет происходить по ячейкам с формулами. Я загружу файл, для вертикальных я сделал а для горизонтальных не получается добавляешь столбики и приходится каждый раз править все формулы.

Прикрепленные файлы

  • Переход.xlsx (9.74 КБ)

 

buchlotnik

Пользователь

Сообщений: 3863
Регистрация: 31.10.2014

Excel 365 Бета-канал

Tosyan12, а какое отношение этот вопрос имеет к заявленной теме?

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 

Юрий М

Модератор

Сообщений: 60586
Регистрация: 14.09.2012

Контакты см. в профиле

Мало того, что никакого, так автор даже не соизволил ответить помогающим — подошли решения или нет?

 

Tosyan12

Пользователь

Сообщений: 117
Регистрация: 22.04.2018

Нет поэтому я спрашиваю как вернуть букву столбца совместив 2 формулы

 

Юрий М

Модератор

Сообщений: 60586
Регистрация: 14.09.2012

Контакты см. в профиле

#12

12.10.2019 12:00:54

Как вернуть букву — Вам показали, а теперь начинается

Цитата
Tosyan12 написал:
при нажатии на стрелочку вправо можно было попасть на стрелочку влево,

Создавайте новую тему про «стрелочки». А в этой теме неплохо бы поблагодарить тех, кто Вам помогал.

 

Tosyan12

Пользователь

Сообщений: 117
Регистрация: 22.04.2018

#13

12.10.2019 12:29:54

Цитата
Юрий М написал:
Создавайте новую тему про «стрелочки»

Я уже создал 2 и никак, я думал картинки вставить, но тут ограничения на них, создам тогда 3юю тему про стрелочки, я снял видео на фотоаппарат я его в ютуб загружу там я показал что куда оно там стрикает и переходит.

 

Юрий М

Модератор

Сообщений: 60586
Регистрация: 14.09.2012

Контакты см. в профиле

Не нужна третья: у Вас уже есть тема про переход между столбцами.

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

Tosyan12, для стрелочек, галочек, людочек изучите возможности функции адрес и на этом все.

По вопросам из тем форума, личку не читаю.

 

Tosyan12

Пользователь

Сообщений: 117
Регистрация: 22.04.2018

#16

12.10.2019 14:43:06

Цитата
БМВ написал:
для стрелочек, галочек, людочек изучите возможности функции адрес и на этом все

Ну да возможно близко хожу но мозгов не хватает с этим экселем. Я хочу сделать вот такой эффект

https://www.youtube.com/watch?v=So3DBadKLdU&feature=youtu.be

 

Юрий М

Модератор

Сообщений: 60586
Регистрация: 14.09.2012

Контакты см. в профиле

Tosyan12, забудьте, что существует кнопка цитирования — она не для Вас. Вы не умеете пользоваться этой кнопкой или не знаете, что такое цитата.

 

Tosyan12

Пользователь

Сообщений: 117
Регистрация: 22.04.2018

#18

12.10.2019 14:52:19

Цитата
Юрий М написал:
забудьте, что существует кнопка цитирования — она не для Вас. Вы не умеете пользоваться этой кнопкой или не знаете, что такое цитата.

Человек мне намекнул про функцию АДРЕС(), я с ней экспериментировал, я написал ответ человеку что не хватает мозгов её применить в моей ситуации

 

Юрий М

Модератор

Сообщений: 60586
Регистрация: 14.09.2012

Контакты см. в профиле

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#20

12.10.2019 15:03:50

Бан до понедельника. В понедельник придете — первым делом приведите в порядок сообщения в двух своих темах.

Вы когда-нибудь пытались получить букву строки или столбца текущей ячейки в Excel, как показано ниже? Здесь я ввожу несколько формул для быстрого получения буквы строки или буквы столбца активной ячейки.

Получить букву строки или столбца текущей ячейки


Получить букву строки или столбца текущей ячейки

Получить букву строки текущей ячейки

Скопируйте одну из следующих формул, вставьте ее в активную ячейку и нажмите клавишу Enter, чтобы получить относительную букву.

= СИМВОЛ (СТРОКА () + 64)

= ЛЕВЫЙ (АДРЕС (1; СТРОКА (); 2); 1 + (СТРОКА ()> 26))

документ получить букву строки столбца 1

Получить букву столбца текущей ячейки

Скопируйте одну из следующих формул, вставьте ее в активную ячейку и нажмите клавишу Enter, чтобы получить относительную букву.

= СИМВОЛ (КОЛОНКА () + 64)

= ЛЕВЫЙ (АДРЕС (1; КОЛОНКА (); 2); 1 + (КОЛОНКА ()> 26))

документ получить букву строки столбца 2


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Номинальный 5 из 5


·


рейтинги 1

MS Excel columns have a pattern like A, B, C, …, Z, AA, AB, AC, …., AZ, BA, BB, … ZZ, AAA, AAB ….. etc. In other words, column 1 is named “A”, column 2 as “B”, and column 27 as “AA”.
Given a column number, find its corresponding Excel column name. The following are more examples.

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

Thanks to Mrigank Dembla for suggesting the below solution in a comment.
Suppose we have a number n, let’s say 28. so corresponding to it we need to print the column name. We need to take the remainder with 26. 

If the remainder with 26 comes out to be 0 (meaning 26, 52, and so on) then we put ‘Z’ in the output string and new n becomes n/26 -1 because here we are considering 26 to be ‘Z’ while in actuality it’s 25th with respect to ‘A’.

Similarly, if the remainder comes out to be non-zero. (like 1, 2, 3, and so on) then we need to just insert the char accordingly in the string and do n = n/26.

Finally, we reverse the string and print. 

Example: 
n = 700
The remainder (n%26) is 24. So we put ‘X’ in the output string and n becomes n/26 which is 26. 
Remainder (26%26) is 0. So we put ‘Z’ in the output string and n becomes n/26 -1 which is 0.

Following is the implementation of the above approach.

C++

#include <bits/stdc++.h>

#define MAX 50

using namespace std;

void printString(int n)

{

    char str[MAX];

    int i = 0;

    while (n > 0) {

        int rem = n % 26;

        if (rem == 0) {

            str[i++] = 'Z';

            n = (n / 26) - 1;

        }

        else

        {

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

            n = n / 26;

        }

    }

    str[i] = '';

    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

public class ExcelColumnTitle {

    private static void printString(int columnNumber)

    {

        StringBuilder columnName = new StringBuilder();

        while (columnNumber > 0) {

            int rem = columnNumber % 26;

            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

MAX = 50

def printString(n):

    string = [""] * MAX

    i = 0

    while n > 0:

        rem = n % 26

        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] = ''

    string = string[::-1]

    print "".join(string)

printString(26)

printString(51)

printString(52)

printString(80)

printString(676)

printString(702)

printString(705)

C#

using System;

class GFG{

static String reverse(String input)

{

    char[] reversedString = input.ToCharArray();

    Array.Reverse(reversedString);

    return new String(reversedString);

}

private static void printString(int columnNumber)

{

    String columnName = "";

    while (columnNumber > 0)

    {

        int rem = columnNumber % 26;

        if (rem == 0)

        {

            columnName += "Z";

            columnNumber = (columnNumber / 26) - 1;

        }

        else

        {

            columnName += (char)((rem - 1) + 'A');

            columnNumber = columnNumber / 26;

        }

    }

    columnName = reverse(columnName);

    Console.WriteLine(columnName.ToString());

}

public static void Main(String[] args)

{

    printString(26);

    printString(51);

    printString(52);

    printString(80);

    printString(676);

    printString(702);

    printString(705);

}

}

Javascript

<script>

function printString(columnNumber)

{

        let columnName = [];

        while (columnNumber > 0) {

            let rem = columnNumber % 26;

            if (rem == 0) {

                columnName.push("Z");

                columnNumber = Math.floor(columnNumber / 26) - 1;

            }

            else

            {

                columnName.push(String.fromCharCode((rem - 1) + 'A'.charCodeAt(0)));

                columnNumber = Math.floor(columnNumber / 26);

            }

        }

        document.write(columnName.reverse().join("")+"<br>");

}

printString(26);

printString(51);

printString(52);

printString(80);

printString(676);

printString(702);

printString(705);

</script>

Output

Z
AY
AZ
CB
YZ
ZZ
AAC

Time Complexity: O(log26n), as we are using a loop and in each traversal, we decrement by floor division of 26.

Auxiliary Space: O(50), as we are using extra space for storing the result.
Method 2 
The problem is similar to converting a decimal number to its binary representation but instead of a binary base system where we have two digits only 0 and 1, here we have 26 characters from A-Z.
So, we are dealing with base 26 instead of base binary. 
That’s not where the fun ends, we don’t have zero in this number system, as A represents 1, B represents 2 and so on Z represents 26. 
To make the problem easily understandable, we approach the problem in two steps:

  1. Convert the number to base 26 representation, considering we have 0 also in the system.
  2. Change the representation to the one without having 0 in its system.

HOW? Here is an example

Step 1: 
Consider we have number 676, How to get its representation in the base 26 system? In the same way, we do for a binary system, Instead of division and remainder by 2, we do division and remainder by 26.

Base 26 representation of 676 is : 100 

Step2
But Hey, we can’t have zero in our representation. Right? Because it’s not part of our number system. How do we get rid of zero? Well it’s simple, but before doing that let’s remind one simple math trick:

Subtraction: 
5000 - 9, How do you subtract 9 from 0 ? You borrow
from next significant bit, right.  
  • In a decimal number system to deal with zero, we borrow 10 and subtract 1 from the next significant.
  • In the Base 26 Number System to deal with zero, we borrow 26 and subtract 1 from the next significant bit.

So Convert 10026 to a number system that does not have ‘0’, we get (25 26)26 
Symbolic representation of the same is: YZ 

Here is the implementation of the same:

C++

#include <iostream>

using namespace std;

void printString(int n)

{

    int arr[10000];

    int i = 0;

    while (n) {

        arr[i] = n % 26;

        n = n / 26;

        i++;

    }

    for (int j = 0; j < i - 1; j++) {

        if (arr[j] <= 0) {

            arr[j] += 26;

            arr[j + 1] = arr[j + 1] - 1;

        }

    }

    for (int j = i; j >= 0; j--) {

        if (arr[j] > 0)

            cout << char('A' + arr[j] - 1);

    }

    cout << endl;

}

int main()

{

    printString(26);

    printString(51);

    printString(52);

    printString(80);

    printString(676);

    printString(702);

    printString(705);

    return 0;

}

Java

import java.util.*;

class GFG{

static void printString(int n)

{

    int []arr = new int[10000];

    int i = 0;

    while (n > 0)

    {

        arr[i] = n % 26;

        n = n / 26;

        i++;

    }

    for(int j = 0; j < i - 1; j++)

    {

        if (arr[j] <= 0)

        {

            arr[j] += 26;

            arr[j + 1] = arr[j + 1] - 1;

        }

    }

    for(int j = i; j >= 0; j--)

    {

        if (arr[j] > 0)

            System.out.print(

                (char)('A' + arr[j] - 1));

    }

    System.out.println();

}

public static void main(String[] args)

{

    printString(26);

    printString(51);

    printString(52);

    printString(80);

    printString(676);

    printString(702);

    printString(705);

}

}

Python3

def printString(n):

    arr = [0] * 10000

    i = 0

    while (n > 0):

        arr[i] = n % 26

        n = int(n // 26)

        i += 1

    for j in range(0, i - 1):

        if (arr[j] <= 0):

            arr[j] += 26

            arr[j + 1] = arr[j + 1] - 1

    for j in range(i, -1, -1):

        if (arr[j] > 0):

            print(chr(ord('A') +

                  (arr[j] - 1)), end = "");

    print();

if __name__ == '__main__':

    printString(26);

    printString(51);

    printString(52);

    printString(80);

    printString(676);

    printString(702);

    printString(705);

C#

using System;

class GFG{

static void printString(int n)

{

  int []arr = new int[10000];

  int i = 0;

  while (n > 0)

  {

    arr[i] = n % 26;

    n = n / 26;

    i++;

  }

  for(int j = 0; j < i - 1; j++)

  {

    if (arr[j] <= 0)

    {

      arr[j] += 26;

      arr[j + 1] = arr[j + 1] - 1;

    }

  }

  for(int j = i; j >= 0; j--)

  {

    if (arr[j] > 0)

      Console.Write((char)('A' +

                     arr[j] - 1));

  }

  Console.WriteLine();

}

public static void Main(String[] args)

{

  printString(26);

  printString(51);

  printString(52);

  printString(80);

  printString(676);

  printString(702);

  printString(705);

}

}

Javascript

<script>

function printString(n){

    let arr = [];

    let i = 0;

    while (n) {

        arr[i] = n % 26;

        n = Math.floor(n / 26);

        i++;

    }

    for (let j = 0; j < i - 1; j++) {

        if (arr[j] <= 0) {

            arr[j] += 26;

            arr[j + 1] = arr[j + 1] - 1;

        }

    }

    let ans = '';

    for (let j = i; j >= 0; j--) {

        if (arr[j] > 0)

            ans += String.fromCharCode(65 + arr[j] - 1);

    }

    document.write(ans + "<br>");

}

printString(26);

printString(51);

printString(52);

printString(80);

printString(676);

printString(702);

printString(705);

</script>

Output

Z
AY
AZ
CB
YZ
ZZ
AAC

Time Complexity: O(log26n), as we are using a loop and in each traversal, we decrement by floor division of 26.

Auxiliary Space: O(10000), as we are using extra space for the array.

Method 3:

We can use a recursive function which definitely reduces the time and  increase the efficiency:

Alphabets are in sequential order like: ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’. You have experienced while using excel when you see columns and rows numbering are done in  Alphabetical ways.

Here’s How I purposefully think about the logic of how it is arranged.

(In Mathematical  terms, [a , b ] means from ‘a’ to ‘b’).

[1,26] = [A,Z] (Understand by ‘1’ stands for ‘A’ and ’26” stands for “Z”). For [27,52] ,it will be like [AA,AZ], For [57,78] it will be [BA,BZ]

Logic is to append an Alphabet sequentially whenever it ends up numbering at 26.

For example, if the number is ’27’ which is greater than  ’26’, then we simply need to divide by 26, and we get the remainder as 1, We see “1” as “A” and can be recursively done.

we will be using python for this.

Algorithm is:

1. Take an array and Sort the letters from A to Z . (You can also use the import string and string function to get “A to Z” in uppercase.)

2. If the number is less than or equal to ’26’, simply get the letter from the array and print it.

3. If it is greater than 26, use the Quotient  Remainder rule, if the remainder is zero, there are 2 possible ways, if the quotient is “1”, simply hash out the letter from the index [r-1]( ‘r’ is remainder), else call out the function from the num =(q-1) and append at the front to the letter indexing [r-1].

4. If the remainder is not equal to “0”, call the function for the num = (q) and append at the front to the letter indexing [r-1].

The code concerned with this is:

C++

#include<bits/stdc++.h>

using namespace std;

string alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

string num_hash(int num){

    if(num < 26){

      string res = "";

      res += alpha[num-1];

      return res;

    }

    else{

      int q = (num / 26);

      int r = num % 26;

      string res = "";

      if(r == 0){

        if(q == 1){

          res.append(1,alpha[(26 + r-1)%26]);

        }

        else{

          res = num_hash(q-1);

          res.append(1,alpha[(26 + r-1)%26]);

        }

      }

      else{

        res = num_hash(q);

        res.append(1,alpha[(26 + r-1)%26]);

      }

      return res;

    }

}

int main () {

    cout<< num_hash(26) << endl;

    cout<< num_hash(51) << endl;

    cout<< num_hash(52) << endl;

    cout<< num_hash(80) << endl;

    cout<< num_hash(676) << endl;

    cout<< num_hash(702) << endl;

    cout<< num_hash(705) << endl;

    return 0;

}

Java

import java.io.*;

class GFG

{

  static String alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

  static String num_hash(int num){

    if(num < 26)

      return Character.toString(alpha.charAt(num-1));

    else{

      int q = Math.floorDiv(num, 26);

      int r = num % 26;

      if(r == 0){

        if(q == 1){

          return Character.toString(alpha.charAt((26 + r-1)%26));

        }

        else

          return num_hash(q-1) + alpha.charAt((26 + r-1)%26);

      }

      else

        return num_hash(q) + alpha.charAt((26 + r-1)%26);

    }

  }

  public static void main (String[] args) {

    System.out.println(num_hash(26));

    System.out.println(num_hash(51));

    System.out.println(num_hash(52));

    System.out.println(num_hash(80));

    System.out.println(num_hash(676));

    System.out.println(num_hash(702));

    System.out.println(num_hash(705));

  }

}

Python3

alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

def num_hash(num):

    if num < 26:

        return alpha[num-1]

    else:

        q, r = num//26, num % 26

        if r == 0:

            if q == 1:

                return alpha[r-1]

            else:

                return num_hash(q-1) + alpha[r-1]

        else:

            return num_hash(q) + alpha[r-1]

print(num_hash(26))

print(num_hash(51))

print(num_hash(52))

print(num_hash(80))

print(num_hash(676))

print(num_hash(702))

print(num_hash(705))

C#

using System;

class GFG

{

static string alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

static string num_hash(int num){

    if(num < 26)

    return Char.ToString(alpha[num-1]);

    else{

    int q = num/26;

    int r = num % 26;

    if(r == 0){

        if(q == 1){

        return Char.ToString(alpha[(26 + r-1)%26]);

        }

        else

        return num_hash(q-1) + alpha[(26 + r-1)%26];

    }

    else

        return num_hash(q) + alpha[(26 + r-1)%26];

    }

}

public static void Main(String[] args) {

    Console.WriteLine(num_hash(26));

    Console.WriteLine(num_hash(51));

    Console.WriteLine(num_hash(52));

    Console.WriteLine(num_hash(80));

    Console.WriteLine(num_hash(676));

    Console.WriteLine(num_hash(702));

    Console.WriteLine(num_hash(705));

}

}

Javascript

<script>

let alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

function num_hash(num)

{

    if(num < 26)

        return alpha[num-1]

    else{

        let q = Math.floor(num/26),r = num % 26

        if(r == 0){

            if(q == 1)

                return alpha[(26 + r-1)]

            else

                return num_hash(q-1) + alpha[(26 + r-1)]

        }

        else

            return num_hash(q) + alpha[r-1]

    }

}

document.write(num_hash(26),"</br>")

document.write(num_hash(51),"</br>")

document.write(num_hash(52),"</br>")

document.write(num_hash(80),"</br>")

document.write(num_hash(676),"</br>")

document.write(num_hash(702),"</br>")

document.write(num_hash(705),"</br>")

</script>

Output

Z
AY
AZ
CB
YZ
ZZ
AAC

Time Complexity: O(log26n), as we are using recursion and in each recursive call, we decrement by floor division of 26.

Auxiliary Space: O(1), as we are not using any extra space.
Related Article : 
Find the Excel column number from the column title
This article is contributed by Kartik. Please write comments if you find anything incorrect, or if you want to share more information about the topic discussed above.

Формула определения буквы столбца через опред. интервал

Chelovekov

Дата: Суббота, 05.01.2019, 08:31 |
Сообщение № 1

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 238


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Здравствуйте. гуры Екселя !!! Подскажите пожалуйста можно ли написать формулу, которая будет определяет букву столбца через определенный интервал столбцов. Например: Первый столбец буква А, через пять столбцов от столбца с буквой А, будет F.

Зараннее благодарен.

 

Ответить

Pelena

Дата: Суббота, 05.01.2019, 08:57 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Непонятно, что брать в качестве исходных данных. Если просто букву столбца, то

Код

=СИМВОЛ(КОДСИМВ(«A»)+5)


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Nic70y

Дата: Суббота, 05.01.2019, 09:27 |
Сообщение № 3

Группа: Друзья

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

Замечаний:
0% ±


Excel 2010

Код

=ПОДСТАВИТЬ(АДРЕС(1;СТОЛБЕЦ()+5;4);1;)


ЮMoney 41001841029809

 

Ответить

Chelovekov

Дата: Суббота, 05.01.2019, 09:42 |
Сообщение № 4

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 238


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Огромное спасибо hands

 

Ответить

1 / 1 / 0

Регистрация: 25.11.2014

Сообщений: 9

1

Как найти букву столбца? Или как удалить числа из ячейки?

09.08.2015, 20:09. Показов 2955. Ответов 9


Студворк — интернет-сервис помощи студентам

Доброго дня!

Помогите справиться с задачей

В столбце А приводятся заголовки столбцов, расположенных на листе Данные
В столбец B выводится имя ячейки, например ИМЯ = А1
Надо чтобы в столбце C выводилась буквенное обозначение столбца

Проблема в том, что столбец с заголовком ИМЯ может находится как в ячейке A1, так и в ячейке AZ132
и из этого значения надо получить только буквы, которые соответствуют столбцу — A или AZ

Пример:
Пример буква столбца.xlsx



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

09.08.2015, 20:52

2

Если в фунции =АДРЕС() использовать третий(необязательный) аргумент Абсолютный номер и указать тип ссылки 2, то вместо AC5 Вы получите AC$5 и сможете найти $ и избавиться от всех символов, начиная с $



0



3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

10.08.2015, 11:38

3

а для чего вообще эти манипуляции?



0



1 / 1 / 0

Регистрация: 25.11.2014

Сообщений: 9

10.08.2015, 18:29

 [ТС]

4

Цитата
Сообщение от Vlad999
Посмотреть сообщение

а для чего вообще эти манипуляции?

мне надо задать диапазон для выборки данных из столбца с названием ИМЯ на определенном листе
Примерно такой:
Данные!A:A

Может кончено есть более простое решение, но я о нем не знаю ))

А чтобы удалить из названия ячейки числа в итоге использовал такую формулу:

Код

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;0;);1;);2;);3;);4;);5;);6;);7;);8;);9;)



0



5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

10.08.2015, 19:04

5

Поподробнее можете разьяснить, для чего задавать такой диапазон, желательно с примером.
Наверняка найдется решение



0



1 / 1 / 0

Регистрация: 25.11.2014

Сообщений: 9

10.08.2015, 19:27

 [ТС]

6

Цитата
Сообщение от Fairuza
Посмотреть сообщение

Поподробнее можете разьяснить, для чего задавать такой диапазон, желательно с примером.
Наверняка найдется решение

Есть отдел продаж, в нем несколько сотрудников
И есть общая база клиентов

Надо по каждому сотруднику посчитать отдельные показатели

Например посчитать количество партнеров по работнику №5, сортируя определенные условия из разных столбцов
Считается у меня это с помощью СЧЕТЕСЛИМН

краткий пример вложил
пример выборка.xlsx



0



5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

10.08.2015, 19:37

7

На мой взгляд, все это проще сделать Фильтром или Сводной таблицей.

При каких условиях, например, у сотрудника 7 получается число 9?



0



1 / 1 / 0

Регистрация: 25.11.2014

Сообщений: 9

10.08.2015, 20:53

 [ТС]

8

Цитата
Сообщение от Fairuza
Посмотреть сообщение

На мой взгляд, все это проще сделать Фильтром или Сводной таблицей.
При каких условиях, например, у сотрудника 7 получается число 9?

сводная — не вариант
т.к. в примере оставил подсчет только в строке Общая База
в нужном файле еще ряд строк, по которым стоят свои «фильтры»

число 9 у сотрудника 7 получается при соблюдении условий:
1.Подчиненность = пусто
2.Участок — <40
3.сотрудник = 7wta



0



132 / 108 / 22

Регистрация: 23.06.2015

Сообщений: 339

10.08.2015, 21:25

9



0



5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

10.08.2015, 22:34

10

Число 9 для сотрудника 7 можно получить

Код

=СУММПРОИЗВ((TP=Данные!C2:C319)*(Данные!F2:F319<40)*((ДЛСТР(Данные!B2:B319))=0))



0



Like this post? Please share to your friends:
  • Поиск в excel максимальных позиций
  • Поиск букв в тексте word
  • Поиск в excel количество
  • Поиск букв в значении excel
  • Поиск в excel как яндекс