Получить выбранную ячейку excel

Заметка написана с использованием книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

Задача: вы хотите выделить все ячейки на листе, которые не содержат формул.

Примечание Багузина. Именно эту задачу можно решить довольно просто, если вы пользуетесь версией Excel 2013 или более поздней. Примените функцию ЕФОРМУЛА(ссылка). Функция проверяет содержимое ячейки, и возвращает значение ИСТИНА или ЛОЖЬ. Однако подход Билла Джелена любопытен сам по себе, поскольку открывает окно в мир макрофункций (скорее всего, неизвестный большинству пользователей).

Решение: до введения VBA, макросы писали на языке xlm (Excel Macro). Язык использовал макрофункции, т.е., функции листа макросов Excel 4.0. Этот язык до сих пор поддерживается Microsoft для совместимости с предыдущими версиями Excel (подробнее см. Что такое макрофункции?). Система макросов xlm является «пережитком», доставшимся нам от предыдущих версий Excel (4.0 и более ранних).  Более поздние версии Excel все еще выполняют макросы xlm, но, начиная с Excel 97, пользователи не имеют возможности записывать макросы на языке xlm.

Язык xlm среди прочих содержит функцию Получить.Ячейку (GET.CELL), которая предоставляет гораздо больше информации, чем современная функция ЯЧЕЙКА(). На самом деле, Получить.Ячейку может рассказать о 66 различных атрибутах ячейки, в то время, как функция ЯЧЕЙКА возвращает лишь 12 параметров. Функция Получить.Ячейку весьма полезна, за исключением одного «но»… Вы не можете ввести ее непосредственно в ячейку (рис. 1).

Рис. 1. Функция Получить.Ячейку недоступна для ввода на листе Excel

Рис. 1. Функция Получить.Ячейку недоступна для ввода на листе Excel

Скачать заметку в формате Word или pdf, примеры в формате Excel (с макросами)

Однако есть обходной путь. Вы можете определить имя, основанное на функции, а затем ссылаться на это имя в любой ячейке. Например, чтобы выяснить, содержит ли ячейка A1 формулу, можно записать =Получить.Ячейку(48,А1). Здесь 48 – аргумент, отвечающий за анализ, является ли содержимое ячейки формулой. Для более универсального случая, когда вы хотите применить условное форматирование, воспользуйтесь формулой =Получить.Ячейку(48,ДВССЫЛ("RC",ЛОЖЬ)). Если вы не знакомы с функцией ДВССЫЛ, советую почитать Примеры использования функции ДВССЫЛ (INDIRECT). Нам эта функция нужна для того, чтобы обозначить ссылку на ячейку, в которой мы сейчас находимся. Мы не можем указать никакую конкретную ячейку, поэтому используем ссылку в стиле R1C1, где RC означает относительную ссылку на текущую ячейку. В стиле ссылок А1 для ссылки на текущую ячейку нам бы потребовалось этот фрагмент формулы записать в виде =ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ();4)). Подробнее см. Зачем нужен стиль ссылок R1C1.

Чтобы использовать формулу =Получить.Ячейку() для выделения ячеек с помощью условного форматирования, выполните следующие действия (для Excel 2007 или более поздней версии):

  1. Чтобы определить новое имя, пройдите по меню ФОРМУЛЫ –> Присвоить имя. В открывшемся окне (рис. 2) выберите подходящее имя, например, ЕслиФормула. В поле формула введите =Получить.Ячейку(48,ДВССЫЛ("RC",ЛОЖЬ)). Нажмите Оk. Нажмите Закрыть.
  2. Выделите ячейки, к которым хотите применить условное форматирование (рис. 3); в нашем примере – это В3:В15.
  3. Пройдите по меню ГЛАВНАЯ –> Условное форматирование –> Создать правило. В открывшемся окне выберите пункт Использовать формулу для определения форматируемых ячеек. В нижней половине диалогового типа введите =ЕслиФормула, как показано на рис. 3. Excel может автоматически добавить кавычки =»ЕслиФормула». Уберите их. Нажмите кнопку Формат, в открывшемся окне Формат ячеек перейдите на вкладку Заливка и выберите цвет заливки. Нажмите Оk.

Рис. 2. Окно Создание имени

Рис. 2. Окно Создание имени

Рис. 3. Создание нового правила условного форматирования

Рис. 3. Создание нового правила условного форматирования

Чтобы выделить ячейки, которые не содержат формулу, используйте настройку формата =НЕ(ЕслиФормула).

Будьте осторожны. Иногда при копировании ячеек, содержащих формулу, на другой лист, есть риск «обрушить» Excel (у меня такого не случилось ни разу).

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

  1. Выберите все ячейки; для этого встаньте на одну из ячеек диапазона и нажмите Ctrl+А (А – английское).
  2. Нажмите Ctrl+G, чтобы открыть окно Переход.
  3. В левом нижнем углу этого окна нажмите кнопку Выделить.
  4. В открывшемся диалоговом окне Выделить группу ячеек выберите формулы, нажмите Ok.
  5. На закладке ГЛАВНАЯ выберите цвет заливки, например, красный.

Синтаксис функции: ПОЛУЧИТЬ.ЯЧЕЙКУ(номер_типа; ссылка). Полный список первого аргумента функции Получить.Ячейку см., например, здесь. Обратите внимание, что в некоторых случаях функциональность современных версий Excel существенно изменилась, и функция не вернет допустимое значение. Для некоторых аргументов номер_типа удобнее использовать функцию ЯЧЕЙКА.

Несколько примеров функции ПОЛУЧИТЬ.ЯЧЕЙКУ.

Номер_типа = 1. Абсолютная ссылка левой верхней ячейки аргумента ссылка в виде текста в текущем стиле: $А$1 или R1C1 (рис. 4). Проще использовать формулу =ЯЧЕЙКА("адрес";ссылка)

Рис. 4. Определение адреса левой верхней ячейки диапазона

Рис. 4. Определение адреса левой верхней ячейки диапазона

Номер_типа = 63. Возвращает номер цвета заливки ячейки (рис. 5).

Рис. 5. Определение номера цвета заливки ячейки

Рис. 5. Определение номера цвета заливки ячейки

Любопытно. Несмотря на то что это макрофункция, язык приложения важен. В русском Excel функция GET.CELL не работает. И еще. Если вам нужна информация о сводной таблице, то аналог ПОЛУЧИТЬ.ЯЧЕЙКУ — обычная функция (доступная для ввода на листе Excel) ПОЛУЧИТЬ.ДАННЫЕ. СВОДНОЙ.ТАБЛИЦЫ.

Источник: http://www.mrexcel.com/archive2/18800/21312.htm

Всё о работе с ячейками в Excel-VBA: обращение, перебор, удаление, вставка, скрытие, смена имени.

Содержание:

Table of Contents:

  • Что такое ячейка Excel?
  • Способы обращения к ячейкам
    • Выбор и активация
    • Получение и изменение значений ячеек
      • Ячейки открытой книги
      • Ячейки закрытой книги 
    • Перебор ячеек
    • Перебор в произвольном диапазоне
  • Свойства и методы ячеек
    • Имя ячейки
    • Адрес ячейки
    • Размеры ячейки
  • Запуск макроса активацией ячейки

