Как узнать имя столбца excel

 

Alxb82

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

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

Здравствуйте. Подскажите пожалуйста, как, не используя VBS определить буквенное имя столбца ячейки.
Есть ли функция возвращающая это имя?
В любую ячейку (например B2) ввожу формулу с этой функцией и распространяю ее на несколько (пусть 3) соседние в строке ячейки.
Ожидаю результат сооветствующий заголовкам столбцов этих ячеек, т.е.:

Решено:
вариант1: =ПОДСТАВИТЬ(АДРЕС(СТРОКА();СТОЛБЕЦ();4);СТРОКА(); «» )
вариант2: =ПСТР(АДРЕС(СТРОКА();СТОЛБЕЦ();1);2;ПОИСК( «$» ;АДРЕС(СТРОКА();СТОЛБЕЦ();1);2)-2)

Изменено: Alxb8213.10.2014 19:56:07
(Решено)

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

Не уверен, что нужно Вам именно имя столбца — ни одна функция не просит его. Номер — да. А номер можно узнать функцией СТОЛБЕЦ()

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Pelena

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

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

#3

13.10.2014 15:20:42

Если всё же нужна буква, то

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

Сергей

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

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

#4

13.10.2014 15:23:07

:D   дабы попадали все буквы типа АА

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

Лень двигатель прогресса, доказано!!!

 

Alxb82

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

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

Задача несколько сложнее обстоит. Решаю ее разбив на множество мелких. Это одна из них.
В функцию ДВССЫЛ(ссылка) можно передать ссылку в виде текстовых координат, например: ячейка с формулой =ДВССЫЛ(«B»&»2») будет ссылать на ячейку B2. Так вот эту «B» мне и нужно узнать на одном из этапов.

Изменено: Alxb8213.10.2014 15:25:30

 

Alxb82

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

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

Сергей, — точно, работает, то что нужно — сейчас буду разбираться как работает. Спасибо.
(дольше вопрос формулировал чем на него отвечали)

 

такую задачу решает другая формула =ДВССЫЛ(АДРЕС(2;2))
НЕ НУЖНО сначала искать букву второго столбца, если можно просто передать номер столбца в функцию АДРЕС с тем же успехом

 

Alxb82

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

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

Все верно, но требуется ввести адрес не номером столбца а его именем. В любом случае придется переводить что-то во что-то. Например если нужно ввести текстом (не указать мышкой) столбец с именем «DU». Не считать же какой он там по счету.

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

#9

13.10.2014 15:43:14

Цитата
Alxb82 пишет: Не считать же какой он там по счету

Что мешает указать ссылку на эту ячейку в СТОЛБЕЦ() ?
СТОЛБЕЦ(DU1)

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Alxb82

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

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

Мешает то, что я, на этапе «программирования» не знаю что это будет именно «DU». Это имя мне будет известно в процессе анализа заполненной таблицы. Я согласен что можно выкрутиться и этим способом (получить не имя а ссылку на ячейку) и в каком-то случае он будет оправдан, но в данный момент меня интересовало получить именно буквенное и только имя столбца. Спасибо.

Изменено: Alxb8213.10.2014 19:57:18

 

V

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

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

#11

13.10.2014 16:20:38

если озвучите всю задачу то возможно и ДВССЫЛ не понадобится. Хотя это уже другая тема.  ;)  
по теме такой вариант

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

Alxb82

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

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

#12

13.10.2014 19:18:07

Видимо, самое элегантное решение это:

Цитата
V пишет: =ПОДСТАВИТЬ(АДРЕС(СТРОКА();СТОЛБЕЦ();4);СТРОКА(); «» )

где из строки адреса «строкастолбец» просто удаляется «строка» и остается «столбец».
тем не менее:

Цитата
Сергей пишет: =ПСТР(АДРЕС(СТРОКА();СТОЛБЕЦ();1);2;ПОИСК( «$» ;АДРЕС(СТРОКА();СТОЛБЕЦ();1);2)-2)

тоже абсолютно рабочий вариант решения.
Всем спасибо за помощь.

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.

Вы можете использовать функции ROW и COLUMN для этого. Если вы опустите аргумент для этих формул, используется текущая ячейка. Их можно напрямую использовать с функцией OFFSET или любой другой функцией, в которой вы можете указать как строку, так и столбец в виде числовых значений.

Например, если вы введете =ROW() в ячейку D8, будет возвращено значение 8. Если вы введете =COLUMN() в той же ячейке, возвращается значение 4.

Если вам нужна буква столбца, вы можете использовать функцию CHAR . Я не рекомендую использовать буквы для представления столбца, поскольку при переходе к двухбуквенным именам столбцов все становится сложнее (где использование цифр в любом случае более логично).

