Что такое имя объекта excel

title keywords f1_keywords ms.prod api_name ms.assetid ms.date

Names Object (Excel)

vbaxl10.chm487072

vbaxl10.chm487072

excel

Excel.Names

ffecf89d-7bae-c470-8e37-608857a9de2a

06/08/2017

Names Object (Excel)

A collection of all the Name objects in the application or workbook.

Remarks

Each Name object represents a defined name for a range of cells. Names can be either built-in names—such as Database, Print_Area, and Auto_Open—or custom names.

The RefersTo argument must be specified in A1-style notation, including dollar signs ($) where appropriate. For example, if cell A10 is selected on Sheet1 and you define a name by using the RefersTo argument «=sheet1!A1:B1», the new name actually refers to cells A10:B10 (because you specified a relative reference). To specify an absolute reference, use «=sheet1!$A$1:$B$1».

Example

Use the Names property to return the Names collection. The following example creates a list of all the names in the active workbook, plus the addresses they refer to.

Set nms = ActiveWorkbook.Names 
Set wks = Worksheets(1) 
For r = 1 To nms.Count 
    wks.Cells(r, 2).Value = nms(r).Name 
    wks.Cells(r, 3).Value = nms(r).RefersToRange.Address 
Next

Use the Add method to create a name and add it to the collection.The following example creates a new name that refers to cells A1:C20 on the worksheet named «Sheet1.»

Names.Add Name:="test", RefersTo:="=sheet1!$a$1:$c$20"

Use Names ( index ), where index is the name index number or defined name, to return a single Name object. The following example deletes the name «mySortRange» from the active workbook.

ActiveWorkbook.Names("mySortRange").Delete

Sample code provided by: Dennis Wallentin,VSTO &; .NET &; Excel

This example uses a named range as the formula for data validation. This example requires the validation data to be on Sheet 2 in the range A2:A100. This validation data is used to validate data entered on Sheet 1 in the range D2:D10.

Sub Add_Data_Validation_From_Other_Worksheet()
'The current Excel workbook and worksheet, a range to define the data to be validated, and the target range
'to place the data in.
Dim wbBook As Workbook
Dim wsTarget As Worksheet
Dim wsSource As Worksheet
Dim rnTarget As Range
Dim rnSource As Range

'Initialize the Excel objects and delete any artifacts from the last time the macro was run.
Set wbBook = ThisWorkbook
With wbBook
    Set wsSource = .Worksheets("Sheet2")
    Set wsTarget = .Worksheets("Sheet1")
    On Error Resume Next
    .Names("Source").Delete
    On Error GoTo 0
End With

'On the source worksheet, create a range in column A of up to 98 cells long, and name it "Source".
With wsSource
    .Range(.Range("A2"), .Range("A100").End(xlUp)).Name = "Source"
End With

'On the target worksheet, create a range 8 cells long in column D.
Set rnTarget = wsTarget.Range("D2:D10")

'Clear out any artifacts from previous macro runs, then set up the target range with the validation data.
With rnTarget
    .ClearContents
    With .Validation
        .Delete
        .Add Type:=xlValidateList, _
             AlertStyle:=xlValidAlertStop, _
             Formula1:="=Source"
        
'Set up the Error dialog with the appropriate title and message
        .ErrorTitle = "Value Error"
        .ErrorMessage = "You can only choose from the list."
    End With
End With

End Sub

About the Contributor

Dennis Wallentin is the author of VSTO &; .NET &; Excel, a blog that focuses on .NET Framework solutions for Excel and Excel Services. Dennis has been developing Excel solutions for over 20 years and is also the coauthor of «Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA and .NET (2nd Edition).»

See also

Other resources

Excel Object Model Reference


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

Имена часто используются при создании, например,

Динамических диапазонов

,

Связанных списков

. Имя можно присвоить диапазону ячеек, формуле, константе и другим объектам EXCEL.

Ниже приведены примеры имен.


Объект именования


Пример


Формула без использования имени


Формула с использованием имени

Диапазон

имя

ПродажиЗа1Квартал

присвоено диапазону ячеек

C20:C30

=

СУММ(C20:C30)

=

СУММ (ПродажиЗа1Квартал)

Константа

имя

НДС

присвоено константе

0,18

=

ПРОИЗВЕД(A5;0,18)

=

ПРОИЗВЕД(А5;НДС)

Формула

имя

УровеньЗапасов

присвоено формуле ВПР(A1;$B$1:$F$20;5;ЛОЖЬ)

=

СУММ(ВПР(A1;$B$1:$F$20;5;ЛОЖЬ))

=

СУММ(УровеньЗапасов)

Таблица

имя

МаксПродажи2006

присвоено таблице, которая создана через меню

Вставка/

Таблицы/

Таблица

=

$C$4:$G$36

=

МаксПродажи2006

Массив констант

имя

Диапазон1

присвоено диапазону чисел

1, 2, 3

=

СУММ({1;2;3})

=

СУММ(Диапазон1)


А. СОЗДАНИЕ ИМЕН

Для создания имени сначала необходимо определим объект, которому будем его присваивать.


Присваивание имен диапазону ячеек

Создадим список, например, фамилий сотрудников, в диапазоне

А2:А10

. В ячейку

А1

введем заголовок списка –

Сотрудники,

в ячейки ниже – сами фамилии. Присвоить имя

Сотрудники

диапазону

А2:А10

можно несколькими вариантами:


1.Создание имени диапазона через команду

Создать из выделенного фрагмента

:

  • выделить ячейки

    А1:А10

    (список вместе с заголовком);
  • нажать кнопку

    Создать из выделенного фрагмента

    (из меню

    );
  • убедиться, что стоит галочка в поле

    В строке выше

    ;
  • нажать ОК.

Проверить правильность имени можно через инструмент

Диспетчер имен

(

)


2.Создание имени диапазона через команду

Присвоить имя

:

  • выделитьячейки

    А2:А10

    (список без заголовка);
  • нажать кнопку

    Присвоить имя

    (

    из меню

    );

  • в поле

    Имя

    ввести

    Сотрудники

    ;
  • определить

    Область действия имени

    ;

  • нажать ОК.


3.Создание имени в поле

Имя:

  • выделить ячейки

    А2:А10

    (список без заголовка);
  • в

    поле Имя

    (это поле расположено слева от

    Строки формул

    ) ввести имя

    Сотрудники

    и нажать

    ENTER

    . Будет создано имя с

    областью действия

    Книга

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

    Диспетчер имен

    .


4.Создание имени через контекстное меню:

  • выделить ячейки

    А2:А10

    (список без заголовка);
  • в контекстном меню, вызываемом правой клавишей, найти пункт

    Имя диапазона

    и нажать левую клавишу мыши;
  • далее действовать, как описано в пункте

    2.Создание имени диапазона через команду

    Присвоить имя

    .

ВНИМАНИЕ! По умолчанию при создании новых имен используются

абсолютные ссылки

на ячейки (абсолютная ссылка на ячейку имеет формат

$A$1

).

Про присваивание имен диапазону ячеек можно прочитать также в статье

Именованный диапазон

.


5. Быстрое создание нескольких имен

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

Необходимо создать 9 имен (Строка1, Строка2, … Строка9) ссылающихся на диапазоны

В1:Е1

,

В2:Е2

, …

В9:Е9

. Создавать их по одному (см. пункты 1-4) можно, но долго.