2 нюанса:

  1. Я почти везде стараюсь использовать ThisWorkbook (а не, например, ActiveWorkbook) для обращения к текущей книге, в которой написан этот код (считаю это наиболее безопасным для новичков способом обращения к книгам, чтобы случайно не внести изменения в другие книги). Для экспериментов можете вставлять этот код в модули, коды книги, либо листа, и он будет работать только в пределах этой книги. 
  2. Я использую английский эксель и у меня по стандарту листы называются Sheet1, Sheet2 и т.д. Если вы работаете в русском экселе, то замените Thisworkbook.Sheets(«Sheet1») на Thisworkbook.Sheets(«Лист1»). Если этого не сделать, то вы получите ошибку в связи с тем, что пытаетесь обратиться к несуществующему объекту. Можно также заменить на Thisworkbook.Sheets(1), но это менее безопасно.

Что такое ячейка Excel?

В большинстве мест пишут: «элемент, образованный пересечением столбца и строки». Это определение полезно для людей, которые не знакомы с понятием «таблица». Для того, чтобы понять чем на самом деле является ячейка Excel, необходимо заглянуть в объектную модель Excel. При этом определения объектов «ряд», «столбец» и «ячейка» будут отличаться в зависимости от того, как мы работаем с файлом.

Объекты в Excel-VBA. Пока мы работаем в Excel без углубления в VBA определение ячейки как «пересечения» строк и столбцов нам вполне хватает, но если мы решаем как-то автоматизировать процесс в VBA, то о нём лучше забыть и просто воспринимать лист как «мешок» ячеек, с каждой из которых VBA позволяет работать как минимум тремя способами:

  1. по цифровым координатам (ряд, столбец),
  2. по адресам формата А1, B2 и т.д. (сценарий целесообразности данного способа обращения в VBA мне сложно представить)
  3. по уникальному имени (во втором и третьем вариантах мы будем иметь дело не совсем с ячейкой, а с объектом VBA range, который может состоять из одной или нескольких ячеек). Функции и методы объектов Cells и Range отличаются. Новичкам я бы порекомендовал работать с ячейками VBA только с помощью Cells и по их цифровым координатам и использовать Range только по необходимости.

Все три способа обращения описаны далее

Как это хранится на диске и как с этим работать вне Excel? С точки зрения хранения и обработки вне Excel и VBA. Сделать это можно, например, сменив расширение файла с .xls(x) на .zip и открыв этот архив.

Пример содержимого файла Excel:

Далее xl -> worksheets и мы видим файл листа

Содержимое файла:

 То же, но более наглядно:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac xr xr2 xr3" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr2="http://schemas.microsoft.com/office/spreadsheetml/2015/revision2" xmlns:xr3="http://schemas.microsoft.com/office/spreadsheetml/2016/revision3" xr:uid="{00000000-0001-0000-0000-000000000000}">
	<dimension ref="B2:F6"/>
	<sheetViews>
		<sheetView tabSelected="1" workbookViewId="0">
			<selection activeCell="D12" sqref="D12"/>
		</sheetView>
	</sheetViews>
	<sheetFormatPr defaultRowHeight="14.4" x14ac:dyDescent="0.3"/>
	<sheetData>
		<row r="2" spans="2:6" x14ac:dyDescent="0.3">
			<c r="B2" t="s">
				<v>0</v>
			</c>
		</row>
		<row r="3" spans="2:6" x14ac:dyDescent="0.3">
			<c r="C3" t="s">
				<v>1</v>
			</c>
		</row>
		<row r="4" spans="2:6" x14ac:dyDescent="0.3">
			<c r="D4" t="s">
				<v>2</v>
			</c>
		</row>
		<row r="5" spans="2:6" x14ac:dyDescent="0.3">
			<c r="E5" t="s">
				<v>0</v></c>
		</row>
		<row r="6" spans="2:6" x14ac:dyDescent="0.3">
			<c r="F6" t="s"><v>3</v>
		</c></row>
	</sheetData>
	<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
</worksheet>

Как мы видим, в структуре объектной модели нет никаких «пересечений». Строго говоря рабочая книга — это архив структурированных данных в формате XML. При этом в каждую «строку» входит «столбец», и в нём в свою очередь прописан номер значения данного столбца, по которому оно подтягивается из другого XML файла при открытии книги для экономии места за счёт отсутствия повторяющихся значений. Почему это важно. Если мы захотим написать какой-то обработчик таких файлов, который будет напрямую редактировать данные в этих XML, то ориентироваться надо на такую модель и структуру данных. И правильное определение будет примерно таким: ячейка — это объект внутри столбца, который в свою очередь находится внутри строки в файле xml, в котором хранятся данные о содержимом листа.

Способы обращения к ячейкам

Выбор и активация

Почти во всех случаях можно и стоит избегать использования методов Select и Activate. На это есть две причины:

  1. Это лишь имитация действий пользователя, которая замедляет выполнение программы. Работать с объектами книги можно напрямую без использования методов Select и Activate.
  2. Это усложняет код и может приводить к неожиданным последствиям. Каждый раз перед использованием Select необходимо помнить, какие ещё объекты были выбраны до этого и не забывать при необходимости снимать выбор. Либо, например, в случае использования метода Select в самом начале программы может быть выбрано два листа вместо одного потому что пользователь запустил программу, выбрав другой лист.

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

Отменить выбор  ячеек можно методом Unselect:

Selection.Unselect

Отличие выбора от активации — активировать можно только один объект из раннее выбранных. Выбрать можно несколько объектов.

Если вы записали и редактируете код макроса, то лучше всего заменить Select и Activate на конструкцию With … End With. Например, предположим, что мы записали вот такой макрос:

Sub Macro1()
' Macro1 Macro
    Range("F4:F10,H6:H10").Select 'выбрали два несмежных диапазона зажав ctrl
    Range("H6").Activate          'показывает только то, что я начал выбирать второй диапазон с этой ячейки (она осталась белой). Это действие ни на что не влияет
    With Selection.Interior       
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535            'залили желтым цветом, нажав на кнопку заливки на верхней панели
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

Почему макрос записался таким неэффективным образом? Потому что в каждый момент времени (в каждой строке) программа не знает, что вы будете делать дальше. Поэтому в записи выбор ячеек и действия с ними — это два отдельных действия. Этот код лучше всего оптимизировать (особенно если вы хотите скопировать его внутрь какого-нибудь цикла, который должен будет исполняться много раз и перебирать много объектов). Например, так:

Sub Macro11()
'
' Macro1 Macro
    Range("F4:F10,H6:H10").Select '1. смотрим, что за объект выбран (что идёт до .Select)
    Range("H6").Activate
    With Selection.Interior       '2. понимаем, что у выбранного объекта есть свойство interior, с которым далее идёт работа
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub



Sub Optimized_Macro()
    With Range("F4:F10,H6:H10").Interior '3. переносим объект напрямую в конструкцию With вместо Selection
' ////// Здесь я для надёжности прописал бы ещё Thisworkbook.Sheet("ИмяЛиста") перед Range,
' ////// чтобы минимизировать риск любых случайных изменений других листов и книг
' ////// With Thisworkbook.Sheet("ИмяЛиста").Range("F4:F10,H6:H10").Interior
        .Pattern = xlSolid               '4. полностью копируем всё, что было записано рекордером внутрь блока with
        .PatternColorIndex = xlAutomatic
        .Color = 55555                   '5. здесь я поменял цвет на зеленый, чтобы было видно, работает ли код при поочерёдном запуске двух макросов
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

Пример сценария, когда использование Select и Activate оправдано:

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

Sub Select_Activate_is_OK()
Thisworkbook.Worksheets(Array("Sheet1", "Sheet3")).Select 'Выбираем несколько листов по именам
Thisworkbook.Worksheets("Sheet3").Activate 'Показываем пользователю третий лист
'Далее все действия с выбранными ячейками через Select будут одновременно вносить изменения в оба выбранных листа

'Допустим, что тут мы решили покрасить те же два диапазона:
Range("F4:F10,H6:H10").Select
    Range("H6").Activate
    With Selection.Interior       
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End Sub

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

Получение и изменение значений ячеек

Значение ячеек можно получать/изменять с помощью свойства value. 

'Если нужно прочитать / записать значение ячейки, то используется свойство Value
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Value 'записать значение ячейки А1 листа "Sheet1" в переменную "a"
ThisWorkbook.Sheets("Sheet1").Cells (1,1).Value = 1  'задать значение ячейки А1 (первый ряд, первый столбец) листа "Sheet1"

'Если нужно прочитать текст как есть (с форматированием), то можно использовать свойство .text:
ThisWorkbook.Sheets("Sheet1").Cells (1,1).Text = "1" 
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Text

'Когда проявится разница:
'Например, если мы считываем дату в формате "31 декабря 2021 г.", хранящуюся как дата
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Value 'эапишет как "31.12.2021"
a = ThisWorkbook.Sheets("Sheet1").Cells (1,1).Text  'запишет как "31 декабря 2021 г."

Ячейки открытой книги

К ячейкам можно обращаться:

'В книге, в которой хранится макрос (на каком-то из листов, либо в отдельном модуле или форме)
ThisWorkbook.Sheets("Sheet1").Cells(1,1).Value        'По номерам строки и столбца
ThisWorkbook.Sheets("Sheet1").Cells(1,"A").Value      'По номерам строки и букве столбца
ThisWorkbook.Sheets("Sheet1").Range("A1").Value       'По адресу - вариант 1
ThisWorkbook.Sheets("Sheet1").[A1].Value              'По адресу - вариант 2
ThisWorkbook.Sheets("Sheet1").Range("CellName").Value 'По имени ячейки (для этого ей предварительно нужно его присвоить)

'Те же действия, но с использованием полного названия рабочей книги (книга должна быть открыта)
Workbooks("workbook.xlsm").Sheets("Sheet1").Cells(1,1).Value 'По номерам строки и столбца
Workbooks("workbook.xlsm").Sheets("Sheet1").Cells(1,"A").Value                'По номерам строки и букве столбца
Workbooks("workbook.xlsm").Sheets("Sheet1").Range("A1").Value                 'По адресу - вариант 1
Workbooks("workbook.xlsm").Sheets("Sheet1").[A1].Value                        'По адресу - вариант 2
Workbooks("workbook.xlsm").Sheets("Sheet1").Range("CellName").Value           'По имени ячейки (для этого ей предварительно нужно его присвоить)

Ячейки закрытой книги

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

Workbooks.Open Filename:="С:closed_workbook.xlsx"    'открыть книгу (она становится активной)
a = ActiveWorkbook.Sheets("Sheet1").Cells(1,1).Value  'достать значение ячейки 1,1
ActiveWorkbook.Close False                            'закрыть книгу (False => без сохранения)

Скачать пример, в котором можно посмотреть, как доставать и как записывать значения в закрытую книгу. 

Код из файла:

Option Explicit
Sub get_value_from_closed_wb() 'достать значение из закрытой книги
Dim a, wb_path, wsh As String
wb_path = ThisWorkbook.Sheets("Sheet1").Cells(2, 3).Value 'get path to workbook from sheet1
wsh = ThisWorkbook.Sheets("Sheet1").Cells(3, 3).Value
Workbooks.Open Filename:=wb_path
a = ActiveWorkbook.Sheets(wsh).Cells(3, 3).Value
ActiveWorkbook.Close False
ThisWorkbook.Sheets("Sheet1").Cells(4, 3).Value = a
End Sub

Sub record_value_to_closed_wb() 'записать значение в закрытую книгу
Dim wb_path, b, wsh As String
wsh = ThisWorkbook.Sheets("Sheet1").Cells(3, 3).Value
wb_path = ThisWorkbook.Sheets("Sheet1").Cells(2, 3).Value 'get path to workbook from sheet1
b = ThisWorkbook.Sheets("Sheet1").Cells(5, 3).Value 'get value to record in the target workbook
Workbooks.Open Filename:=wb_path
ActiveWorkbook.Sheets(wsh).Cells(4, 4).Value = b 'add new value to cell D4 of the target workbook
ActiveWorkbook.Close True
End Sub

Перебор ячеек

Перебор в произвольном диапазоне

Скачать файл со всеми примерами

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

  1. Цикл For Each. Пример:
    Sub iterate_over_cells()
    
    For Each c In ThisWorkbook.Sheets("Sheet1").Range("B2:D4").Cells
    MsgBox (c)
    Next c
    
    End Sub​

    Этот цикл выведет в виде сообщений значения ячеек в диапазоне B2:D4 по порядку по строкам слева направо и по столбцам — сверху вниз. Данный способ можно использовать для действий, в который вам не важны номера ячеек (закрашивание, изменение форматирования, пересчёт чего-то и т.д.).

  2. Ту же задачу можно решить с помощью двух вложенных циклов — внешний будет перебирать ряды, а вложенный — ячейки в рядах. Этот способ я использую чаще всего, потому что он позволяет получить больше контроля над исполнением: на каждой итерации цикла нам доступны координаты ячеек. Для перебора всех ячеек на листе этим методом потребуется найти последнюю заполненную ячейку. Пример кода:
    Sub iterate_over_cells()
    
    Dim cl, rw As Integer
    Dim x As Variant
    
    'перебор области 3x3
    For rw = 1 To 3 ' цикл для перебора рядов 1-3
    
        For cl = 1 To 3 'цикл для перебора столбцов 1-3
            x = ThisWorkbook.Sheets("Sheet1").Cells(rw + 1, cl + 1).Value
            MsgBox (x)
        Next cl
    Next rw
    
    
    
    'перебор всех ячеек на листе. Последняя ячейка определена с помощью UsedRange
    'LastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
    'LastCol = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1
    'For rw = 1 To LastRow 'цикл перебора всех рядов
    '    For cl = 1 To LastCol 'цикл для перебора всех столбцов
    '        Действия 
    '    Next cl
    'Next rw
    
    
    End Sub​
  3. Если нужно перебрать все ячейки в выделенном диапазоне на активном листе, то код будет выглядеть так:
    Sub iterate_cell_by_cell_over_selection()
        Dim ActSheet As Worksheet
        Dim SelRange As Range
        Dim cell As Range
        
     
        Set ActSheet = ActiveSheet
        Set SelRange = Selection
        
        'if we want to do it in every cell of the selected range
        For Each cell In Selection
        MsgBox (cell.Value)
        
        Next cell
    
    End Sub​

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

  4. Перебор ячеек в ряду
    Sub iterate_cells_in_row()
        Dim i, RowNum, StartCell As Long
        
        RowNum = 3 'какой ряд
        StartCell = 0 ' номер начальной ячейки (минус 1, т.к. в цикле мы прибавляем i)
        
        For i = 1 To 10 ' 10 ячеек в выбранном ряду
        ThisWorkbook.Sheets("Sheet1").Cells(RowNum, i + StartCell).Value = i '(i + StartCell) добавляет 1 к номеру столбца при каждом повторении
        Next i
    
    End Sub
  5. Перебор ячеек в столбце
    Sub iterate_cells_in_column()
        Dim i, ColNum, StartCell As Long
        
        ColNum = 3 'какой столбец
        StartCell = 0 ' номер начальной ячейки (минус 1, т.к. в цикле мы прибавляем i)
        
        For i = 1 To 10 ' 10 ячеек
        ThisWorkbook.Sheets("Sheet1").Cells(i + StartCell, ColNum).Value = i ' (i + StartCell) добавляет 1 к номеру ряда при каждом повторении
        Next i
    
    End Sub​

Свойства и методы ячеек

Имя ячейки

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

Thisworkbook.Sheets(1).Cells(1,1).name = "Новое_Имя"

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

ActiveWorkbook.Names("Старое_Имя").Delete

Пример кода для переименования ячеек:

Sub rename_cell()

old_name = "Cell_Old_Name"
new_name = "Cell_New_Name"

ActiveWorkbook.Names(old_name).Delete
ThisWorkbook.Sheets(1).Cells(2, 1).Name = new_name
End Sub

Sub rename_cell_reverse()

old_name = "Cell_New_Name"
new_name = "Cell_Old_Name"

ActiveWorkbook.Names(old_name).Delete
ThisWorkbook.Sheets(1).Cells(2, 1).Name = new_name
End Sub

Адрес ячейки

Sub get_cell_address() ' вывести адрес ячейки в формате буква столбца, номер ряда
  '$A$1 style
  txt_address = ThisWorkbook.Sheets(1).Cells(3, 2).Address
  MsgBox (txt_address)
End Sub

Sub get_cell_address_R1C1()' получить адрес столбца в формате номер ряда, номер столбца
  'R1C1 style
  txt_address = ThisWorkbook.Sheets(1).Cells(3, 2).Address(ReferenceStyle:=xlR1C1)
  MsgBox (txt_address)
End Sub

  'пример функции, которая принимает 2 аргумента: название именованного диапазона и тип желаемого адреса 
  '(1- тип $A$1 2- R1C1 - номер ряда, столбца)
Function get_cell_address_by_name(str As String, address_type As Integer)
  '$A$1 style
  Select Case address_type
    Case 1
      txt_address = Range(str).Address
    Case 2
      txt_address = Range(str).Address(ReferenceStyle:=xlR1C1)
    Case Else
      txt_address = "Wrong address type selected. 1,2 available"
    End Select
  get_cell_address_by_name = txt_address
End Function

'перед запуском нужно убедиться, что в книге есть диапазон с названием, 
'адрес которого мы хотим получить, иначе будет ошибка
Sub test_function() 'запустите эту программу, чтобы увидеть, как работает функция
  x = get_cell_address_by_name("MyValue", 2)
  MsgBox (x)
End Sub

Размеры ячейки

Ширина и длина ячейки в VBA меняется, например, так:

Sub change_size()
Dim x, y As Integer
Dim w, h As Double

'получить координаты целевой ячейки
x = ThisWorkbook.Sheets("Sheet1").Cells(2, 2).Value
y = ThisWorkbook.Sheets("Sheet1").Cells(3, 2).Value

'получить желаемую ширину и высоту ячейки
w = ThisWorkbook.Sheets("Sheet1").Cells(6, 2).Value
h = ThisWorkbook.Sheets("Sheet1").Cells(7, 2).Value

'сменить высоту и ширину ячейки с координатами x,y
ThisWorkbook.Sheets("Sheet1").Cells(x, y).RowHeight = h
ThisWorkbook.Sheets("Sheet1").Cells(x, y).ColumnWidth = w


End Sub

Прочитать значения ширины и высоты ячеек можно двумя способами (однако результаты будут в разных единицах измерения). Если написать просто Cells(x,y).Width или Cells(x,y).Height, то будет получен результат в pt (привязка к размеру шрифта). 

Sub get_size()
Dim x, y As Integer
'получить координаты ячейки, с которой мы будем работать
x = ThisWorkbook.Sheets("Sheet1").Cells(2, 2).Value
y = ThisWorkbook.Sheets("Sheet1").Cells(3, 2).Value

'получить длину и ширину выбранной ячейки в тех же единицах измерения, в которых мы их задавали
ThisWorkbook.Sheets("Sheet1").Cells(2, 6).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).ColumnWidth
ThisWorkbook.Sheets("Sheet1").Cells(3, 6).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).RowHeight

'получить длину и ширину с помощью свойств ячейки (только для чтения) в поинтах (pt)
ThisWorkbook.Sheets("Sheet1").Cells(7, 9).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).Width
ThisWorkbook.Sheets("Sheet1").Cells(8, 9).Value = ThisWorkbook.Sheets("Sheet1").Cells(x, y).Height

End Sub

Скачать файл с примерами изменения и чтения размера ячеек

Запуск макроса активацией ячейки

Для запуска кода VBA при активации ячейки необходимо вставить в код листа нечто подобное:

3 важных момента, чтобы это работало:

1. Этот код должен быть вставлен в код листа (здесь контролируется диапазон D4)

2-3. Программа, ответственная за запуск кода при выборе ячейки, должна называться Worksheet_SelectionChange и должна принимать значение переменной Target, относящейся к триггеру SelectionChange. Другие доступные триггеры можно посмотреть в правом верхнем углу (2).

Скачать файл с базовым примером (как на картинке)

Скачать файл с расширенным примером (код ниже)

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

        ' имеем в виду, что триггер SelectionChange будет запускать эту Sub после каждого клика мышью (после каждого клика будет проверяться:
          '1. количество выделенных ячеек и 
          '2. не пересекается ли выбранный диапазон с заданным в этой программе диапазоном.
        ' поэтому в эту программу не стоит без необходимости писать никаких других тяжелых операций

    If Selection.Count = 1 Then 'запускаем программу только если выбрано не более 1 ячейки


    'вариант модификации - брать адрес ячейки из другой ячейки:
    'Dim CellName as String
    'CellName = Activesheet.Cells(1,1).value 'брать текстовое имя контролируемой ячейки из A1 (должно быть в формате Буква столбца + номер строки)
    'If Not Intersect(Range(CellName), Target) Is Nothing Then
    'для работы этой модификации следующую строку надо закомментировать/удалить



        If Not Intersect(Range("D4"), Target) Is Nothing Then 
        'если заданный (D4) и выбранный диапазон пересекаются 
        '(пересечение диапазонов НЕ равно Nothing)

        'можно прописать диапазон из нескольких ячеек:
        'If Not Intersect(Range("D4:E10"), Target) Is Nothing Then
        'можно прописать несколько диапазонов:
        'If Not Intersect(Range("D4:E10"), Target) Is Nothing or Not Intersect(Range("A4:A10"), Target) Is Nothing Then

            Call program 'выполняем программу
        End If
    End If
End Sub

Sub program()

MsgBox ("Program Is running") 'здесь пишем код того, что произойдёт при выборе нужной ячейки


End Sub

Используя Microsoft Excel, вы можете легко получить местоположение выбранной в данный момент ячейки в поле имени, которое отображается слева от панели формул. Но если ячейка названа, вы не можете проверить ее местоположение на основе отображения в поле имени. И если вы хотите напрямую показать полный адрес активной ячейки или отобразить адрес активной ячейки в указанной ячейке, что бы вы сделали? В этом руководстве мы покажем вам, как легко получить адрес активной ячейки с помощью формул и методов VBA.

Получить адрес активной ячейки с формулой
Получить адрес активной ячейки с кодом VBA
Отображение адреса активной ячейки в указанной ячейке с кодом VBA
Динамически отображать адрес активной ячейки с помощью удивительного инструмента


Получить адрес активной ячейки с формулой

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

1. Выберите ячейку, чтобы сделать ее активной.

2. Введите в нее приведенную ниже формулу и нажмите Enter .

=ADDRESS(ROW(),COLUMN())

Затем вы можете увидеть, что адрес текущей выбранной ячейки сразу отображается в ячейке.

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


Получить адрес активной ячейки с кодом VBA

Вы также можете получить адрес активной ячейки с кодом VBA. Пожалуйста, сделайте следующее.

1. нажмите другой + F11 одновременно открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений дважды щелкните имя текущего рабочего листа на левой панели, чтобы открыть редактор кода, затем скопируйте и вставьте приведенный ниже код VBA в редактор кода.

Код VBA: получить адрес активной ячейки

Sub selectRange()
	MsgBox ActiveCell.Address
End Sub

3. Затем нажмите Run кнопку для запуска кода.

4. Затем появится диалоговое окно с адресом активной ячейки, указанным внутри.


Отображение адреса активной ячейки в указанной ячейке с кодом VBA

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

1. Откройте Microsoft Visual Basic для приложений окно, нажав другой + F11 одновременно.

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

Код VBA: отображать адрес активной ячейки в указанной ячейке

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
	Range("A1").Value = ActiveCell.Address
End Sub

Внимание: A1 — это ячейка, в которую вы хотите поместить адрес активной ячейки, вы можете изменить его на указанную ячейку для своих нужд.

3. Затем нажмите Файл > Закройте и вернитесь в Microsoft Excel Для выхода из Microsoft Visual Basic для приложений окно.

Вы можете видеть, что адрес активной ячейки отображается в ячейке A1, и адрес будет изменяться автоматически в зависимости от изменения активной ячейки. Смотрите скриншот:


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

Если вы хотите динамически отображать адрес активной ячейки на листе, я настоятельно рекомендую Расширенная панель редактирования инструмент Kutools for Excel. Давайте посмотрим, как этот инструмент может динамически отображать адрес активной ячейки на листе.

1. Нажмите Кутулс > Показать спрятать > Расширенная панель редактирования для включения функции.

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

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



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

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

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

вкладка kte 201905


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

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

офисный дно

Функция ЯЧЕЙКА в Excel и примеры ее использования

Очень часто при работе в Excel необходимо использовать данные об адресации ячеек в электронной таблице. Для этого была предусмотрена функция ЯЧЕЙКА. Рассмотрим ее использование на конкретных примерах.

Функция значения и свойства ячейки в Excel

Стоит отметить, что в Excel используются несколько функций по адресации ячеек:

Функция ЯЧЕЙКА(), английская версия CELL(), возвращает сведения о форматировании, адресе или содержимом ячейки. Функция может вернуть подробную информацию о формате ячейки, исключив тем самым в некоторых случаях необходимость использования VBA. Функция особенно полезна, если необходимо вывести в ячейки полный путь файла.

Как работает функция ЯЧЕЙКА в Excel?

Функция ЯЧЕЙКА в своей работе использует синтаксис, который состоит из двух аргументов:

  1. Тип_сведений – текстовое значение, задающее требуемый тип сведений о ячейке. При вводе функции вручную высвечивается выпадающий список где указаны все возможные значения аргумента «тип сведений»:
  2. Ссылка – необязательный аргумент. Ячейка, сведения о которой требуется получить. Если этот аргумент опущен, сведения, указанные в аргументе тип_сведений, возвращаются для последней измененной ячейки. Если аргумент ссылки указывает на диапазон ячеек, функция ЯЧЕЙКА() возвращает сведения только для левой верхней ячейки диапазона.

Примеры использования функции ЯЧЕЙКА в Excel

Пример 1. Дана таблица учета работы сотрудников организации вида:

Необходимо с помощью функции ЯЧЕЙКА вычислить в какой строке и столбце находится зарплата размером 235000 руб.

Для этого введем формулу следующего вида:

  • – «строка» и «столбец» – параметр вывода;
  • – С8 – адрес данных с зарплатой.

В результате вычислений получим: строка №8 и столбец №3 (С).

Как узнать ширину таблицы Excel?

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

Примечание. Высота строк и ячеек в Excel по умолчанию измеряется в единицах измерения базового шрифта – в пунктах pt. Чем больше шрифт, тем выше строка для полного отображения символов по высоте.

Введем в ячейку С14 формулу для вычисления суммы ширины каждого столбца таблицы:

  • – «ширина» – параметр функции;
  • – А1 – ширина определенного столбца.

Как получить значение первой ячейки в диапазоне

Пример 3. В условии примера 1 нужно вывести содержимое только из первой (верхней левой) ячейки из диапазона A5:C8.

Введем формулу для вычисления:

Описание формулы аналогичное предыдущим двум примерам.

Функция ЯЧЕЙКА() в MS EXCEL

Функция ЯЧЕЙКА( ) , английская версия CELL(), возвращает сведения о форматировании, адресе или содержимом ячейки. Функция может вернуть подробную информацию о формате ячейки, исключив тем самым в некоторых случаях необходимость использования VBA. Функция особенно полезна, если необходимо вывести в ячейки полный путь файла.

Синтаксис функции ЯЧЕЙКА()

ЯЧЕЙКА(тип_сведений, [ссылка])

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

ссылка — Необязательный аргумент. Ячейка, сведения о которой требуется получить. Если этот аргумент опущен, сведения, указанные в аргументе тип_сведений, возвращаются для последней измененной ячейки. Если аргумент ссылки указывает на диапазон ячеек, функция ЯЧЕЙКА() возвращает сведения только для левой верхней ячейки диапазона.

Использование функции

В файле примера приведены основные примеры использования функции:

Большинство сведений об ячейке касаются ее формата. Альтернативным источником информации такого рода может случить только VBA.

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

Обратите внимание, что если в одном экземпляре MS EXCEL (см. примечание ниже) открыто несколько книг, то функция ЯЧЕЙКА() с аргументами адрес и имяфайла, будет отображать имя того файла, с который Вы изменяли последним. Например, открыто 2 книги в одном окне MS EXCEL: Базаданных.xlsx и Отчет.xlsx. В книге Базаданных.xlsx имеется формула =ЯЧЕЙКА(«имяфайла») для отображения в ячейке имени текущего файла, т.е. Базаданных.xlsx (с полным путем и с указанием листа, на котором расположена эта формула). Если перейти в окно книги Отчет.xlsx и поменять, например, содержимое ячейки, то вернувшись в окно книги Базаданных.xlsx (CTRL+TAB) увидим, что в ячейке с формулой =ЯЧЕЙКА(«имяфайла») содержится имя Отчет.xlsx. Это может быть источником ошибки. Хорошая новость в том, что при открытии книги функция пересчитывает свое значение (также пересчитать книгу можно нажав клавишу F9). При открытии файлов в разных экземплярах MS EXCEL — подобного эффекта не возникает — формула =ЯЧЕЙКА(«имяфайла») будет возвращать имя файла, в ячейку которого эта формула введена.

Примечание: Открыть несколько книг EXCEL можно в одном окне MS EXCEL (в одном экземпляре MS EXCEL) или в нескольких. Обычно книги открываются в одном экземпляре MS EXCEL (когда Вы просто открываете их подряд из Проводника Windows или через Кнопку Офис в окне MS EXCEL). Второй экземпляр MS EXCEL можно открыть запустив файл EXCEL.EXE, например через меню Пуск. Чтобы убедиться, что файлы открыты в одном экземпляре MS EXCEL нажимайте последовательно сочетание клавиш CTRL+TAB — будут отображаться все окна Книг, которые открыты в данном окне MS EXCEL. Для книг, открытых в разных окнах MS EXCEL (экземплярах MS EXCEL) это сочетание клавиш не работает. Удобно открывать в разных экземплярах Книги, вычисления в которых занимают продолжительное время. При изменении формул MS EXCEL пересчитывает только книги открытые в текущем экземпляре.

Другие возможности функции ЯЧЕЙКА() : определение типа значения, номера столбца или строки, мало востребованы, т.к. дублируются стандартными функциями ЕТЕКСТ() , ЕЧИСЛО() , СТОЛБЕЦ() и др.

Извлечение информации о ячейке функцией ЯЧЕЙКА (CELL)

Иногда бывает необходимо с помощью формул узнать о какой-либо ячейке подробную информацию и параметры, чтобы использовать это в расчетах. Например, выяснить число или текст в ячейке или какой числовой формат в ней установлен. Сделать это можно, используя функцию ЯЧЕЙКА (CELL) .

Синтаксис у функции следующий:

=ЯЧЕЙКА( Параметр ; Адрес )

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

Давайте рассмотрим пару трюков с применением этой функции на практике.

Например, можно получить имя текущего листа формулой, используя функцию ЯЧЕЙКА с параметром «имяфайла» и извлекающей все символы правее закрывающей квадратной скобки:

Также можно проверить тип данных в ячейке (параметр «тип») и выводить сообщение об ошибке вместо вычислений, если введен текст или ячейка пуста:

Или подсветить условным форматированием все незащищенные ячейки в заданном диапазоне:

Функция Получить.Ячейку

Задача: вы хотите выделить все ячейки на листе, которые не содержат формул.

Примечание Багузина. Именно эту задачу можно решить довольно просто, если вы пользуетесь версией Excel 2013 или более поздней. Примените функцию ЕФОРМУЛА(ссылка). Функция проверяет содержимое ячейки, и возвращает значение ИСТИНА или ЛОЖЬ. Однако подход Билла Джелена любопытен сам по себе, поскольку открывает окно в мир макрофункций (скорее всего, неизвестный большинству пользователей).

Решение: до введения VBA, макросы писали на языке xlm (Excel Macro). Язык использовал макрофункции, т.е., функции листа макросов Excel 4.0. Этот язык до сих пор поддерживается Microsoft для совместимости с предыдущими версиями Excel (подробнее см. Что такое макрофункции?). Система макросов xlm является «пережитком», доставшимся нам от предыдущих версий Excel (4.0 и более ранних). Более поздние версии Excel все еще выполняют макросы xlm, но, начиная с Excel 97, пользователи не имеют возможности записывать макросы на языке xlm.

Язык xlm среди прочих содержит функцию Получить.Ячейку (GET.CELL), которая предоставляет гораздо больше информации, чем современная функция ЯЧЕЙКА(). На самом деле, Получить.Ячейку может рассказать о 66 различных атрибутах ячейки, в то время, как функция ЯЧЕЙКА возвращает лишь 12 параметров. Функция Получить.Ячейку весьма полезна, за исключением одного «но»… Вы не можете ввести ее непосредственно в ячейку (рис. 1).

Рис. 1. Функция Получить.Ячейку недоступна для ввода на листе Excel

Скачать заметку в формате Word или pdf, примеры в формате Excel (с макросами)

Однако есть обходной путь. Вы можете определить имя, основанное на функции, а затем ссылаться на это имя в любой ячейке. Например, чтобы выяснить, содержит ли ячейка A1 формулу, можно записать =Получить.Ячейку(48,А1). Здесь 48 – аргумент, отвечающий за анализ, является ли содержимое ячейки формулой. Для более универсального случая, когда вы хотите применить условное форматирование, воспользуйтесь формулой =Получить.Ячейку(48,ДВССЫЛ( » RC » ,ЛОЖЬ)). Если вы не знакомы с функцией ДВССЫЛ, советую почитать Примеры использования функции ДВССЫЛ (INDIRECT). Нам эта функция нужна для того, чтобы обозначить ссылку на ячейку, в которой мы сейчас находимся. Мы не можем указать никакую конкретную ячейку, поэтому используем ссылку в стиле R1C1, где RC означает относительную ссылку на текущую ячейку. В стиле ссылок А1 для ссылки на текущую ячейку нам бы потребовалось этот фрагмент формулы записать в виде =ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ();4)). Подробнее см. Зачем нужен стиль ссылок R1C1.

Чтобы использовать формулу =Получить.Ячейку() для выделения ячеек с помощью условного форматирования, выполните следующие действия (для Excel 2007 или более поздней версии):

  1. Чтобы определить новое имя, пройдите по меню ФОРМУЛЫ –>Присвоить имя. В открывшемся окне (рис. 2) выберите подходящее имя, например, ЕслиФормула. В поле формула введите =Получить.Ячейку(48,ДВССЫЛ( » RC » ,ЛОЖЬ)). Нажмите Оk. Нажмите Закрыть.
  2. Выделите ячейки, к которым хотите применить условное форматирование (рис. 3); в нашем примере – это В3:В15.
  3. Пройдите по меню ГЛАВНАЯ –>Условное форматирование –>Создать правило. В открывшемся окне выберите пункт Использовать формулу для определения форматируемых ячеек. В нижней половине диалогового типа введите =ЕслиФормула, как показано на рис. 3. Excel может автоматически добавить кавычки =»ЕслиФормула». Уберите их. Нажмите кнопку Формат, в открывшемся окне Формат ячеек перейдите на вкладку Заливка и выберите цвет заливки. Нажмите Оk.

Рис. 2. Окно Создание имени

Рис. 3. Создание нового правила условного форматирования

Чтобы выделить ячейки, которые не содержат формулу, используйте настройку формата =НЕ(ЕслиФормула).

Будьте осторожны. Иногда при копировании ячеек, содержащих формулу, на другой лист, есть риск «обрушить» Excel (у меня такого не случилось ни разу).

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

  1. Выберите все ячейки; для этого встаньте на одну из ячеек диапазона и нажмите Ctrl+А (А – английское).
  2. Нажмите Ctrl+G, чтобы открыть окно Переход.
  3. В левом нижнем углу этого окна нажмите кнопку Выделить.
  4. В открывшемся диалоговом окне Выделить группу ячеек выберите формулы, нажмите Ok.
  5. На закладке ГЛАВНАЯ выберите цвет заливки, например, красный.

Синтаксис функции: ПОЛУЧИТЬ.ЯЧЕЙКУ(номер_типа; ссылка). Полный список первого аргумента функции Получить.Ячейку см., например, здесь. Обратите внимание, что в некоторых случаях функциональность современных версий Excel существенно изменилась, и функция не вернет допустимое значение. Для некоторых аргументов номер_типа удобнее использовать функцию ЯЧЕЙКА.

Несколько примеров функции ПОЛУЧИТЬ.ЯЧЕЙКУ.

Номер_типа = 1. Абсолютная ссылка левой верхней ячейки аргумента ссылка в виде текста в текущем стиле: $А$1 или R1C1 (рис. 4). Проще использовать формулу =ЯЧЕЙКА( » адрес » ;ссылка)

Рис. 4. Определение адреса левой верхней ячейки диапазона

Номер_типа = 63. Возвращает номер цвета заливки ячейки (рис. 5).

Рис. 5. Определение номера цвета заливки ячейки

30 функций Excel за 30 дней: ЯЧЕЙКА (CELL)

В 4-ый день марафона 30 функций Excel за 30 дней мы получали детальные сведения о рабочей среде, используя функцию INFO (ИНФОРМ), – такие как версия Excel и режим пересчёта.

Одиннадцатый день марафона мы посвятим изучению функции CELL (ЯЧЕЙКА), которая сообщит информацию о форматировании ячейки, её содержимом и расположении. Она работает аналогично функции INFO (ИНФОРМ), т.е. имеет список значений, которые можно ввести в функцию, но содержит не один, а два аргумента.

Итак, давайте рассмотрим информацию и примеры по функции CELL (ЯЧЕЙКА). Если у Вас есть что добавить к нашим примерам и сведениям, пожалуйста, делитесь этим в комментариях.

Функция 11: CELL (ЯЧЕЙКА)

Функция CELL (ЯЧЕЙКА) показывает информацию о форматировании, содержании и расположении ячейки по заданной ссылке.

Как можно использовать функцию CELL (ЯЧЕЙКА)?

Функция CELL (ЯЧЕЙКА) может сообщить о ячейке информацию следующего содержания:

  • Числовой формат ячейки.
  • Название листа.
  • Выравнивание или ширину столбца.

Синтаксис CELL (ЯЧЕЙКА)

Функция CELL (ЯЧЕЙКА) имеет вот такой синтаксис:

info_type (тип_сведений) – это один из вариантов аргумента:

  • address (адрес) – ссылка на первую ячейку в аргументе reference (ссылка) в текстовом формате.
  • col (столбец) – номер столбца ячейки в аргументе reference (cсылка).
  • сolor (цвет) – возвращается 1, если форматированием ячейки предусмотрено изменение цвета для отрицательных значений; во всех остальных случаях возвращается 0 (ноль).
  • contents (содержимое) – значение левой верхней ячейки в ссылке.
  • filename (имяфайла) – имя файла и полный путь.
  • format (формат) – числовой формат ячейки.
  • parentheses (скобки) – возвращает 1, если форматированием ячейки предусмотрено отображение положительных или всех чисел в круглых скобках; во всех остальных случаях возвращает 0 (ноль).
  • prefix (префикс) – текстовое значение, соответствующее префиксу метки ячейки (показывает тип выравнивания).
  • protect (защита) – 0 = ячейка не заблокирована, 1 = заблокирована.
  • row (строка) – номер строки ячейки.
  • type (тип) – тип данных в ячейке (пустая, текст, другое).
  • width (ширина) – ширина столбца ячейки.

Ловушки функции CELL (ЯЧЕЙКА)

Есть несколько моментов, за которыми нужно внимательно следить, используя функцию CELL (ЯЧЕЙКА):

  • Если аргумент reference (ссылка) опущен, то результат возвращается для последней изменённой ячейки. Чтобы быть уверенным, что результат получился именно тот, что Вам нужен, ссылку желательно всегда указывать. Вы можете сослаться даже ячейку, в которой содержится сама функция CELL (ЯЧЕЙКА).
  • При работе с функцией CELL (ЯЧЕЙКА), иногда необходимо делать пересчёт листа, чтобы обновить результат, который возвращает функция.
  • Если в качестве аргумента info_type (тип_сведений) выбрано значение filename (имяфайла), а книга Excel ещё не сохранена, то результатом будет пустая строка.

Пример 1: Формат числа в ячейке

Со значением format (формат) Вы можете использовать функцию CELL (ЯЧЕЙКА), чтобы показать числовой формат ячейки. Например, если ячейка B7 имеет формат General (Общий), то результатом формулы будет G:

Пример 2: Название листа

Со значением filename (имяфайла) функция CELL (ЯЧЕЙКА) покажет путь к файлу, имя файла и название листа.

Из полученного результата при помощи других функций Вы можете извлечь название листа. В формуле ниже, используя функции MID (ПСТР) и FIND (НАЙТИ), находим квадратные скобки и возвращаем 32 символа, которые следуют за ними (длина названия листа ограничена 31 символом).

Пример 3: Подстановка аргумента info_type (тип_сведений) из выпадающего списка

Вместо того, чтобы вводить значение аргумента info_type (тип_сведений) в функцию CELL (ЯЧЕЙКА) в виде текстовой строки, Вы можете указать ссылку на ячейку, содержащую корректные значения. В этом примере в ячейке B4 находится выпадающий список, а вместо аргумента info_type (тип_сведений) указана ссылка на эту ячейку. Аргумент reference (ссылка) ссылается на ячейку B2.

Когда выбрано значение protect (защита): результат равен 1, если ячейка заблокирована, или 0 (ноль), если не заблокирована.

Когда выбрано значение width (ширина), результат показывает ширину столбца в формате целого числа. Единицей измерения в этом случае является ширина одного символа при стандартном размере шрифта.

При использовании Microsoft Excel вы можете легко получить местоположение текущей выбранной ячейки в поле имени, которое отображается слева от панели формул. Но если ячейке присвоено имя, вы не сможете проверить ее местоположение по отображению в поле имени. И если вы хотите напрямую показать полный адрес активной ячейки или отобразить адрес активной ячейки в указанной ячейке, что бы вы сделали? В этом руководстве мы покажем вам, как легко получить адрес активной ячейки с помощью формулы и методов VBA.

Получить адрес активной ячейки с помощью формулы
Получить адрес активной ячейки с кодом VBA
Отображать адрес активной ячейки в указанной ячейке с кодом VBA
Динамически отображать адрес активной ячейки с помощью замечательного инструмента

Объединение нескольких рабочих листов/книг в один рабочий лист/книгу:

Объединение нескольких рабочих листов или рабочих книг в один рабочий лист или книгу может оказаться огромной задачей в вашей повседневной работе. Но, если у вас есть Kutools for Excel , его мощная утилита – Combine может помочь вам быстро объединить несколько рабочих листов, книг в один рабочий лист или книгу. Загрузите полнофункциональную 60-дневную бесплатную версию Kutools for Excel прямо сейчас!

Kutools for Excel : с более чем 200 удобными надстройками Excel, бесплатно, без ограничений в течение 60 дней. Загрузите бесплатную пробную версию прямо сейчас!

Вкладка Office Включите редактирование и просмотр с вкладками в Office и сделайте вашу работу намного проще …

Подробнее … Скачать бесплатно …

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

  • Повторное использование чего угодно: добавьте наиболее часто используемые или сложные формулы, диаграммы и все остальное в избранное, и быстро использовать их в будущем.
  • Более 20 текстовых функций: извлечение числа из текстовой строки; Извлечь или удалить часть текстов; Преобразование чисел и валют в английские слова.
  • Инструменты слияния: несколько книг и листов в одну; Объединить несколько ячеек/строк/столбцов без потери данных; Объедините повторяющиеся строки и суммируйте.
  • Инструменты разделения: разделение данных на несколько листов в зависимости от значения; Из одной книги в несколько файлов Excel, PDF или CSV; Один столбец в несколько столбцов.
  • Вставить пропуск скрытых/отфильтрованных строк; Подсчет и сумма по цвету фона; Массовая отправка персонализированных писем нескольким получателям.
  • Суперфильтр: создавайте расширенные схемы фильтров и применяйте их к любым листам; Сортировать по неделе, дню, частоте и т. Д. Фильтр жирным шрифтом, формулами, комментарием …
  • Более 300 мощных функций; Работает с Office 2007-2019 и 365; Поддерживает все языки; Простое развертывание на вашем предприятии или в организации.

Подробнее … Бесплатная загрузка …

– ->


Содержание

  1. Получить адрес активной ячейки с формулой
  2. Получить адрес активной ячейки с кодом VBA
  3. Отображение адреса активной ячейки в указанной ячейке с кодом VBA
  4. Динамически отображать адрес активной ячейки с помощью замечательного инструмента

Получить адрес активной ячейки с формулой

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

1. Выберите ячейку, чтобы сделать ее активной.

2. Введите в нее приведенную ниже формулу и нажмите клавишу Enter .

Тогда вы увидите, что адрес текущей выбранной ячейки сразу отображается в ячейке.

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

Динамическое отображение адреса активной ячейки:

Расширенная панель редактирования из Kutools for Excel помогает динамически отображать адрес активной ячейки на листе в Excel. Кроме того, вы можете просматривать и редактировать выделенное содержимое ячеек прямо в окне, как показано в демонстрации ниже.
Загрузите и попробуйте прямо сейчас! (30-дневная бесплатная пробная версия)


Получить адрес активной ячейки с кодом VBA

Вы также можете получить адрес активной ячейки с кодом VBA. Пожалуйста, сделайте следующее.

1. Одновременно нажмите Alt + F11 , чтобы открыть окно Microsoft Visual Basic для приложений .

2. В окне Microsoft Visual Basic для приложений дважды щелкните имя текущего рабочего листа на левой панели, чтобы открыть редактор кода, затем скопируйте и вставьте приведенный ниже код VBA в редактор кода.

Код VBA: получить адрес активной ячейки

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

4. Затем появится диалоговое окно с адресом активной ячейки, указанной внутри.


Отображение адреса активной ячейки в указанной ячейке с кодом VBA

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

1. Откройте окно Microsoft Visual Basic для приложений , одновременно нажав Alt + F11 .

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

Код VBA: отображение адреса активной ячейки в указанной ячейке

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

3. Затем нажмите Файл > Закрыть и вернуться в Microsoft Excel , чтобы закрыть окно Microsoft Visual Basic для приложений .

Вы можете увидеть адрес активной ячейки, отображаемой в ячейке A1, и адрес изменится автоматически в зависимости от изменения активной ячейки. См. Снимок экрана:


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

Если вы хотите динамически отображать адрес активной ячейки на листе, я настоятельно рекомендую инструмент Расширенная панель редактирования Kutools for Excel . Давайте посмотрим, как этот инструмент может динамически отображать адрес активной ячейки на листе.

Перед применением Kutools for Excel , пожалуйста, загрузите и установите его во-первых .

1. Нажмите Kutools > Показать и скрыть > Расширенная панель редактирования , чтобы включить эту функцию.

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

Если вы хотите получить 30-дневную бесплатную пробную версию эту утилиту, нажмите, чтобы загрузить ее , а затем примените операцию в соответствии с указанными выше шагами.


Вкладка Office – просмотр, редактирование и управление книгами в Excel с вкладками:

Вкладка Office предоставляет интерфейс с вкладками, как в веб-браузерах, таких как Google Chrome, новые версии Internet Explorer и Firefox в Microsoft Excel. Он станет незаменимым помощником в работе и сэкономит время. См. Демонстрацию ниже:

Нажмите, чтобы получить бесплатную пробную версию вкладки Office!

->


Понравилась статья? Поделить с друзьями:
  • Полосы прокрутки ms word это что
  • Получить вчерашнюю дату excel
  • Полосы прокрутки ms word содержит
  • Получить все возможные комбинации excel
  • Полосовая диаграмма в excel