В любом случае, если вы все еще хотите получить букву столбца, вы можете просто добавить 64 к номеру столбца (64 — на один символ меньше, чем A), поэтому в предыдущем примере, если вы установите значение ячейки =CHAR(COLUMN()+64) , возвращаемое значение будет D Если вы хотите, чтобы значением ячейки была сама ячейка, полная формула была бы =CHAR(COLUMN()+64) & ROW() .


Просто к вашему сведению, я получил 64 из таблицы ASCII. Вы также можете использовать формулу CODE , поэтому обновленная формула с использованием этого будет =CHAR(COLUMN() + CODE("A") - 1) . Вы должны вычесть 1, так как минимальное значение COLUMN всегда равно 1, а затем минимальное возвращаемое значение всей формулы будет B

Однако это не будет работать с двухбуквенными столбцами. В этом случае вам потребуется следующая формула для правильного анализа двухбуквенных столбцов:

=IF(COLUMN()>26,IF(RIGHT(CHAR(IF(MOD(COLUMN()-1,26)=0,1,MOD(COLUMN()-1,26))+64),1)="Y",CHAR(INT((COLUMN()-1)/26)+64) & "Z",CHAR(INT((COLUMN()-1)/26)+64) & CHAR(IF(MOD(COLUMN(),26)=0,1,MOD(COLUMN(),26))+64)),CHAR(COLUMN()+64))&ROW()

Я не уверен, есть ли более простой способ сделать это или нет, но я знаю, что работает от ячейки A1 до ZZ99 без проблем. Однако это иллюстрирует, почему лучше избегать использования буквенных идентификаторов столбцов и придерживаться формул, основанных исключительно на числах (например, используя номер столбца вместо буквы с OFFSET).

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Excel Starter 2010 Еще…Меньше

Диалоговое окно «Диспетчер имен» используется для работы со всеми определенными именами и именами таблиц в книге. Например, может потребоваться найти имена с ошибками, подтвердить значение и ссылку на имя, просмотреть или изменить описательные комментарии или определить область. Вы также можете отсортировать и отфильтровать список имен, а также легко добавлять, изменять или удалять имена из одного расположения.

Чтобы открыть диалоговое окно Диспетчер имен, на вкладке Формулы в группе Определенные имена нажмите кнопку Диспетчер имен.

Диалоговое окно "Диспетчер имен"

В диалоговом окне Диспетчер имен отображаются следующие сведения о каждом имени в списке.

Имя столбца

Описание

Имя

Одно из следующих значений:

  • определенное имя, которое обозначается значком определенного имени; Значок определенного имени

  • имя таблицы, которое обозначается значком имени таблицы. Значок имени таблицы

    Примечание: Имя таблицы — это имя таблицы Excel, которая представляет собой коллекцию данных об определенной теме, хранящихся в записях (строках) и полях (столбцах). Excel создает имя таблицы Excel таблицы table1, Table2 и т. д. при каждой вставке Excel таблицы. Вы можете изменить имя таблицы, чтобы сделать ее более понятной. Дополнительные сведения о Excel таблицах см. в статье «Использование структурированных ссылок с Excel таблицами».

Значение

Текущее значение имени, такое как результаты формулы, строковая константа, диапазон ячеек, ошибка, массив значений или знаки-заполнители, если формулу не удается вычислить. Вот типичные примеры.

  • «это моя строковая константа»

  • 3,1459

  • {2003;12,2002;23,;2001,18}

  • #ССЫЛКА!

  • {…}

Диапазон

Текущая ссылка для имени. Вот типичные примеры.

  • =Лист1!$A$3

  • =8,3

  • =HR!$A$1:$Z$345

  • =СУММ(Лист1!A1,Лист2!B2)

Область

  • имя листа, если область действия — локальный уровень листа;

  • «Книга», если областью является глобальный уровень книги. Этот вариант применяется по умолчанию.

Примечание

Дополнительные сведения об имени длиной до 255-ти знаков. Вот типичные примеры.

  • Срок действия этого значения истекает 2 мая 2007 г.

  • Не удалять! Критическое имя!

  • Основано на числах экзамена на сертификацию ISO.

Объект ссылки:

Ссылка на выбранное имя.

Диапазон имени можно быстро изменить, изменив сведения в поле «Ссылки «. После внесения изменений можно нажать кнопку » Кнопка ВВОД сохранить изменения», или Кнопка «Отмена» отменить изменения.