Чтобы создать все имена сразу, нужно:

  • выделить выделите таблицу;
  • нажать кнопку

    Создать из выделенного фрагмента

    (из меню

    );
  • убедиться, что стоит галочка в поле

    В столбце слева

    ;
  • нажать ОК.

Получим в

Диспетчере имен

(

) сразу все 9 имен!

Присваивание имен формулам и константам

Присваивать имена формулам и константам имеет смысл, если формула достаточно сложная или часто употребляется. Например, при использовании сложных констант, таких как 2*Ln(ПИ), лучше присвоить имя выражению

=2*LN(КОРЕНЬ(ПИ()))

Присвоить имя формуле или константе можно, например, через команду

Присвоить имя

(через меню

):

  • в поле

    Имя

    ввести, например

    2

    LnPi

    ;
  • в поле

    Диапазон

    нужно ввести формулу

    =2*LN(КОРЕНЬ(ПИ()))

    .

Теперь введя в любой ячейке листа формулу

=

2LnPi

, получим значение 1,14473.

О присваивании имен формулам читайте подробнее в статье

Именованная формула

.

Присваивание имен таблицам

Особняком стоят имена таблиц. Имеются ввиду

таблицы в формате EXCEL 2007

, которые созданы через меню

.

При создании этих таблиц, EXCEL присваивает имена таблиц автоматически:

Таблица1

,

Таблица2

и т.д., но эти имена можно изменить (через

Конструктор таблиц

), чтобы сделать их более выразительными.

Имя таблицы невозможно удалить (например, через

Диспетчер имен

). Пока существует таблица – будет определено и ее имя. Рассмотрим пример суммирования столбца таблицы через ее имя. Построим таблицу из 2-х столбцов:

Товар

и

Стоимость

. Где-нибудь в стороне от таблицы введем формулу

=СУММ(Таблица1[стоимость])

. EXCEL после ввода

=СУММ(Т

предложит выбрать среди других формул и имя таблицы.

EXCEL после ввода

=СУММ(Таблица1[

предложит выбрать поле таблицы. Выберем поле

Стоимость

.

В итоге получим сумму по столбцу

Стоимость

.

Ссылки вида

Таблица1[стоимость]

называются

Структурированными ссылками

.


В. СИНТАКСИЧЕСКИЕ ПРАВИЛА ДЛЯ ИМЕН

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


  • Пробелы в имени не допускаются.

    В качестве разделителей слов используйте символ подчеркивания (_) или точку (.), например, «Налог_Продаж» или «Первый.Квартал».

  • Допустимые символы.

    Первым символом имени должна быть буква, знак подчеркивания (_) или обратная косая черта (). Остальные символы имени могут быть буквами, цифрами, точками и знаками подчеркивания.
  • Нельзя использовать буквы «C», «c», «R» и «r» в качестве определенного имени, так как эти буквы используются как сокращенное имя строки и столбца выбранной в данный момент ячейки при их вводе в поле

    Имя

    или

    Перейти

    .

  • Имена в виде ссылок на ячейки запрещены.

    Имена не могут быть такими же, как ссылки на ячейки, например, Z$100 или R1C1.

  • Длина имени.

    Имя может содержать до 255-ти символов.

  • Учет регистра.

    Имя может состоять из строчных и прописных букв. EXCEL не различает строчные и прописные буквы в именах. Например, если создать имя

    Продажи

    и затем попытаться создать имя

    ПРОДАЖИ

    , то EXCEL предложит выбрать другое имя (если

    Область действия

    имен одинакова).

В качестве имен не следует использовать следующие специальные имена:


  • Критерии

    – это имя создается автоматически

    Расширенным фильтром

    (

    );


  • Извлечь

    и

    База_данных

    – эти имена также создаются автоматически

    Расширенным фильтром

    ;


  • Заголовки_для_печати

    – это имя создается автоматически при определении сквозных строк для печати на каждом листе;

  • Область_печати

    – это имя создается автоматически при задании области печати.

Если Вы в качестве имени использовали, например, слово

Критерии

с

областью действия

Лист1, то оно будет удалено при задании критериев для

Расширенного фильтра

на этом листе (без оповещения).


С. ИСПОЛЬЗОВАНИЕ ИМЕН

Уже созданное

имя

можно ввести в ячейку (в формулу) следующим образом.


  • с помощью прямого ввода.

    Можно ввести имя, например, в качестве аргумента в формуле:

    =СУММ(продажи)

    или

    =НДС

    . Имя вводится без кавычек, иначе оно будет интерпретировано как текст. После ввода первой буквы имени EXCEL отображает выпадающий список формул вместе с ранее определенными названиями имен.

  • выбором из команды

    Использовать в формуле

    .

    Выберите определенное имя на вкладке

    в группе

    из списка

    .

Для правил

Условного форматирования

и

Проверки данных

нельзя использовать ссылки на другие листы или книги (с версии MS EXCEL 2010 — можно). Использование имен помогает обойти это ограничение в MS EXCEL 2007 и более ранних версий. Если в

Условном форматировании

нужно сделать, например, ссылку на ячейку

А1

другого листа, то нужно сначала определить имя для этой ячейки, а затем сослаться на это имя в правиле

Условного форматирования

. Как это сделать — читайте здесь:

Условное форматирование

и

Проверка данных.


D. ПОИСК И ПРОВЕРКА ИМЕН ОПРЕДЕЛЕННЫХ В КНИГЕ


Диспетчер имен:

Все имена можно видеть через

Диспетчер имен (

), где доступна сортировка имен, отображение комментария и значения.


Клавиша F3:

Быстрый способ найти имена — выбрать команду

или нажать клавишу

F3

. В диалоговом окне

щелкните на кнопке

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

A

1

, то в ячейке

С1

напишем формулу:


=ГИПЕРССЫЛКА(«[бд_заказы.xlsx]»&A1;A1)

Кликая по гиперссылке в ячейке

С1

, будем переходить к соответствующим диапазонам.


Клавиша F5 (Переход):

Удобным инструментом для перехода к именованным ячейкам или диапазонам является инструмент

Переход

. Он вызывается клавишей

F5

и в поле

Перейти к

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


Е. ОБЛАСТЬ ДЕЙСТВИЯ ИМЕНИ

Все имена имеют область действия: это либо конкретный лист, либо вся книга. Область действия имени задается в диалоге

Создание имени

(

).

Например, если при создании имени для константы (пусть

Имя

будет

const

,

а в поле

Диапазон

укажем =33) в поле

Область

выберем

Лист1

, то в любой ячейке на

Листе1

можно будет написать

=const

. После чего в ячейке будет выведено соответствующее значение (33). Если сделать тоже самое на Листе2, то получим

#ИМЯ?

Чтобы все же использовать это имя на другом листе, то его нужно уточнить, предварив именем листа:

=Лист1!const

. Если имеется определенное имя и его область действия

Книга

, то это имя распознается на всех листах этой книги. Можно создать несколько одинаковых имен, но области действия у них должны быть разными. Присвоим константе 44 имя

const

,

а в поле

Область

укажем

Книга

. На

листе1

ничего не изменится (область действия

Лист1

перекрывает область действия

Книга

), а на

листе2

мы увидим 44.

Термин Объекты Excel (понимаемый в широком смысле, как объектная модель Excel) включает в себя элементы, из которых состоит любая рабочая книга Excel. Это, например, рабочие листы (Worksheets), строки (Rows), столбцы (Columns), диапазоны ячеек (Ranges) и сама рабочая книга Excel (Workbook) в том числе. Каждый объект Excel имеет набор свойств, которые являются его неотъемлемой частью.

Например, объект Worksheet (рабочий лист) имеет свойства Name (имя), Protection (защита), Visible (видимость), Scroll Area (область прокрутки) и так далее. Таким образом, если в процессе выполнения макроса требуется скрыть рабочий лист, то достаточно изменить свойство Visible этого листа.

В Excel VBA существует особый тип объектов – коллекция. Как можно догадаться из названия, коллекция ссылается на группу (или коллекцию) объектов Excel. Например, коллекция Rows – это объект, содержащий все строки рабочего листа.

Доступ ко всем основным объектам Excel может быть осуществлён (прямо или косвенно) через объект Workbooks, который является коллекцией всех открытых в данный момент рабочих книг. Каждая рабочая книга содержит объект Sheets – коллекция, которая включает в себя все рабочие листы и листы с диаграммами рабочей книги. Каждый объект Worksheet состоит из коллекции Rows – в неё входят все строки рабочего листа, и коллекции Columns – все столбцы рабочего листа, и так далее.

В следующей таблице перечислены некоторые наиболее часто используемые объекты Excel. Полный перечень объектов Excel VBA можно найти на сайте Microsoft Office Developer (на английском).

Объект Описание
Application Приложение Excel.
Workbooks Коллекция всех открытых в данный момент рабочих книг в текущем приложении Excel. Доступ к какой-то конкретной рабочей книге может быть осуществлён через объект Workbooks при помощи числового индекса рабочей книги или её имени, например, Workbooks(1) или Workbooks(«Книга1»).
Workbook Объект Workbook – это рабочая книга. Доступ к ней может быть выполнен через коллекцию Workbooks при помощи числового индекса или имени рабочей книги (см. выше). Для доступа к активной в данный момент рабочей книге можно использовать ActiveWorkbook.

Из объекта Workbook можно получить доступ к объекту Sheets, который является коллекцией всех листов рабочей книги (рабочие листы и диаграммы), а также к объекту Worksheets, который представляет из себя коллекцию всех рабочих листов книги Excel.

Sheets Объект Sheets– это коллекция всех листов рабочей книги. Это могут быть как рабочие листы, так и диаграммы на отдельном листе. Доступ к отдельному листу из коллекции Sheets можно получить при помощи числового индекса листа или его имени, например, Sheets(1) или Sheets(«Лист1»).
Worksheets Объект Worksheets – это коллекция всех рабочих листов в рабочей книге (то есть, все листы, кроме диаграмм на отдельном листе). Доступ к отдельному рабочему листу из коллекции Worksheets можно получить при помощи числового индекса рабочего листа или его имени, например, Worksheets(1) или Worksheets(«Лист1»).
Worksheet Объект Worksheet – это отдельный рабочий лист книги Excel. Доступ к нему можно получить при помощи числового индекса рабочего листа или его имени (см. выше).

Кроме этого Вы можете использовать ActiveSheet для доступа к активному в данный момент рабочему листу. Из объекта Worksheet можно получить доступ к объектам Rows и Columns, которые являются коллекцией объектов Range, ссылающихся на строки и столбцы рабочего листа. А также можно получить доступ к отдельной ячейке или к любому диапазону смежных ячеек на рабочем листе.

Rows Объект Rows – это коллекция всех строк рабочего листа. Объект Range, состоящий из отдельной строки рабочего листа, может быть доступен по номеру этой строки, например, Rows(1).
Columns Объект Columns – это коллекция всех столбцов рабочего листа. Объект Range, состоящий из отдельного столбца рабочего листа, может быть доступен по номеру этого столбца, например, Columns(1).
Range Объект Range – это любое количество смежных ячеек на рабочем листе. Это может быть одна ячейка или все ячейки листа.

Доступ к диапазону, состоящему из единственной ячейки, может быть осуществлён через объект Worksheet при помощи свойства Cells, например, Worksheet.Cells(1,1).

По-другому ссылку на диапазон можно записать, указав адреса начальной и конечной ячеек. Их можно записать через двоеточие или через запятую. Например, Worksheet.Range(«A1:B10») или Worksheet.Range(«A1», «B10») или Worksheet.Range(Cells(1,1), Cells(10,2)).

Обратите внимание, если в адресе Range вторая ячейка не указана (например, Worksheet.Range(«A1») или Worksheet.Range(Cells(1,1)), то будет выбран диапазон, состоящий из единственной ячейки.

Приведённая выше таблица показывает, как выполняется доступ к объектам Excel через родительские объекты. Например, ссылку на диапазон ячеек можно записать вот так:

Workbooks("Книга1").Worksheets("Лист1").Range("A1:B10")

Содержание

  1. Присваивание объекта переменной
  2. Активный объект
  3. Смена активного объекта
  4. Свойства объектов
  5. Методы объектов
  6. Рассмотрим несколько примеров
  7. Пример 1
  8. Пример 2
  9. Пример 3

Присваивание объекта переменной

В Excel VBA объект может быть присвоен переменной при помощи ключевого слова Set:

Dim DataWb As Workbook
Set DataWb = Workbooks("Книга1.xlsx")

Активный объект

В любой момент времени в Excel есть активный объект Workbook – это рабочая книга, открытая в этот момент. Точно так же существует активный объект Worksheet, активный объект Range и так далее.

Сослаться на активный объект Workbook или Sheet в коде VBA можно как на ActiveWorkbook или ActiveSheet, а на активный объект Range – как на Selection.

Если в коде VBA записана ссылка на рабочий лист, без указания к какой именно рабочей книге он относится, то Excel по умолчанию обращается к активной рабочей книге. Точно так же, если сослаться на диапазон, не указывая определённую рабочую книгу или лист, то Excel по умолчанию обратится к активному рабочему листу в активной рабочей книге.

Таким образом, чтобы сослаться на диапазон A1:B10 на активном рабочем листе активной книги, можно записать просто:

Смена активного объекта

Если в процессе выполнения программы требуется сделать активной другую рабочую книгу, другой рабочий лист, диапазон и так далее, то для этого нужно использовать методы Activate или Select вот таким образом:

Sub ActivateAndSelect()

   Workbooks("Книга2").Activate
   Worksheets("Лист2").Select
   Worksheets("Лист2").Range("A1:B10").Select
   Worksheets("Лист2").Range("A5").Activate

End Sub

Методы объектов, в том числе использованные только что методы Activate или Select, далее будут рассмотрены более подробно.

Свойства объектов

Каждый объект VBA имеет заданные для него свойства. Например, объект Workbook имеет свойства Name (имя), RevisionNumber (количество сохранений), Sheets (листы) и множество других. Чтобы получить доступ к свойствам объекта, нужно записать имя объекта, затем точку и далее имя свойства. Например, имя активной рабочей книги может быть доступно вот так: ActiveWorkbook.Name. Таким образом, чтобы присвоить переменной wbName имя активной рабочей книги, можно использовать вот такой код:

Dim wbName As String
wbName = ActiveWorkbook.Name

Ранее мы показали, как объект Workbook может быть использован для доступа к объекту Worksheet при помощи такой команды:

Workbooks("Книга1").Worksheets("Лист1")

Это возможно потому, что коллекция Worksheets является свойством объекта Workbook.

Некоторые свойства объекта доступны только для чтения, то есть их значения пользователь изменять не может. В то же время существуют свойства, которым можно присваивать различные значения. Например, чтобы изменить название активного листа на «Мой рабочий лист«, достаточно присвоить это имя свойству Name активного листа, вот так:

ActiveSheet.Name = "Мой рабочий лист"

Методы объектов

Объекты VBA имеют методы для выполнения определённых действий. Методы объекта – это процедуры, привязанные к объектам определённого типа. Например, объект Workbook имеет методы Activate, Close, Save и ещё множество других.

Для того, чтобы вызвать метод объекта, нужно записать имя объекта, точку и имя метода. Например, чтобы сохранить активную рабочую книгу, можно использовать вот такую строку кода:

Как и другие процедуры, методы могут иметь аргументы, которые передаются методу при его вызове. Например, метод Close объекта Workbook имеет три необязательных аргумента, которые определяют, должна ли быть сохранена рабочая книга перед закрытием и тому подобное.

Чтобы передать методу аргументы, необходимо записать после вызова метода значения этих аргументов через запятую. Например, если нужно сохранить активную рабочую книгу как файл .csv с именем «Книга2», то нужно вызвать метод SaveAs объекта Workbook и передать аргументу Filename значение Книга2, а аргументу FileFormat – значение xlCSV:

ActiveWorkbook.SaveAs "Книга2", xlCSV

Чтобы сделать код более читаемым, при вызове метода можно использовать именованные аргументы. В этом случае сначала записывают имя аргумента, затем оператор присваивания «:=» и после него указывают значение. Таким образом, приведённый выше пример вызова метода SaveAs объекта Workbook можно записать по-другому:

ActiveWorkbook.SaveAs Filename:="Книга2", [FileFormat]:=xlCSV

В окне Object Browser редактора Visual Basic показан список всех доступных объектов, их свойств и методов. Чтобы открыть этот список, запустите редактор Visual Basic и нажмите F2.

Рассмотрим несколько примеров

Пример 1

Этот отрывок кода VBA может служить иллюстрацией использования цикла For Each. В данном случае мы обратимся к нему, чтобы продемонстрировать ссылки на объект Worksheets (который по умолчанию берётся из активной рабочей книги) и ссылки на каждый объект Worksheet отдельно. Обратите внимание, что для вывода на экран имени каждого рабочего листа использовано свойство Name объекта Worksheet.

'Пролистываем поочерёдно все рабочие листы активной рабочей книги
'и выводим окно сообщения с именем каждого рабочего листа

Dim wSheet As Worksheet

For Each wSheet in Worksheets
   MsgBox "Найден рабочий лист: " & wSheet.Name
Next wSheet

Пример 2

В этом примере кода VBA показано, как можно получать доступ к рабочим листам и диапазонам ячеек из других рабочих книг. Кроме этого, Вы убедитесь, что если не указана ссылка на какой-то определённый объект, то по умолчанию используются активные объекты Excel. Данный пример демонстрирует использование ключевого слова Set для присваивания объекта переменной.

В коде, приведённом ниже, для объекта Range вызывается метод PasteSpecial. Этот метод передаёт аргументу Paste значение xlPasteValues.

'Копируем диапазон ячеек из листа "Лист1" другой рабочей книги (с именем Data.xlsx)
'и вставляем только значения на лист "Результаты" текущей рабочей книги (с именем CurrWb.xlsm)

Dim dataWb As Workbook

Set dataWb = Workbooks.Open("C:Data")

'Обратите внимание, что DataWb – это активная рабочая книга.
'Следовательно, следующее действие выполняется с объектом Sheets в DataWb.

Sheets("Лист1").Range("A1:B10").Copy

'Вставляем значения, скопированные из диапазона ячеек, на рабочий лист "Результаты"
'текущей рабочей книги. Обратите внимание, что рабочая книга CurrWb.xlsm не является
'активной, поэтому должна быть указана в ссылке.

Workbooks("CurrWb").Sheets("Результаты").Range("A1").PasteSpecial Paste:=xlPasteValues

Пример 3

Следующий отрывок кода VBA показывает пример объекта (коллекции) Columns и демонстрирует, как доступ к нему осуществляется из объекта Worksheet. Кроме этого, Вы увидите, что, ссылаясь на ячейку или диапазон ячеек на активном рабочем листе, можно не указывать этот лист в ссылке. Вновь встречаем ключевое слово Set, при помощи которого объект Range присваивается переменной Col.

Данный код VBA показывает также пример доступа к свойству Value объекта Range и изменение его значения.

'С помощью цикла просматриваем значения в столбце A на листе "Лист2",
'выполняем с каждым из них арифметические операции и записываем результат
'в столбец A активного рабочего листа (Лист1)

Dim i As Integer
Dim Col As Range
Dim dVal As Double

'Присваиваем переменной Col столбец A рабочего листа "Лист2"

Set Col = Sheets("Лист2").Columns("A")
i = 1

'Просматриваем последовательно все ячейки столбца Col до тех пор
'пока не встретится пустая ячейка

Do Until IsEmpty(Col.Cells(i))

   'Выполняем арифметические операции со значением текущей ячейки

   dVal = Col.Cells(i).Value * 3 - 1

   'Следующая команда записывает результат в столбец A
   'активного листа. Нет необходимости указывать в ссылке имя листа,
   'так как это активный лист рабочей книги.

   Cells(i, 1).Value = dVal
   i = i + 1

Loop

Оцените качество статьи. Нам важно ваше мнение:

 

Alex_p_123

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

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

#1

20.07.2017 09:32:50

Добрый день!

Вставляю в ячейку файл — oleobject (не важно чем — диалоговым окном Вставка/объект или макросом).
Теперь мне надо получить имя образованной иконки, чтобы ее форматировать (размещение ячейки, свойства и т.д.).
К примеру чтобы задать ему координаты требуется строки типа

Код
ActiveSheet.Shapes("Object 605").IncrementTop 27.8571653543

Но имя его я не знаю и потому не могу к нему обратиться программно.
Как макросом получить это имя?

Пробовал строки типа SelectedObject.Name, ActiveObject.Name и т.д. — не работает, выдает ошибку.

С уважением, Алексей

Изменено: Alex_p_12320.07.2017 13:26:38

 

Илья Демид

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

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

#2

20.07.2017 09:43:19

Добрый день, Вам наверное надо вот так пройтись в цикле? Но если объектов много, то как понять какое именно Вам надо имя это загадка для меня

Код
Cells(5, 5) = Sheets(3).Shapes(1).Name

Изменено: Илья Демид20.07.2017 09:45:42

 

Alex_p_123

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

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

#3

20.07.2017 09:54:08

Цитата
Илья Демид написал:
Cells(5, 5) = Sheets(3).Shapes(1).Name

Не совсем то.
Попробовал для трех ячеек (в одной ничего, в двух других вставлены иконки с разными файлами).
Для всех трех случаев выдает значение «Button418»

Попробовал для одной из ячеек сделать …Shapes(2)… — выдает «Button489»

Получается, что неважно какая ячейка стоит в Вашем примере (Cells(5,5) или что-то другое), он возвращает имя именно для Spapes(1), Shapes(2)….
А мне надо найти имя того Shape (или тех Shapes), который выделен в данный момент (ну или на худой конец прикреплен к выделенной ячейке).

Изменено: Alex_p_12320.07.2017 09:54:50

 

Приложите пример, пожалуйста. Самому интересно стало :)
У себя я cells(5,5) использовал т.к. был открыт рабочий файл и там было пусто :)

 

Alex_p_123

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

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

#5

20.07.2017 10:01:27

Сейчас попробую
Вот код, который записал за мной vba (русские символы не вставились, но думаю для примера это не принципиально).

Камень преткновения сейчас для меня — строка ActiveSheet.Shapes(«Object 606»).IncrementLeft 42.8570866142

Вот в ней я хочу видеть имя активного (или выделенного) значка, потому что оператор with selection прекрасно работает (пробовал отдельно от этой проблемной строки, но в этот оператор я IncrementLeft вставить не могу — выдает ошибку).

Код
Sub Ìàêðîñ3()
'
' Ìàêðîñ3 Ìàêðîñ
'

'
    Range("O504").Select
    Workbooks.Open Filename:= _
        "Z:65_Sales65_15_Sales_Support1 BPOÎäíî îêíîÈÍÔÎÐÌÀÖÈÎÍÍÎÅ ÏÈÑÜÌÎ_ðååñòðÏðèëîæåíèÿ89_0500_Îïðîñ ìàãàçèíîâ 18 07 2017.xlsx"
    ActiveWindow.Visible = False
    ActiveSheet.OLEObjects.Add(Filename:= _
        "Z:65_Sales65_15_Sales_Support1 BPOÎäíî îêíîÈÍÔÎÐÌÀÖÈÎÍÍÎÅ ÏÈÑÜÌÎ_ðååñòðÏðèëîæåíèÿ89_0500_Îïðîñ ìàãàçèíîâ 18 07 2017.xlsx" _
        , Link:=False, DisplayAsIcon:=True, IconFileName:= _
        "C:WindowsInstaller{90140000-0012-0000-0000-0000000FF1CE}xlicons.exe", _
        IconIndex:=0, IconLabel:= _
        "Z:65_Sales65_15_Sales_Support1 BPOÎäíî îêíîÈÍÔÎÐÌÀÖÈÎÍÍÎÅ ÏÈÑÜÌÎ_ðååñòðÏðèëîæåíèÿ89_0500_Îïðîñ ìàãàçèíîâ 18 07 2017.xlsx" _
        ).Select
    ActiveSheet.Shapes("Object 606").IncrementLeft 42.8570866142
    ActiveSheet.Shapes("Object 606").IncrementTop 17.1428346457
    With Selection
        .Placement = xlMoveAndSize
        .PrintObject = True
    End With
End Sub

Изменено: Alex_p_12320.07.2017 10:03:13

 

Илья Демид

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

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

#6

20.07.2017 10:04:26

Попробуйте так

Код
With Selection
Cells(5, 5) = .Name 'тут опять же моя ячейка куда выводится
End With
End Sub

Чтобы добавить ее в вашу строку сделайте переменную которой присвоите «.name» Правда легче сразу сделать

Код
With selection
.incrementleft

Изменено: Илья Демид20.07.2017 10:08:05

 

Alex_p_123

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

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

Не работает конечно же, потому что он не понимает, имя чего я у него спрашиваю
Надо запрашивать именно имя объекта (shape, oleobject и т.д.).
Вот я и пытаюсь понять как это сделать.

 

пример файла дайте, потому что у меня то работает. Надо сначало выделить обьект

 

Андрей VG

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

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

Excel 2016, 365

#9

20.07.2017 10:21:32

Доброе время суток.

Цитата
Alex_p_123 написал:
Вставляю в ячейку файл — oleobject (не важно чем — диалоговым окном Вставка/объект или макросом).
Теперь мне надо получить имя образованной иконки, чтобы ее форматировать (размещение ячейки, свойства и т.д.).
Цитата
Alex_p_123 написал:
ActiveSheet.OLEObjects.Add

Такая сложность справку по методу коллекции OLEObjects.Add посмотреть, чтобы увидеть, что возвращается ссылка на OLEObject с которым вы и можете сразу выполнять требуемые манипуляции?

Цитата
Function Add([ClassType], [Filename], [Link], [DisplayAsIcon], [IconFileName], [IconIndex], [IconLabel], [Left], [Top], [Width], [Height]) As OLEObject
Код
Dim myObject As OLEObject
Set myObject = ActiveSheet.OLEObjects.Add(....)
Debug.Print myObject.Name

Успехов.

 

Alex_p_123

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

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

 

Илья Демид

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

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

#11

20.07.2017 10:40:08

Идите по варианту который предложил Андрей VG, в моем примере Вам необходимо выбрать именно объект (ПКМ по картинке), после чего

Код
With Selection
Cells(2, 3) = .Name 
End With
 

AndreTM

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

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

#12

20.07.2017 11:15:51

Всё дело в том, что коллекция Shapes — по сути, независима от листа. То есть нельзя по определенному
И узнать текущую привязку объектов можно только перебором всех объектов коллекции, проверяя .TopLeftCell (объект-ячейка, над которой расположен верхний-левый угол шейпа) и координаты .Top/.Left/.Hight/.Width шейпа. Ну и для ускорения перебора можно проверять какие-то известные свойства (например, .AutoShapeType).
Кстати, даже

Код
Set shape = .... (команда добавления объекта)...

помогает только в случаях, когда вы вставляете новый объект (.AddPicture/.Insert), а вот если копируете имеющийся шейп (через .Cut/.Dupclicate — .Copy/.Paste) — то никак. Потому что копируете-то вы объект через буфер, и вставляете на лист, не возвращается там объект из команды вставки.
Вариант, который мне удалось в свое время придумать для таких случаев — это сразу после вставки захватывать последний объект коллекции Shapes:

Код
Set shape = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)

и далее сразу его обработать.
А иначе, как выше сказано — только заново каждый раз перебирать всю коллекцию, проверяя координаты привязки…

 

Alex_p_123

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

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

#13

20.07.2017 14:27:23

Илья Демид

— да, вариант, предложенный

Андрей VG

, оказался работающим.

Андрей VG

— спасибо.

Вот в каком виде это работает у меня в тестовом файле:

Код
Sub Макрос2()
    
    Dim myObject As OLEObject
   
    Range("O505").Select
    Workbooks.Open Filename:= _
        "Z:65_Sales65_15_Sales_Support1 BPOОдно окноИНФОРМАЦИОННОЕ ПИСЬМО_реестрПриложения89_0501_Опрос магазинов 2.xlsx"
    ActiveWindow.Visible = True
    Set myObject = ActiveSheet.OLEObjects.Add(Filename:= _
        "Z:65_Sales65_15_Sales_Support1 BPOОдно окноИНФОРМАЦИОННОЕ ПИСЬМО_реестрПриложения89_0501_Опрос магазинов 2.xlsx" _
        , Link:=False, DisplayAsIcon:=True, IconFileName:= _
        "C:WindowsInstaller{90140000-0012-0000-0000-0000000FF1CE}xlicons.exe", _
        IconIndex:=0, IconLabel:= _
        "Z:65_Sales65_15_Sales_Support1 BPOОдно окноИНФОРМАЦИОННОЕ ПИСЬМО_реестрПриложения89_0501_Опрос магазинов 2.xlsx" _
        )
    s = myObject.Name
    myObject.Select
    With Selection
        .Placement = xlMoveAndSize
        .PrintObject = True
    End With
    
    Range("P505").Select
    ActiveSheet.Shapes(s).IncrementLeft 20
    ActiveSheet.Shapes(s).IncrementTop 60
    
    Workbooks("089_0501_Опрос магазинов 2.xlsx").Close
    
End Sub

Если убрать вот этот отрезок:

Код
Workbooks.Open Filename:= _
        "Z:65_Sales65_15_Sales_Support1 BPOОдно окноИНФОРМАЦИОННОЕ ПИСЬМО_реестрПриложения89_0501_Опрос магазинов 2.xlsx"
    ActiveWindow.Visible = True

то он при создании объекта создает какие-то книги, котjрые потом нигде кроме VBA редактора не видны, так как имеют свойство  ActiveWindow.Visible = false

Команда ActiveSheet.Shapes.Count может оказаться крайне полезной.

AndreTM

— Ваш вариант (собственно его я и имел в виду строкой выше) выглядит для моих целей наверное самым верным, но я его еще не тестировал, поэтому буду пробовать.

Кстати обратил внимание, что в свойствах объекта можно задать Left и Top, но тогда он размещает его не в ячейке, а на соответствующем смещении от верхнего левого угла файла, то есть в районе ячейки A1.

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

Содержание

  1. Требования к именам ячеек
  2. Строка имен
  3. Использование контекстного меню
  4. Что такое именованный диапазон ячеек в Excel?
  5. Выделение диапазонов
  6. Сравнение диапазонов
  7. Задача
  8. Визуальное отображение динамического диапазона
  9. Функция СМЕЩ в Excel
  10. Что определяет функция СЧЕТ
  11. Манипуляции с именованными областями
  12. Создание именованного диапазона
  13. Примеры диапазона
  14. Заполнение диапазона
  15. Перемещение диапазона
  16. Именованный диапазон с абсолютной адресацией
  17. Именованный диапазон с относительной адресацией

Требования к именам ячеек

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

  1. Нельзя использовать пробелы, запятые, двоеточия, точки с запятыми в качестве разделителя слов (выходом из ситуации может быть замена на нижнее подчеркивание или точку).
  2. Максимальная длина символов – 255.
  3. В начале названия должны быть буквы, нижнее подчеркивание или обратная косая черта (никаких цифр и прочих символов).
  4. Нельзя указывать адрес ячейки или диапазона.
  5. Название должно быть уникальным в рамках одной книги. При этом следует помнить, что буквы в разных регистрах программа будет воспринимать как полностью одинаковые.

Примечание: Если для ячейки (диапазона ячеек) задано какое-то имя, именно оно будет использоваться в качестве ссылки, например, в формулах.

Допустим, ячейке B2 присвоено имя “Продажа_1”.

Если она будет участвовать в формуле, то вместо B2 мы пишем “Продажа_1”.

Нажав клавишу Enter убеждаемся в том, что формула, действительно, рабочая.

Теперь перейдем, непосредственно, к самим методам, пользуясь которыми можно задавать имена.

Строка имен

Пожалуй самый простой способ присвоить имя ячейке или диапазону – ввести требуемое значение в строке имен, которое находится слева от строки формул.

  1. Любым удобным способом, например, с помощью зажатой левой кнопки мыши, выделяем требуемую ячейку или область.
  2. Щелкаем внутри строки имен и вводим нужное название согласно требованиям, описанным выше, после чего нажимаем клавишу Enter на клавиатуре.
  3. В результате мы присвоим выделенному диапазону название. И при выделении данной области в дальнейшем мы будем видеть именно это название в строке имен.
  4. Если имя слишком длинное и не помещается в стандартном поле строки, его правую границу можно сдвинуть с помощью зажатой левой кнопки мыши.

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

Использование контекстного меню

Использование контекстного меню в Эксель позволяет выполнить популярные команды и функции. Присвоить имя ячейке также можно через этот инструмент.

  1. Как обычно, для начала нужно отметить ячейку или диапазон ячеек, с которыми хотим выполнить манипуляции.
  2. Затем правой кнопкой мыши щелкаем по выделенной области и в открывшемся перечне выбираем команду “Присвоить имя”.
  3. На экране появится окно, в котором мы:
    • пишем имя в поле напротив одноименного пункта;
    • значение параметра “Поле” чаще всего остается по умолчанию. Здесь указывается границы, в которых будет идентифицироваться наше заданное имя – в пределах текущего листа или всей книги.
    • В области напротив пункта “Примечание” при необходимости добавляем комментарий. Параметр не является обязательным для заполнения.
    • в самом нижнем поле отображаются координаты выделенного диапазона ячеек. Адреса при желании можно отредактировать – вручную или с помощью мыши прямо в таблице, предварительно установив курсор в поле для ввода информации и стерев прежние данные.
    • по готовности жмем кнопку OK.
  4. Все готово. Мы присвоили имя выделенному диапазону.

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

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

Для имен действует ряд ограничений:

– имя может содержать до 255 символов;

– первым символом в имени должна быть буква, знак подчеркивания (_) либо обратная косая черта (), остальные символы имени могутбыть буквами, цифрами, точками и знаками подчеркивания;

– имена не могут быть такими же, как ссылки на ячейки;

– пробелы в именах не допускаются;

– строчные и прописные буквы не различаются.

Управление существующими именованными диапазонами (создание, просмотр и изменение) можно осуществлять при помощи диспетчера имен. В Excel 2007 диспетчер находится на вкладке “Формулы”, в группе кнопок “Определенные имена”.

Выделение диапазонов

О том как выделять ячейки и группы ячеек уже рассказывалось в одной из наших публикаций. Также ранее рассматривалась тема о том как выделять строки в рабочих листах Excel, но строка является одним из частных видов диапазона ячеек. Рассмотрим несколько способов выделения диапазонов ячеек в общем виде.

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

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

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

Сравнение диапазонов

Сравнение диапазонов – это одна из классических задач в Excel, которую рано или поздно приходится решать любому пользователю Excel. Задача по сравнению диапазонов может быть поставлена по разному. Когда-то нужно найти различия или совпадения в диапазонах при построчном их сравнении, а когда-то необходимо узнать есть ли что-то общее в сравниваемых диапазонах вообще. В зависимости от поставленной задачи различаются и методики её решения.

Например, для построчного сравнения часто используется логическая функция “ЕСЛИ” и какой-либо из операторов сравнения (также можно использовать и другие функции, например “СЧЕТЕСЛИ” из категории статистические для проверки вхождения элементов одного списка в другой).

Также для поиска отличий по столбцам или по строкам используется стандартное средство Excel, которое находится на вкладке “Главная”, в группе кнопок “Редактирование”, в меню кнопки “Найти и выделить”. Если в этом меню выбрать пункт “Перейти” и далее нажать кнопку “Выделить”, то в диалоговом окне “Выделение группы ячеек” можно выбрать одну из опций “Отличия по строкам” или “Отличия по столбцам”.

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

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

Задача

Имеется таблица продаж по месяцам некоторых товаров (см. Файл примера ):

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

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

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

Создадим динамический диапазон для Выпадающего списка , содержащего месяцы. С одной стороны нужно учитывать тот факт, что пользователь может добавлять продажи за следующие после апреля месяцы (май, июнь…), с другой стороны Выпадающий список не должен содержать пустые строки. Динамический диапазон как раз и служит для решения такой задачи.

Для создания динамического диапазона:

  • на вкладке Формулы в группе Определенные имена выберите команду Присвоить имя
  • в поле Имя введите: Месяц
  • в поле Область выберите лист Книга
  • в поле Диапазон введите формулу =СМЕЩ(лист1!$B$5;;;1;СЧЁТЗ(лист1!$B$5:$I$5))
  • нажмите ОК.

Теперь подробнее. Любой диапазон в EXCEL задается координатами верхней левой и нижней правой ячейки диапазона. Исходной ячейкой, от которой отсчитывается положение нашего динамического диапазона, является ячейка B5 . Если не заданы аргументы функции СМЕЩ() смещ_по_строкам, смещ_по_столбцам (как в нашем случае), то эта ячейка является левой верхней ячейкой диапазона. Нижняя правая ячейка диапазона определяется аргументами высота и ширина . В нашем случае значение высоты =1, а значение ширины диапазона равно результату вычисления формулы СЧЁТЗ(лист1!$B$5:$I$5) , т.е. 4 (в строке 5 присутствуют 4 месяца с января по апрель ). Итак, адрес нижней правой ячейки нашего динамического диапазона определен – это E 5 .

При заполнении таблицы данными о продажах за май , июнь и т.д., формула СЧЁТЗ(лист1!$B$5:$I$5) будет возвращать число заполненных ячеек (количество названий месяцев) и соответственно определять новую ширину динамического диапазона, который в свою очередь будет формировать Выпадающий список .

ВНИМАНИЕ! При использовании функции СЧЕТЗ() необходимо убедиться в отсутствии пустых ячеек! Т.е. нужно заполнять перечень месяцев без пропусков.

Теперь создадим еще один динамический диапазон для суммирования продаж.

Для создания динамического диапазона :

  • на вкладке Формулы в группе Определенные имена выберите команду Присвоить имя
  • в поле Имя введите: Продажи_за_месяц
  • в поле Диапазон введите формулу = СМЕЩ(лист1!$A$6;;ПОИСКПОЗ(лист1!$C$1;лист1!$B$5:$I$5;0);12)
  • нажмите ОК.

Функция ПОИСКПОЗ() ищет в строке 5 (перечень месяцев) выбранный пользователем месяц (ячейка С1 с выпадающим списком) и возвращает соответствующий номер позиции в диапазоне поиска (названия месяцев должны быть уникальны, т.е. этот пример не годится для нескольких лет). На это число столбцов смещается левый верхний угол нашего динамического диапазона (от ячейки А6 ), высота диапазона не меняется и всегда равна 12 (при желании ее также можно сделать также динамической – зависящей от количества товаров в диапазоне).

И наконец, записав в ячейке С2 формулу = СУММ(Продажи_за_месяц) получим сумму продаж в выбранном месяце.

Например, в мае.

Или, например, в апреле.

Примечание: Вместо формулы с функцией СМЕЩ() для подсчета заполненных месяцев можно использовать формулу с функцией ИНДЕКС() : = $B$5:ИНДЕКС(B5:I5;СЧЁТЗ($B$5:$I$5))

Формула подсчитывает количество элементов в строке 5 (функция СЧЁТЗ() ) и определяет ссылку на последний элемент в строке (функция ИНДЕКС() ), тем самым возвращает ссылку на диапазон B5:E5 .

Визуальное отображение динамического диапазона

Выделить текущий динамический диапазон можно с помощью Условного форматирования . В файле примера для ячеек диапазона B6:I14 применено правило Условного форматирования с формулой: = СТОЛБЕЦ(B6)=СТОЛБЕЦ(Продажи_за_месяц)

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

Функция СМЕЩ в Excel

Разберем более детально функции, которые мы вводили в поле диапазон при создании динамического имени.

Функция =СМЕЩ определяет наш диапазон в зависимости от количества заполненных ячеек в столбце B. 5 параметров функции =СМЕЩ(начальная ячейка; смещение размера диапазона по строкам; смещение по столбцам; размер диапазона в высоту; размер диапазона в ширину):

  1. «Начальная ячейка» – указывает верхнюю левую ячейку, от которой будет динамически расширяться диапазон как вниз, так и вправо (при необходимости).
  2. «Смещение по строкам» – параметр определяет, на какое количество нужно смещать диапазон по вертикали от начальной ячейки (первого параметра). Значения могут быть нулевыми и отрицательными.
  3. «Смещение по столбцам» – параметр определяет, на какое количество нужно смещать по горизонтали от начальной ячейки. Значения могут быть даже нулевыми и отрицательными.
  4. «Размер диапазона в высоту» – количество ячеек, на которое нужно увеличить диапазон в высоту. По сути, название говорит само за себя.
  5. «Размер диапазона в ширину» – количество ячеек, на которое нужно увеличить в ширину от начальной ячейки.

Последние 2 параметра функции являются необязательными. Если их не заполнять, то диапазон будет состоять из 1-ой ячейки. Например: =СМЕЩ(A1;0;0) – это просто ячейка A1, а параметр =СМЕЩ(A1;2;0) ссылается на A3.

Теперь разберем функцию: =СЧЕТ, которую мы указывали в 4-ом параметре функции: =СМЕЩ.

Что определяет функция СЧЕТ

Функция =СЧЕТ($B:$B) автоматически считает количество заполненных ячеек в столбце B.

Таким образом, мы с помощью функции =СЧЕТ() и =СМЕЩ() автоматизируем процесс формирования диапазона для имени «доход», что делает его динамическим. Теперь еще раз посмотрим на нашу формулу, которой мы присвоили имя «доход»: =СМЕЩ(Лист1!$B$2;0;0;СЧЁТ(Лист1!$B:$B);1)

Читать данную формулу следует так: первый параметры указывает на то, что наш автоматически изменяемый диапазон начинается в ячейке B2. Следующие два параметра имеют значения 0;0 – это значит, что динамический диапазон не смещается относительно начальной ячейки B2. А увеличивается только его размер по вертикали, о чем свидетельствует 4-тый параметр. В нем находится функция СЧЕТ и она возвращает число равно количеству заполненных ячеек в столбце B. Соответственно количество ячеек по вертикали в диапазоне будет равно числу, которое нам даст функция СЧЕТ. А за ширину диапазона у нас отвечает последний 5-тый параметр, где находиться число 1.

Благодаря функции СЧЕТ мы рационально загружаем в память только заполненные ячейки из столбца B, а не весь столбец целиком. Данный факт исключает возможные ошибки связанные с памятью при работе с данным документом.

Манипуляции с именованными областями

Именованный диапазон — это область ячеек, которой пользователем присвоено определенное название. При этом данное наименование расценивается Excel, как адрес указанной области. Оно может использоваться в составе формул и аргументов функций, а также в специализированных инструментах Excel, например, «Проверка вводимых значений».

Существуют обязательные требования к наименованию группы ячеек:

  • В нём не должно быть пробелов;
  • Оно обязательно должно начинаться с буквы;
  • Его длина не должна быть больше 255 символов;
  • Оно не должно быть представлено координатами вида A1 или R1C1
  • В книге не должно быть одинаковых имен.

Наименование области ячеек можно увидеть при её выделении в поле имен, которое размещено слева от строки формул.

В случае, если наименование диапазону не присвоено, то в вышеуказанном поле при его выделении отображается адрес левой верхней ячейки массива.

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

Прежде всего, узнаем, как создать именованный диапазон в Экселе.

  1. Самый быстрый и простой вариант присвоения названия массиву – это записать его в поле имен после выделения соответствующей области. Итак, выделяем массив и вводим в поле то название, которое считаем нужным. Желательно, чтобы оно легко запоминалось и отвечало содержимому ячеек. И, безусловно, необходимо, чтобы оно отвечало обязательным требованиям, которые были изложены выше.
  2. Для того, чтобы программа внесла данное название в собственный реестр и запомнила его, жмем по клавише Enter. Название будет присвоено выделенной области ячеек.

Выше был назван самый быстрый вариант наделения наименованием массива, но он далеко не единственный. Эту процедуру можно произвести также через контекстное меню

  1. Выделяем массив, над которым требуется выполнить операцию. Клацаем по выделению правой кнопкой мыши. В открывшемся списке останавливаем выбор на варианте «Присвоить имя…».
  2. Открывается окошко создания названия. В область «Имя» следует вбить наименование в соответствии с озвученными выше условиями. В области «Диапазон» отображается адрес выделенного массива. Если вы провели выделение верно, то вносить изменения в эту область не нужно. Жмем по кнопке «OK».
  3. Как можно видеть в поле имён, название области присвоено успешно.

Ещё один вариант выполнения указанной задачи предусматривает использование инструментов на ленте.

  1. Выделяем область ячеек, которую требуется преобразовать в именованную. Передвигаемся во вкладку «Формулы». В группе «Определенные имена» производим клик по значку «Присвоить имя».
  2. Открывается точно такое же окно присвоения названия, как и при использовании предыдущего варианта. Все дальнейшие операции выполняются абсолютно аналогично.

Последний вариант присвоения названия области ячеек, который мы рассмотрим, это использование Диспетчера имен.

  1. Выделяем массив. На вкладке «Формулы», клацаем по крупному значку «Диспетчер имен», расположенному всё в той же группе «Определенные имена». Или же можно вместо этого применить нажатие сочетания клавиш Ctrl+F3.
  2. Активируется окно Диспетчера имён. В нем следует нажать на кнопку «Создать…» в верхнем левом углу.
  3. Затем запускается уже знакомое окошко создания файлов, где нужно провести те манипуляции, о которых шёл разговор выше. То имя, которое будет присвоено массиву, отобразится в Диспетчере. Его можно будет закрыть, нажав на стандартную кнопку закрытия в правом верхнем углу.

Примеры диапазона

Диапазон представляет собой набор из двух и более ячеек.

  1. Для выбора диапазона B2:C4 кликните по нижнему правому углу ячейки В2 и протяните указатель мыши до ячейки C4.
  2. Чтобы выделить диапазон, состоящий из отдельных (несмежных) ячеек, зажмите клавишу Ctrl и кликните по каждой ячейке, которую хотите включить в диапазон.

Заполнение диапазона

Чтобы заполнить диапазон, следуйте инструкции ниже:

  1. Введите значение 2 в ячейку B2.
  2. Выделите ячейку В2, зажмите её нижний правый угол и протяните вниз до ячейки В8.

    Результат:

    Эта техника протаскивания очень важна, вы будете часто использовать её в Excel. Вот еще один пример:

  3. Введите значение 2 в ячейку В2 и значение 4 в ячейку B3.
  4. Выделите ячейки B2 и B3, зажмите нижний правый угол этого диапазона и протяните его вниз.

    Excel автоматически заполняет диапазон, основываясь на шаблоне из первых двух значений. Классно, не правда ли? Вот еще один пример:

  5. Введите дату 13/6/2013 в ячейку В2 и дату 16/6/2013 в ячейку B3 (на рисунке приведены американские аналоги дат).
  6. Выделите ячейки B2 и B3, зажмите нижний правый угол этого диапазона и протяните его вниз.

Перемещение диапазона

Чтобы переместить диапазон, выполните следующие действия:

  1. Выделите диапазон и зажмите его границу.
  2. Перетащите диапазон на новое место.

Именованный диапазон с абсолютной адресацией

Пусть необходимо найти объем продаж товаров:

Присвоим Имя Продажи диапазону B2:B10 . При создании имени будем использовать абсолютную адресацию .

Для этого:

  • выделите, диапазон B 2: B 10 на листе 1сезон
  • на вкладке Формулы в группе Определенные имена выберите команду Присвоить имя
  • в поле Имя введите: Продажи
  • в поле Область выберите лист 1сезон (имя будет работать только на этом листе) или оставьте значение Книга , чтобы имя было доступно на любом листе книги;
  • убедитесь, что в поле Диапазон введена формула =’1сезон’!$B$2:$B$10
  • нажмите ОК.

Теперь в любой ячейке листа 1сезон можно написать формулу в простом и наглядном виде: =СУММ(Продажи) . Будет выведена сумма значений из диапазона B2:B10 .

Также можно, например, подсчитать среднее значение продаж, записав =СРЗНАЧ(Продажи) .

Обратите внимание, что EXCEL при создании имени использовал абсолютную адресацию $B$1:$B$10 . Абсолютная ссылка жестко фиксирует диапазон суммирования: в какой ячейке на листе Вы бы не написали формулу =СУММ(Продажи) – суммирование будет производиться по одному и тому же диапазону B1:B10 .

Иногда выгодно использовать не абсолютную, а относительную ссылку, об этом ниже.

Именованный диапазон с относительной адресацией

Теперь найдем сумму продаж товаров в четырех сезонах. Данные о продажах находятся на листе 4сезона (см. файл примера ) в диапазонах: B2:B10 , C 2: C 10 , D 2: D 10 , E2:E10 . Формулы поместим соответственно в ячейках B11 , C 11 , D 11 , E 11 .

По аналогии с абсолютной адресацией из предыдущей задачи, можно, конечно, создать 4 именованных диапазона с абсолютной адресацией, но есть решение лучше. С использованием относительной адресации можно ограничиться созданием только одного Именованного диапазона Сезонные_продажи .

Для этого:

  • выделите ячейку B11 , в которой будет находится формула суммирования (при использовании относительной адресации важно четко фиксировать нахождение активной ячейки в момент создания имени
  • на вкладке Формулы в группе Определенные имена выберите команду Присвоить имя
  • в поле Имя введите: Сезонные_Продажи
  • в поле Область выберите лист 4сезона (имя будет работать только на этом листе);
  • убедитесь, что в поле Диапазон введена формула =’4сезона’!B$2:B$10
  • нажмите ОК.

Мы использовали смешанную адресацию B$2:B$10 (без знака $ перед названием столбца). Такая адресация позволяет суммировать значения находящиеся в строках 2 , 3 ,… 10 , в том столбце, в котором размещена формула суммирования. Формулу суммирования можно разместить в любой строке ниже десятой (иначе возникнет циклическая ссылка).

Теперь введем формулу =СУММ(Сезонные_Продажи) в ячейку B11. Затем, с помощью Маркера заполнения , скопируем ее в ячейки С11 , D 11 , E 11 , и получим суммы продаж в каждом из 4-х сезонов. Формула в ячейках B 11, С11 , D 11 и E 11 одна и та же!

СОВЕТ: Если выделить ячейку, содержащую формулу с именем диапазона, и нажать клавишу F2 , то соответствующие ячейки будут обведены синей рамкой (визуальное отображение Именованного диапазона ).

Источники

  • https://MicroExcel.ru/imena-yacheek/
  • http://macros-vba.ru/nadstrojki/excel/183-diapazon-excel
  • https://excel2.ru/articles/dinamicheskiy-diapazon-v-ms-excel
  • https://exceltable.com/formuly/izmenyaemye-diapazony
  • https://lumpics.ru/named-range-in-excel/
  • https://office-guru.ru/excel/diapazon-v-excel-370.html
  • https://excel2.ru/articles/imenovannyy-diapazon-v-ms-excel

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