Примечания: 

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

  • В диалоговом окне диспетчера имен не отображаются имена, определенные в Visual Basic для приложений (VBA) или скрытые имена (свойство Visible имени имеет значение False).

  1. На вкладке Формулы в группе Определенные имена выберите команду Присвоить имя.

  2. В диалоговом окне «Новое имя» введите имя, которое вы хотите использовать для ссылки.

    Примечание: Длина имени не может превышать 255 знаков.

  3. Область автоматически по умолчанию используется для книги. Чтобы изменить область имени, в раскрывающемся списке «Область» выберите имя листа.

  4. Также в поле Примечание можно ввести описание длиной до 255 знаков.

  5. В поле Диапазон выполните одно из указанных ниже действий.

    • Нажмите кнопку «Свернуть Изображение кнопки» (при этом диалоговое окно временно сжимается), выделите ячейки на листе и нажмите кнопку » Развернуть диалоговое окно» Изображение кнопки.

    • Чтобы указать константу, введите = (знак равенства), а затем значение константы.

    • Чтобы указать формулу, введите =, а затем формулу.
       

      Советы: 

      • Будьте внимательны при использовании абсолютных или относительных ссылок в формуле. Если создать ссылку, щелкнув ячейку, на которую вы хотите ссылаться, Excel создать абсолютную ссылку, например «Sheet1!$B$1». Если ввести ссылку, например «B1», это относительная ссылка. Если при выборе имени активной ячейкой является A1, то ссылка на «B1» действительно означает «ячейка в следующем столбце». Если вы используете определенное имя в формуле в ячейке, ссылка будет на ячейку в следующем столбце относительно места ввода формулы. Например, если ввести формулу в C10, ссылка будет иметь значение D10, а не B1.

      • Дополнительные сведения: переключение между относительным, абсолютным и смешанным ссылками

  6. Чтобы закончить и вернуться на лист, нажмите кнопку ОК.

Примечание:  Чтобы расширить или удлинить диалоговое окно Создание имени, щелкните и перетащите маркер захвата, расположенный внизу.

При изменении определенного имени или имени таблицы все его использование в книге также изменяется.

  1. На вкладке Формулы в группе Определенные имена выберите пункт Диспетчер имен.

  2. В диалоговом окне диспетчера имен дважды щелкните имя, которое вы хотите изменить, или выберите имя, которое вы хотите изменить, а затем нажмите кнопку «Изменить».

  3. В диалоговом окне Изменение имени введите новое имя для ссылки в поле Имя.

  4. Измените ссылку в поле Диапазон и нажмите кнопку ОК.

  5. В диалоговом окне Диспетчер имен в поле Диапазон измените ячейку, формулу или константу, представленную этим именем.

  1. На вкладке Формулы в группе Определенные имена выберите пункт Диспетчер имен.

  2. В диалоговом окне Диспетчер имен щелкните имя, которое нужно изменить.

  3. Выделите одно или несколько имен одним из способов, указанных ниже.

    • Для выделения имени щелкните его.

    • Чтобы выбрать несколько имен в непрерывной группе, щелкните и перетащите их, а затем нажмите клавишу SHIFT и нажмите кнопку мыши для каждого имени в группе.

    • Чтобы выбрать несколько имен в несмежной группе, нажмите клавишу CTRL и нажмите кнопку мыши для каждого имени в группе.

  4. Нажмите кнопку Удалить.

  5. Нажмите кнопку ОК, чтобы подтвердить удаление.

Используйте команды раскрывающегося списка Фильтр для быстрого отображения подмножества имен. Выбор каждой команды включает или отключает операцию фильтра, что упрощает объединение или удаление различных операций фильтра для получения нужных результатов.

Можно выполнить фильтрацию из следующих параметров:

Параметр

Действие

Имена на листе

Отобразить только локальные имена листа.

Имена в книге

Отобразить только глобальные имена в книге.

Имена с ошибками

Отображение только имен со значениями, содержащими ошибки (например, #REF, #VALUE или #NAME).

Имена без ошибок

Отобразить только те имена, в значениях которых нет ошибок.

Определенные имена

Отобразить только те имена, которые определены пользователем или Excel, такое как имя области печати.

Имена таблиц

Отобразить только имена таблиц.

  • Чтобы отсортировать список имен в порядке возрастания или убывания, щелкните заголовок столбца.

  • Чтобы автоматически изменить размер столбца в соответствии с самым длинным значением в этом столбце, дважды щелкните правую часть заголовка столбца.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Почему в Excel появляется диалоговое окно «Конфликт имен»?

Создание именованного диапазона в Excel

Вставка именованного диапазона в формулу в Excel

Определение и использование имен в формулах

Нужна дополнительная помощь?

Вы когда-нибудь пытались получить букву строки или столбца текущей ячейки в 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

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как узнать имя макроса excel
  • Как узнать имя книги excel
  • Как узнать имена в excel
  • Как узнать значения линии тренда в excel
  • Как узнать значение ячейки excel vba

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии