О чём пойдёт речь?
Знакомство с объектной моделью Excel следует начинать с такого замечательного объекта, как Range. Поскольку любая ячейка — это Range, то без знания, как с этим объектом эффективно взаимодействовать, вам будет затруднительно программировать для Excel. Это очень ладно-скроенный объект. При некоторой сноровке вы найдёте его весьма удобным в эксплуатации.
Что такое объекты?
Мы собираемся изучать объект Range, поэтому пару слов надо сказать, что такое, собственно, «объект«. Всё, что вы наблюдаете в Excel, всё с чем вы работаете — это набор объектов. Например, лист рабочей книги Excel — не что иное, как объект типа WorkSheet. Однотипные объекты объединяют в коллекции себе подобных. Например, листы объединены в коллекцию Sheets. Чтобы не путать друг с другом объекты одного и того же типа, они имеют отличающиеся имена, а также номер индекса в коллекции. Объекты имеют свойства, методы и события.
Свойства — это информация об объекте. Часто эти свойства можно менять, что автоматически влечет изменения внешнего вида объекта или его поведения. Например свойство Visible объекта Worksheet отвечает за видимость листа на экране. Если ему присвоить значение xlSheetHidden (это константа, которая по факту равно нулю), то лист будет скрыт.
Методы — это то, что объект может делать. Например, метод Delete объекта Worksheet удаляет себя из книги. Метод Select делает лист активным.
События — это механизм, при помощи которого вы можете исполнять свой код VBA сразу по факту возникновения того или иного события с вашим объектом. Например, есть возможность выполнять ваш код, как только пользователь сделал текущим определенный лист рабочей книги, либо как только пользователь что-то изменил на этом листе.
Range это диапазон ячеек. Минимум — одна ячейка, максимум — весь лист, теоретически насчитывающий более 17 миллиардов ячеек (строки 2^20 * столбцы 2^14 = 2^34).
В Excel объявлены глобально и всегда готовы к использованию несколько коллекций, имеющий членами объекты типа Range, либо свойства это же типа.
Коллекции глобального объекта Application: Cells, Columns, Rows, а также свойства Range, Selection, ActiveCell, ThisCell.
ActiveCell — активная ячейка текущего листа, ThisCell — если вы написали пользовательскую функцию рабочего листа, то через это свойство вы можете определить какая конкретно ячейка в данный момент пересчитывает вашу функцию. Об остальных перечисленных объектов речь пойдёт ниже.
Работа с отдельными ячейками
Синтаксическая форма | Комментарии по использованию |
Range(«D5«) или [D5] |
Ячейка D5 текущего листа. Полная и краткая формы. Тут применим только синтаксис типа A1, но не R1C1. То есть такая конструкция Range(«R1C2«) — вызовет ошибку, даже если в книге Excel включен режим формул R1C1. Разумеется после этой формы вы можете обратиться к свойствам соответствующей ячейки. Например, Range(«D5«).Interior.Color = RGB(0, 255, 0). |
Cells(5, 4) или Cells(5, «D») | Ячейка D5 текущего листа через свойство Cells. 5 — строка (row), 4 — столбец (column). Допустимость второй формы мало кому известна. |
Cells(65540) | Ячейку D5 можно адресовать и через указание только одного параметра свойсва Cells. При этом нумерация идёт слева направо, потом сверху вниз. То есть сначала нумеруется вся строка (2^14=16384 колонок) и только потом идёт переход на следующую строку. То есть Cells(16385) вернёт вам ячейку A2, а D5 будет Cells(65540). Пока данный способ выглядит не очень удобным. |
Работа с диапазоном ячеек
Синтаксическая форма | Комментарии по использованию |
Range(«A1:B4«) или [A1:B4] | Диапазон ячеек A1:B4 текущего листа. Обратите внимание, что указываются координаты верхнего левого и правого нижнего углов диапазона. Причём первый указываемый угол вполне может быть правым нижним, это не имеет значения. |
Range(Cells(1, 1), Cells(4, 2)) | Диапазон ячеек A1:B4 текущего листа. Удобно, когда вы знаете именно цифровые координаты углов диапазона. |
Работа со строками
Синтаксическая форма | Комментарии по использованию |
Range(«3:5«) или [3:5] | Строки 3, 4 и 5 текущего листа целиком. |
Range(«A3:XFD3«) или [A3:XFD3] | Строка 3, но с указанием колонок. Просто, чтобы вы понимали, что это тождественные формы. XFD — последняя колонка листа. |
Rows(«3:3«) | Строка 3 через свойство Rows. Параметр в виде диапазона строк. Двоеточие — это символ диапазона. |
Rows(3) | Тут параметр — индекс строки в массиве строк. Так можно сослаться только не конкретную строку. Обратите внимание, что в предыдущем примере параметр текстовая строка «3:3» и она взята в кавычки, а тут — чистое число. |
Работа со столбцами
Синтаксическая форма | Комментарии по использованию |
Range(«B:B«) или [B:B] | Колонка B текущего листа. |
Range(«B1:B1048576«) или [B1:B1048576] | То же самое, но с указанием номеров строк, чтобы вы понимали, что это тождественные формы. 2^20=1048576 — максимальный номер строки на листе. |
Columns(«B:B«) | То же самое через свойство Columns. Параметр — текстовая строка. |
Columns(2) | То же самое. Параметр — числовой индекс столбца. «A» -> 1, «B» -> 2, и т.д. |
Весь лист
Синтаксическая форма | Комментарии по использованию |
Range(«A1:XFD1048576«) или [A1:XFD1048576] | Диапазон размером во всё адресное пространство листа Excel. Воспринимайте эту таблицу лишь как теорию — так работать с листами вам не придётся — слишком большое количество ячеек. Даже современные компьютеры не смогут помочь Excel быстро работать с такими массивами информации. Тут проблема больше даже в самом приложении. |
Range(«1:1048576«) или [1:1048576] | То же самое, но через строки. |
Range(«A:XFD«) или [A:XFD] | Аналогично — через адреса столбцов. |
Cells | Свойство Cells включает в себя ВСЕ ячейки. |
Rows | Все строки листа. |
Columns | Все столбцы листа. |
Следует иметь в виду, что свойства Range, Cells, Columns и Rows имеют как объекты типа Worksheet, так и объекты Range. Соответственно в первом случае эти коллекции будут относиться ко всему листу и отсчитываться будут от A1, а вот в случае конкретного объекта Range эти коллекции будут относиться только к ячейкам этого диапазона и отсчитываться будут от левого верхнего угла диапазона. Например Cells(2,2) указывает на ячейку B2, а Range(«C3:D5»).Cells(2,2) укажет на D4.
Также много путаницы в умы вносит тот факт, что объект Range имеет одноименное свойство range. К примеру, Range(«A100:D500»).Range(«A2») — тут выражение до точки ( Range(«A100:D500») ) является объектом Range, выражение после точки ( Range(«A2») ) — свойство range упомянутого объекта, но возвращает это свойство тоже объект типа Range. Вот такие пироги. Из этого следует, что такая цепочка может иметь и более двух членов. Практического смысла в этом будет не много, но синтаксически это будут совершенно корректно, например, так: Range(«CV100:GR200»).Range(«J10:T20»).Range(«A1:B2») укажет на диапазон DE109:DF110.
Ещё один сюрприз таится в том, что объекты Range имеют свойство по-умолчанию Item( RowIndex [, ColumnIndex] ). По правилам VBA при ссылке на default свойства имя свойства (Item) можно опускать. Кстати говоря, то что вы привыкли видеть в скобках после Cells, есть не что иное, как это дефолтовое свойство Item, а не родные параметры Cells, который их не имеет вовсе. Ну ладно к Cells все привыкли и это никакого отторжения не вызывает, но если вы увидите нечто подобное — Range(«C3:D5»)(2,2), то, скорее всего, будете несколько озадачены, а тем временем — это буквально тоже самое, что и у Cells — всё то же дефолтовое свойство Item. Последняя конструкция ссылается на D4. А вот для Columns и Rows свойство Item может быть только одночленным, например Columns(1) — и к этой форме мы тоже вполне привыкли. Однако конструкции вида Columns(2)(3)(4) могут сильно удивить (столбец 7 будет выделен).
Примеры кода
Скачать
Типовые задачи
-
Перебор ячеек в диапазоне (вариант 1)
В данном примере организован цикл For…Next и доступ к ячейкам осуществляется по их индексу. Вместо parRange(i) мы могли бы написать parRange.Item(i) (выше это объяснялось). Обратите внимание, что мы в этом примере успешно применяем, как вариант с parRange(i,c), так и parRange(i). То есть, если мы применяем одночленную форму свойства Item, то диапазон перебирается по строкам (A1, B1, C1, A2, …), а если двухчленную, то столбец у нас зафиксирован и каждая итерация цикла — на новой строке. Это очень интересный эффект, его можно применять для вытягивания таблиц по вертикали. Но — продолжим!
Количество ячеек в диапазоне получено при помощи свойства .Count. Как .Item, так и .Count — это всё атрибуты коллекций, которые широко применяются в объектой модели MS Office и, в частности, Excel.
Sub Handle_Cells_1(parRange As Range) For i = 1 To parRange.Count parRange(i, 5) = parRange(i).Address & " = " & parRange(i) Next End Sub
-
Перебор ячеек в диапазоне (вариант 2)
В этом примере мы использовали цикл For each…Next, что выглядит несколько лаконичней. Однако, в некоторых случаях вам может потребоваться переменная i из предыдущего примера, например, для вывода результатов в определенные строки листа, поэтому выбирайте удробную вам форму оператора For. Тут в цикле мы «вытягивали» все ячейки диапазона в текстовую строку, чтобы потом отобразить её через функцию MsgBox.
Sub Handle_Cells_2(parRange As Range) For Each c In parRange strLine = strLine & c.Address & "=" & c & "; " Next MsgBox strLine End Sub
-
Перебор ячеек в диапазоне (вариант 3)
Если необходимо перебирать ячейки в порядке A1, A2, A3, B1, …, а не A1, B1, C1, A2, …, то вы можете это организовать при помощи 2-х циклов For. Обратите внимание, как мы узнали количество столбцов (parRange.Columns.Count) и строк (parRange.Rows.Count) в диапазоне, а также на использование свойства Cells. Тут Cells относится к листу и никак не связано с диапазоном parRange.
Sub Handle_Cells_3(parRange As Range) colNum = parRange.Columns.Count For i = 1 To parRange.Rows.Count For j = 1 To colNum Cells(i + (j - 1) * colNum, colNum + 2) = parRange(i, j) Next j Next i End Sub
-
Перебор строк диапазона
В цикле For each…Next перебираем коллекцию Rows объекта parRange. Для каждой строки формируем цвет на основе первых трёх ячеек каждой строки. Поскульку у нас в ячейках формула, присваивающая ячейке случайное число от 1 до 255, то цвета получаются всегда разные. Оператор With позволяет нам сократить код и, к примеру, вместо Line.Cells(2) написать просто .Cells(2).
Sub Handle_Rows_1(parRange As Range) For Each Line In parRange.Rows With Line .Interior.Color = RGB(.Cells(1), .Cells(2), .Cells(3)) End With Next End Sub
-
Перебор столбцов
Перебираем коллекцию Columns. Тоже используем оператор With. В последней ячейке каждого столбца у нас хранится размер шрифта для всей колонки, который мы и применяем к свойству Line.Font.Size.
Sub Handle_Columns_1(parRange As Range) For Each Line In parRange.Columns With Line .Font.Size = .Cells(.Cells.Count) End With Next End Sub
-
Перебор областей диапазона
Как вы знаете, в Excel можно выделить несвязанные диапазоны и проделать с ними какие-то операции. Поддерживает это и объект Range. Получить диапазон, состоящий из нескольких областей (area) очень легко — достаточно перечислить через запятую адреса соответствующих диапазонов: Range(«A1:B3, B5:D8, Z1:AA12«).
Вот такой составной диапазон и разбирается процедурой, показанной ниже. Организован цикл по коллекции Areas, настроен оператор with на текущий элемент коллекции, и ниже и правее относительно ячейки J1 мы собираем некоторые сведения о свойствах областей составного диапазона (которые каждый по себе, конечно же, тоже являются объектами типа Range). Для задания смещения от ячейки J1 нами впервые использовано очень полезное свойство Offset. Каждый диапазон получает случайный цвет, плюс мы заносим в таблицу порядковый номер диапазона (i), его адрес (.Address), количество ячеек (.Count) и цвет (.Interior.Color) после того, как он вычислен.Sub Handle_Areas_1(parRange As Range) For i = 1 To parRange.Areas.Count With parRange.Areas(i) Cells(1, 10).Offset(i, 0) = i Cells(1, 10).Offset(i, 1) = .Address Cells(1, 10).Offset(i, 2) = .Count .Interior.Color = RGB(Int(Rnd * 255), Int(Rnd * 255), Int(Rnd * 255)) Cells(1, 10).Offset(i, 3) = .Interior.Color End With Next End Sub
Продолжение следует…
Читайте также:
-
Поиск границ текущей области
-
Массивы в VBA
-
Структуры данных и их эффективность
-
Автоматическое скрытие/показ столбцов и строк
На чтение 18 мин. Просмотров 75k.
сэр Артур Конан Дойл
Это большая ошибка — теоретизировать, прежде чем кто-то получит данные
Эта статья охватывает все, что вам нужно знать об использовании ячеек и диапазонов в VBA. Вы можете прочитать его от начала до конца, так как он сложен в логическом порядке. Или использовать оглавление ниже, чтобы перейти к разделу по вашему выбору.
Рассматриваемые темы включают свойство смещения, чтение
значений между ячейками, чтение значений в массивы и форматирование ячеек.
Содержание
- Краткое руководство по диапазонам и клеткам
- Введение
- Важное замечание
- Свойство Range
- Свойство Cells рабочего листа
- Использование Cells и Range вместе
- Свойство Offset диапазона
- Использование диапазона CurrentRegion
- Использование Rows и Columns в качестве Ranges
- Использование Range вместо Worksheet
- Чтение значений из одной ячейки в другую
- Использование метода Range.Resize
- Чтение Value в переменные
- Как копировать и вставлять ячейки
- Чтение диапазона ячеек в массив
- Пройти через все клетки в диапазоне
- Форматирование ячеек
- Основные моменты
Краткое руководство по диапазонам и клеткам
Функция | Принимает | Возвращает | Пример | Вид |
Range | адреса ячеек |
диапазон ячеек |
.Range(«A1:A4») | $A$1:$A$4 |
Cells | строка, столбец |
одна ячейка |
.Cells(1,5) | $E$1 |
Offset | строка, столбец |
диапазон | .Range(«A1:A2») .Offset(1,2) |
$C$2:$C$3 |
Rows | строка (-и) | одна или несколько строк |
.Rows(4) .Rows(«2:4») |
$4:$4 $2:$4 |
Columns | столбец (-цы) |
один или несколько столбцов |
.Columns(4) .Columns(«B:D») |
$D:$D $B:$D |
Введение
Это третья статья, посвященная трем основным элементам VBA. Этими тремя элементами являются Workbooks, Worksheets и Ranges/Cells. Cells, безусловно, самая важная часть Excel. Почти все, что вы делаете в Excel, начинается и заканчивается ячейками.
Вы делаете три основных вещи с помощью ячеек:
- Читаете из ячейки.
- Пишите в ячейку.
- Изменяете формат ячейки.
В Excel есть несколько методов для доступа к ячейкам, таких как Range, Cells и Offset. Можно запутаться, так как эти функции делают похожие операции.
В этой статье я расскажу о каждом из них, объясню, почему они вам нужны, и когда вам следует их использовать.
Давайте начнем с самого простого метода доступа к ячейкам — с помощью свойства Range рабочего листа.
Важное замечание
Я недавно обновил эту статью, сейчас использую Value2.
Вам может быть интересно, в чем разница между Value, Value2 и значением по умолчанию:
' Value2 Range("A1").Value2 = 56 ' Value Range("A1").Value = 56 ' По умолчанию используется значение Range("A1") = 56
Использование Value может усечь число, если ячейка отформатирована, как валюта. Если вы не используете какое-либо свойство, по умолчанию используется Value.
Лучше использовать Value2, поскольку он всегда будет возвращать фактическое значение ячейки.
Свойство Range
Рабочий лист имеет свойство Range, которое можно использовать для доступа к ячейкам в VBA. Свойство Range принимает тот же аргумент, что и большинство функций Excel Worksheet, например: «А1», «А3: С6» и т.д.
В следующем примере показано, как поместить значение в ячейку с помощью свойства Range.
Sub ZapisVYacheiku() ' Запишите число в ячейку A1 на листе 1 этой книги ThisWorkbook.Worksheets("Лист1").Range("A1").Value2 = 67 ' Напишите текст в ячейку A2 на листе 1 этой рабочей книги ThisWorkbook.Worksheets("Лист1").Range("A2").Value2 = "Иван Петров" ' Запишите дату в ячейку A3 на листе 1 этой книги ThisWorkbook.Worksheets("Лист1").Range("A3").Value2 = #11/21/2019# End Sub
Как видно из кода, Range является членом Worksheets, которая, в свою очередь, является членом Workbook. Иерархия такая же, как и в Excel, поэтому должно быть легко понять. Чтобы сделать что-то с Range, вы должны сначала указать рабочую книгу и рабочий лист, которому она принадлежит.
В оставшейся части этой статьи я буду использовать кодовое имя для ссылки на лист.
Следующий код показывает приведенный выше пример с использованием кодового имени рабочего листа, т.е. Лист1 вместо ThisWorkbook.Worksheets («Лист1»).
Sub IspKodImya () ' Запишите число в ячейку A1 на листе 1 этой книги Sheet1.Range("A1").Value2 = 67 ' Напишите текст в ячейку A2 на листе 1 этой рабочей книги Sheet1.Range("A2").Value2 = "Иван Петров" ' Запишите дату в ячейку A3 на листе 1 этой книги Sheet1.Range("A3").Value2 = #11/21/2019# End Sub
Вы также можете писать в несколько ячеек, используя свойство
Range
Sub ZapisNeskol() ' Запишите число в диапазон ячеек Sheet1.Range("A1:A10").Value2 = 67 ' Написать текст в несколько диапазонов ячеек Sheet1.Range("B2:B5,B7:B9").Value2 = "Иван Петров" End Sub
Свойство Cells рабочего листа
У Объекта листа есть другое свойство, называемое Cells, которое очень похоже на Range . Есть два отличия:
- Cells возвращают диапазон только одной ячейки.
- Cells принимает строку и столбец в качестве аргументов.
В приведенном ниже примере показано, как записывать значения
в ячейки, используя свойства Range и Cells.
Sub IspCells() ' Написать в А1 Sheet1.Range("A1").Value2 = 10 Sheet1.Cells(1, 1).Value2 = 10 ' Написать в А10 Sheet1.Range("A10").Value2 = 10 Sheet1.Cells(10, 1).Value2 = 10 ' Написать в E1 Sheet1.Range("E1").Value2 = 10 Sheet1.Cells(1, 5).Value2 = 10 End Sub
Вам должно быть интересно, когда использовать Cells, а когда Range. Использование Range полезно для доступа к одним и тем же ячейкам при каждом запуске макроса.
Например, если вы использовали макрос для вычисления суммы и
каждый раз записывали ее в ячейку A10, тогда Range подойдет для этой задачи.
Использование свойства Cells полезно, если вы обращаетесь к
ячейке по номеру, который может отличаться. Проще объяснить это на примере.
В следующем коде мы просим пользователя указать номер столбца. Использование Cells дает нам возможность использовать переменное число для столбца.
Sub ZapisVPervuyuPustuyuYacheiku() Dim UserCol As Integer ' Получить номер столбца от пользователя UserCol = Application.InputBox("Пожалуйста, введите номер столбца...", Type:=1) ' Написать текст в выбранный пользователем столбец Sheet1.Cells(1, UserCol).Value2 = "Иван Петров" End Sub
В приведенном выше примере мы используем номер для столбца,
а не букву.
Чтобы использовать Range здесь, потребуется преобразовать эти значения в ссылку на
буквенно-цифровую ячейку, например, «С1». Использование свойства Cells позволяет нам
предоставить строку и номер столбца для доступа к ячейке.
Иногда вам может понадобиться вернуть более одной ячейки, используя номера строк и столбцов. В следующем разделе показано, как это сделать.
Использование Cells и Range вместе
Как вы уже видели, вы можете получить доступ только к одной ячейке, используя свойство Cells. Если вы хотите вернуть диапазон ячеек, вы можете использовать Cells с Range следующим образом:
Sub IspCellsSRange() With Sheet1 ' Запишите 5 в диапазон A1: A10, используя свойство Cells .Range(.Cells(1, 1), .Cells(10, 1)).Value2 = 5 ' Диапазон B1: Z1 будет выделен жирным шрифтом .Range(.Cells(1, 2), .Cells(1, 26)).Font.Bold = True End With End Sub
Как видите, вы предоставляете начальную и конечную ячейку
диапазона. Иногда бывает сложно увидеть, с каким диапазоном вы имеете дело,
когда значением являются все числа. Range имеет свойство Address, которое
отображает буквенно-цифровую ячейку для любого диапазона. Это может
пригодиться, когда вы впервые отлаживаете или пишете код.
В следующем примере мы распечатываем адрес используемых нами
диапазонов.
Sub PokazatAdresDiapazona() ' Примечание. Использование подчеркивания позволяет разделить строки кода. With Sheet1 ' Запишите 5 в диапазон A1: A10, используя свойство Cells .Range(.Cells(1, 1), .Cells(10, 1)).Value2 = 5 Debug.Print "Первый адрес: " _ + .Range(.Cells(1, 1), .Cells(10, 1)).Address ' Диапазон B1: Z1 будет выделен жирным шрифтом .Range(.Cells(1, 2), .Cells(1, 26)).Font.Bold = True Debug.Print "Второй адрес : " _ + .Range(.Cells(1, 2), .Cells(1, 26)).Address End With End Sub
В примере я использовал Debug.Print для печати в Immediate Window. Для просмотра этого окна выберите «View» -> «в Immediate Window» (Ctrl + G).
Свойство Offset диапазона
У диапазона есть свойство, которое называется Offset. Термин «Offset» относится к отсчету от исходной позиции. Он часто используется в определенных областях программирования. С помощью свойства «Offset» вы можете получить диапазон ячеек того же размера и на определенном расстоянии от текущего диапазона. Это полезно, потому что иногда вы можете выбрать диапазон на основе определенного условия. Например, на скриншоте ниже есть столбец для каждого дня недели. Учитывая номер дня (т.е. понедельник = 1, вторник = 2 и т.д.). Нам нужно записать значение в правильный столбец.
Сначала мы попытаемся сделать это без использования Offset.
' Это Sub тесты с разными значениями Sub TestSelect() ' Понедельник SetValueSelect 1, 111.21 ' Среда SetValueSelect 3, 456.99 ' Пятница SetValueSelect 5, 432.25 ' Воскресение SetValueSelect 7, 710.17 End Sub ' Записывает значение в столбец на основе дня Public Sub SetValueSelect(lDay As Long, lValue As Currency) Select Case lDay Case 1: Sheet1.Range("H3").Value2 = lValue Case 2: Sheet1.Range("I3").Value2 = lValue Case 3: Sheet1.Range("J3").Value2 = lValue Case 4: Sheet1.Range("K3").Value2 = lValue Case 5: Sheet1.Range("L3").Value2 = lValue Case 6: Sheet1.Range("M3").Value2 = lValue Case 7: Sheet1.Range("N3").Value2 = lValue End Select End Sub
Как видно из примера, нам нужно добавить строку для каждого возможного варианта. Это не идеальная ситуация. Использование свойства Offset обеспечивает более чистое решение.
' Это Sub тесты с разными значениями Sub TestOffset() DayOffSet 1, 111.01 DayOffSet 3, 456.99 DayOffSet 5, 432.25 DayOffSet 7, 710.17 End Sub Public Sub DayOffSet(lDay As Long, lValue As Currency) ' Мы используем значение дня с Offset, чтобы указать правильный столбец Sheet1.Range("G3").Offset(, lDay).Value2 = lValue End Sub
Как видите, это решение намного лучше. Если количество дней увеличилось, нам больше не нужно добавлять код. Чтобы Offset был полезен, должна быть какая-то связь между позициями ячеек. Если столбцы Day в приведенном выше примере были случайными, мы не могли бы использовать Offset. Мы должны были бы использовать первое решение.
Следует иметь в виду, что Offset сохраняет размер диапазона. Итак .Range («A1:A3»).Offset (1,1) возвращает диапазон B2:B4. Ниже приведены еще несколько примеров использования Offset.
Sub IspOffset() ' Запись в В2 - без Offset Sheet1.Range("B2").Offset().Value2 = "Ячейка B2" ' Написать в C2 - 1 столбец справа Sheet1.Range("B2").Offset(, 1).Value2 = "Ячейка C2" ' Написать в B3 - 1 строка вниз Sheet1.Range("B2").Offset(1).Value2 = "Ячейка B3" ' Запись в C3 - 1 столбец справа и 1 строка вниз Sheet1.Range("B2").Offset(1, 1).Value2 = "Ячейка C3" ' Написать в A1 - 1 столбец слева и 1 строка вверх Sheet1.Range("B2").Offset(-1, -1).Value2 = "Ячейка A1" ' Запись в диапазон E3: G13 - 1 столбец справа и 1 строка вниз Sheet1.Range("D2:F12").Offset(1, 1).Value2 = "Ячейки E3:G13" End Sub
Использование диапазона CurrentRegion
CurrentRegion возвращает диапазон всех соседних ячеек в данный диапазон. На скриншоте ниже вы можете увидеть два CurrentRegion. Я добавил границы, чтобы прояснить CurrentRegion.
Строка или столбец пустых ячеек означает конец CurrentRegion.
Вы можете вручную проверить
CurrentRegion в Excel, выбрав диапазон и нажав Ctrl + Shift + *.
Если мы возьмем любой диапазон
ячеек в пределах границы и применим CurrentRegion, мы вернем диапазон ячеек во
всей области.
Например:
Range («B3»). CurrentRegion вернет диапазон B3:D14
Range («D14»). CurrentRegion вернет диапазон B3:D14
Range («C8:C9»). CurrentRegion вернет диапазон B3:D14 и так далее
Как пользоваться
Мы получаем CurrentRegion следующим образом
' CurrentRegion вернет B3:D14 из приведенного выше примера Dim rg As Range Set rg = Sheet1.Range("B3").CurrentRegion
Только чтение строк данных
Прочитать диапазон из второй строки, т.е. пропустить строку заголовка.
' CurrentRegion вернет B3:D14 из приведенного выше примера Dim rg As Range Set rg = Sheet1.Range("B3").CurrentRegion ' Начало в строке 2 - строка после заголовка Dim i As Long For i = 2 To rg.Rows.Count ' текущая строка, столбец 1 диапазона Debug.Print rg.Cells(i, 1).Value2 Next i
Удалить заголовок
Удалить строку заголовка (т.е. первую строку) из диапазона. Например, если диапазон — A1:D4, это возвратит A2:D4
' CurrentRegion вернет B3:D14 из приведенного выше примера Dim rg As Range Set rg = Sheet1.Range("B3").CurrentRegion ' Удалить заголовок Set rg = rg.Resize(rg.Rows.Count - 1).Offset(1) ' Начните со строки 1, так как нет строки заголовка Dim i As Long For i = 1 To rg.Rows.Count ' текущая строка, столбец 1 диапазона Debug.Print rg.Cells(i, 1).Value2 Next i
Использование Rows и Columns в качестве Ranges
Если вы хотите что-то сделать со всей строкой или столбцом,
вы можете использовать свойство «Rows и
Columns» на рабочем листе. Они оба принимают один параметр — номер строки
или столбца, к которому вы хотите получить доступ.
Sub IspRowIColumns() ' Установите размер шрифта столбца B на 9 Sheet1.Columns(2).Font.Size = 9 ' Установите ширину столбцов от D до F Sheet1.Columns("D:F").ColumnWidth = 4 ' Установите размер шрифта строки 5 до 18 Sheet1.Rows(5).Font.Size = 18 End Sub
Использование Range вместо Worksheet
Вы также можете использовать Cella, Rows и Columns, как часть Range, а не как часть Worksheet. У вас может быть особая необходимость в этом, но в противном случае я бы избегал практики. Это делает код более сложным. Простой код — твой друг. Это уменьшает вероятность ошибок.
Код ниже выделит второй столбец диапазона полужирным. Поскольку диапазон имеет только две строки, весь столбец считается B1:B2
Sub IspColumnsVRange() ' Это выделит B1 и B2 жирным шрифтом. Sheet1.Range("A1:C2").Columns(2).Font.Bold = True End Sub
Чтение значений из одной ячейки в другую
В большинстве примеров мы записали значения в ячейку. Мы
делаем это, помещая диапазон слева от знака равенства и значение для размещения
в ячейке справа. Для записи данных из одной ячейки в другую мы делаем то же
самое. Диапазон назначения идет слева, а диапазон источника — справа.
В следующем примере показано, как это сделать:
Sub ChitatZnacheniya() ' Поместите значение из B1 в A1 Sheet1.Range("A1").Value2 = Sheet1.Range("B1").Value2 ' Поместите значение из B3 в лист2 в ячейку A1 Sheet1.Range("A1").Value2 = Sheet2.Range("B3").Value2 ' Поместите значение от B1 в ячейки A1 до A5 Sheet1.Range("A1:A5").Value2 = Sheet1.Range("B1").Value2 ' Вам необходимо использовать свойство «Value», чтобы прочитать несколько ячеек Sheet1.Range("A1:A5").Value2 = Sheet1.Range("B1:B5").Value2 End Sub
Как видно из этого примера, невозможно читать из нескольких ячеек. Если вы хотите сделать это, вы можете использовать функцию копирования Range с параметром Destination.
Sub KopirovatZnacheniya() ' Сохранить диапазон копирования в переменной Dim rgCopy As Range Set rgCopy = Sheet1.Range("B1:B5") ' Используйте это для копирования из более чем одной ячейки rgCopy.Copy Destination:=Sheet1.Range("A1:A5") ' Вы можете вставить в несколько мест назначения rgCopy.Copy Destination:=Sheet1.Range("A1:A5,C2:C6") End Sub
Функция Copy копирует все, включая формат ячеек. Это тот же результат, что и ручное копирование и вставка выделения. Подробнее об этом вы можете узнать в разделе «Копирование и вставка ячеек»
Использование метода Range.Resize
При копировании из одного диапазона в другой с использованием присваивания (т.е. знака равенства) диапазон назначения должен быть того же размера, что и исходный диапазон.
Использование функции Resize позволяет изменить размер
диапазона до заданного количества строк и столбцов.
Например:
Sub ResizePrimeri() ' Печатает А1 Debug.Print Sheet1.Range("A1").Address ' Печатает A1:A2 Debug.Print Sheet1.Range("A1").Resize(2, 1).Address ' Печатает A1:A5 Debug.Print Sheet1.Range("A1").Resize(5, 1).Address ' Печатает A1:D1 Debug.Print Sheet1.Range("A1").Resize(1, 4).Address ' Печатает A1:C3 Debug.Print Sheet1.Range("A1").Resize(3, 3).Address End Sub
Когда мы хотим изменить наш целевой диапазон, мы можем
просто использовать исходный размер диапазона.
Другими словами, мы используем количество строк и столбцов
исходного диапазона в качестве параметров для изменения размера:
Sub Resize() Dim rgSrc As Range, rgDest As Range ' Получить все данные в текущей области Set rgSrc = Sheet1.Range("A1").CurrentRegion ' Получить диапазон назначения Set rgDest = Sheet2.Range("A1") Set rgDest = rgDest.Resize(rgSrc.Rows.Count, rgSrc.Columns.Count) rgDest.Value2 = rgSrc.Value2 End Sub
Мы можем сделать изменение размера в одну строку, если нужно:
Sub Resize2() Dim rgSrc As Range ' Получить все данные в ткущей области Set rgSrc = Sheet1.Range("A1").CurrentRegion With rgSrc Sheet2.Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value2 End With End Sub
Чтение Value в переменные
Мы рассмотрели, как читать из одной клетки в другую. Вы также можете читать из ячейки в переменную. Переменная используется для хранения значений во время работы макроса. Обычно вы делаете это, когда хотите манипулировать данными перед тем, как их записать. Ниже приведен простой пример использования переменной. Как видите, значение элемента справа от равенства записывается в элементе слева от равенства.
Sub IspVar() ' Создайте Dim val As Integer ' Читать число из ячейки val = Sheet1.Range("A1").Value2 ' Добавить 1 к значению val = val + 1 ' Запишите новое значение в ячейку Sheet1.Range("A2").Value2 = val End Sub
Для чтения текста в переменную вы используете переменную
типа String.
Sub IspVarText() ' Объявите переменную типа string Dim sText As String ' Считать значение из ячейки sText = Sheet1.Range("A1").Value2 ' Записать значение в ячейку Sheet1.Range("A2").Value2 = sText End Sub
Вы можете записать переменную в диапазон ячеек. Вы просто
указываете диапазон слева, и значение будет записано во все ячейки диапазона.
Sub VarNeskol() ' Считать значение из ячейки Sheet1.Range("A1:B10").Value2 = 66 End Sub
Вы не можете читать из нескольких ячеек в переменную. Однако
вы можете читать массив, который представляет собой набор переменных. Мы
рассмотрим это в следующем разделе.
Как копировать и вставлять ячейки
Если вы хотите скопировать и вставить диапазон ячеек, вам не
нужно выбирать их. Это распространенная ошибка, допущенная новыми пользователями
VBA.
Вы можете просто скопировать ряд ячеек, как здесь:
Range("A1:B4").Copy Destination:=Range("C5")
При использовании этого метода копируется все — значения,
форматы, формулы и так далее. Если вы хотите скопировать отдельные элементы, вы
можете использовать свойство PasteSpecial
диапазона.
Работает так:
Range("A1:B4").Copy Range("F3").PasteSpecial Paste:=xlPasteValues Range("F3").PasteSpecial Paste:=xlPasteFormats Range("F3").PasteSpecial Paste:=xlPasteFormulas
В следующей таблице приведен полный список всех типов вставок.
Виды вставок |
xlPasteAll |
xlPasteAllExceptBorders |
xlPasteAllMergingConditionalFormats |
xlPasteAllUsingSourceTheme |
xlPasteColumnWidths |
xlPasteComments |
xlPasteFormats |
xlPasteFormulas |
xlPasteFormulasAndNumberFormats |
xlPasteValidation |
xlPasteValues |
xlPasteValuesAndNumberFormats |
Чтение диапазона ячеек в массив
Вы также можете скопировать значения, присвоив значение
одного диапазона другому.
Range("A3:Z3").Value2 = Range("A1:Z1").Value2
Значение диапазона в этом примере считается вариантом массива. Это означает, что вы можете легко читать из диапазона ячеек в массив. Вы также можете писать из массива в диапазон ячеек. Если вы не знакомы с массивами, вы можете проверить их в этой статье.
В следующем коде показан пример использования массива с
диапазоном.
Sub ChitatMassiv() ' Создать динамический массив Dim StudentMarks() As Variant ' Считать 26 значений в массив из первой строки StudentMarks = Range("A1:Z1").Value2 ' Сделайте что-нибудь с массивом здесь ' Запишите 26 значений в третью строку Range("A3:Z3").Value2 = StudentMarks End Sub
Имейте в виду, что массив, созданный для чтения, является
двумерным массивом. Это связано с тем, что электронная таблица хранит значения
в двух измерениях, то есть в строках и столбцах.
Пройти через все клетки в диапазоне
Иногда вам нужно просмотреть каждую ячейку, чтобы проверить значение.
Вы можете сделать это, используя цикл For Each, показанный в следующем коде.
Sub PeremeschatsyaPoYacheikam() ' Пройдите через каждую ячейку в диапазоне Dim rg As Range For Each rg In Sheet1.Range("A1:A10,A20") ' Распечатать адрес ячеек, которые являются отрицательными If rg.Value < 0 Then Debug.Print rg.Address + " Отрицательно." End If Next End Sub
Вы также можете проходить последовательные ячейки, используя
свойство Cells и стандартный цикл For.
Стандартный цикл более гибок в отношении используемого вами
порядка, но он медленнее, чем цикл For Each.
Sub PerehodPoYacheikam() ' Пройдите клетки от А1 до А10 Dim i As Long For i = 1 To 10 ' Распечатать адрес ячеек, которые являются отрицательными If Range("A" & i).Value < 0 Then Debug.Print Range("A" & i).Address + " Отрицательно." End If Next ' Пройдите в обратном порядке, то есть от A10 до A1 For i = 10 To 1 Step -1 ' Распечатать адрес ячеек, которые являются отрицательными If Range("A" & i) < 0 Then Debug.Print Range("A" & i).Address + " Отрицательно." End If Next End Sub
Форматирование ячеек
Иногда вам нужно будет отформатировать ячейки в электронной
таблице. Это на самом деле очень просто. В следующем примере показаны различные
форматы, которые можно добавить в любой диапазон ячеек.
Sub FormatirovanieYacheek() With Sheet1 ' Форматировать шрифт .Range("A1").Font.Bold = True .Range("A1").Font.Underline = True .Range("A1").Font.Color = rgbNavy ' Установите числовой формат до 2 десятичных знаков .Range("B2").NumberFormat = "0.00" ' Установите числовой формат даты .Range("C2").NumberFormat = "dd/mm/yyyy" ' Установите формат чисел на общий .Range("C3").NumberFormat = "Общий" ' Установить числовой формат текста .Range("C4").NumberFormat = "Текст" ' Установите цвет заливки ячейки .Range("B3").Interior.Color = rgbSandyBrown ' Форматировать границы .Range("B4").Borders.LineStyle = xlDash .Range("B4").Borders.Color = rgbBlueViolet End With End Sub
Основные моменты
Ниже приводится краткое изложение основных моментов
- Range возвращает диапазон ячеек
- Cells возвращают только одну клетку
- Вы можете читать из одной ячейки в другую
- Вы можете читать из диапазона ячеек в другой диапазон ячеек.
- Вы можете читать значения из ячеек в переменные и наоборот.
- Вы можете читать значения из диапазонов в массивы и наоборот
- Вы можете использовать цикл For Each или For, чтобы проходить через каждую ячейку в диапазоне.
- Свойства Rows и Columns позволяют вам получить доступ к диапазону ячеек этих типов
Свойства ячейки, часто используемые в коде VBA Excel. Демонстрация свойств ячейки, как структурной единицы объекта Range, на простых примерах.
Объект Range в VBA Excel представляет диапазон ячеек. Он (объект Range) может описывать любой диапазон, начиная от одной ячейки и заканчивая сразу всеми ячейками рабочего листа.
Примеры диапазонов:
- Одна ячейка –
Range("A1")
. - Девять ячеек –
Range("A1:С3")
. - Весь рабочий лист в Excel 2016 –
Range("1:1048576")
.
Для справки: выражение Range("1:1048576")
описывает диапазон с 1 по 1048576 строку, где число 1048576 – это номер последней строки на рабочем листе Excel 2016.
В VBA Excel есть свойство Cells объекта Range, которое позволяет обратиться к одной ячейке в указанном диапазоне (возвращает объект Range в виде одной ячейки). Если в коде используется свойство Cells без указания диапазона, значит оно относится ко всему диапазону активного рабочего листа.
Примеры обращения к одной ячейке:
Cells(1000)
, где 1000 – порядковый номер ячейки на рабочем листе, возвращает ячейку «ALL1».Cells(50, 20)
, где 50 – номер строки рабочего листа, а 20 – номер столбца, возвращает ячейку «T50».Range("A1:C3").Cells(6)
, где «A1:C3» – заданный диапазон, а 6 – порядковый номер ячейки в этом диапазоне, возвращает ячейку «C2».
Для справки: порядковый номер ячейки в диапазоне считается построчно слева направо с перемещением к следующей строке сверху вниз.
Подробнее о том, как обратиться к ячейке, смотрите в статье: Ячейки (обращение, запись, чтение, очистка).
В этой статье мы рассмотрим свойства объекта Range, применимые, в том числе, к диапазону, состоящему из одной ячейки.
Еще надо добавить, что свойства и методы объектов отделяются от объектов точкой, как в третьем примере обращения к одной ячейке: Range("A1:C3").Cells(6)
.
Свойства ячейки (объекта Range)
Свойство | Описание |
---|---|
Address | Возвращает адрес ячейки (диапазона). |
Borders | Возвращает коллекцию Borders, представляющую границы ячейки (диапазона). Подробнее… |
Cells | Возвращает объект Range, представляющий коллекцию всех ячеек заданного диапазона. Указав номер строки и номер столбца или порядковый номер ячейки в диапазоне, мы получаем конкретную ячейку. Подробнее… |
Characters | Возвращает подстроку в размере указанного количества символов из текста, содержащегося в ячейке. Подробнее… |
Column | Возвращает номер столбца ячейки (первого столбца диапазона). Подробнее… |
ColumnWidth | Возвращает или задает ширину ячейки в пунктах (ширину всех столбцов в указанном диапазоне). |
Comment | Возвращает комментарий, связанный с ячейкой (с левой верхней ячейкой диапазона). |
CurrentRegion | Возвращает прямоугольный диапазон, ограниченный пустыми строками и столбцами. Очень полезное свойство для возвращения рабочей таблицы, а также определения номера последней заполненной строки. |
EntireColumn | Возвращает весь столбец (столбцы), в котором содержится ячейка (диапазон). Диапазон может содержаться и в одном столбце, например, Range("A1:A20") . |
EntireRow | Возвращает всю строку (строки), в которой содержится ячейка (диапазон). Диапазон может содержаться и в одной строке, например, Range("A2:H2") . |
Font | Возвращает объект Font, представляющий шрифт указанного объекта. Подробнее о цвете шрифта… |
HorizontalAlignment | Возвращает или задает значение горизонтального выравнивания содержимого ячейки (диапазона). Подробнее… |
Interior | Возвращает объект Interior, представляющий внутреннюю область ячейки (диапазона). Применяется, главным образом, для возвращения или назначения цвета заливки (фона) ячейки (диапазона). Подробнее… |
Name | Возвращает или задает имя ячейки (диапазона). |
NumberFormat | Возвращает или задает код числового формата для ячейки (диапазона). Примеры кодов числовых форматов можно посмотреть, открыв для любой ячейки на рабочем листе Excel диалоговое окно «Формат ячеек», на вкладке «(все форматы)». Свойство NumberFormat диапазона возвращает значение NULL, за исключением тех случаев, когда все ячейки в диапазоне имеют одинаковый числовой формат. Если нужно присвоить ячейке текстовый формат, записывается так: Range("A1").NumberFormat = "@" . Общий формат: Range("A1").NumberFormat = "General" . |
Offset | Возвращает объект Range, смещенный относительно первоначального диапазона на указанное количество строк и столбцов. Подробнее… |
Resize | Изменяет размер первоначального диапазона до указанного количества строк и столбцов. Строки добавляются или удаляются снизу, столбцы – справа. Подробнее… |
Row | Возвращает номер строки ячейки (первой строки диапазона). Подробнее… |
RowHeight | Возвращает или задает высоту ячейки в пунктах (высоту всех строк в указанном диапазоне). |
Text | Возвращает форматированный текст, содержащийся в ячейке. Свойство Text диапазона возвращает значение NULL, за исключением тех случаев, когда все ячейки в диапазоне имеют одинаковое содержимое и один формат. Предназначено только для чтения. Подробнее… |
Value | Возвращает или задает значение ячейки, в том числе с отображением значений в формате Currency и Date. Тип данных Variant. Value является свойством ячейки по умолчанию, поэтому в коде его можно не указывать. |
Value2 | Возвращает или задает значение ячейки. Тип данных Variant. Значения в формате Currency и Date будут отображены в виде чисел с типом данных Double. |
VerticalAlignment | Возвращает или задает значение вертикального выравнивания содержимого ячейки (диапазона). Подробнее… |
В таблице представлены не все свойства объекта Range. С полным списком вы можете ознакомиться не сайте разработчика.
Простые примеры для начинающих
Вы можете скопировать примеры кода VBA Excel в стандартный модуль и запустить их на выполнение. Как создать стандартный модуль и запустить процедуру на выполнение, смотрите в статье VBA Excel. Начинаем программировать с нуля.
Учтите, что в одном программном модуле у всех процедур должны быть разные имена. Если вы уже копировали в модуль подпрограммы с именами Primer1, Primer2 и т.д., удалите их или создайте еще один стандартный модуль.
Форматирование ячеек
Заливка ячейки фоном, изменение высоты строки, запись в ячейки текста, автоподбор ширины столбца, выравнивание текста в ячейке и выделение его цветом, добавление границ к ячейкам, очистка содержимого и форматирования ячеек.
Если вы запустите эту процедуру, информационное окно MsgBox будет прерывать выполнение программы и сообщать о том, что произойдет дальше, после его закрытия.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Sub Primer1() MsgBox «Зальем ячейку A1 зеленым цветом и запишем в ячейку B1 текст: «Ячейка A1 зеленая!»» Range(«A1»).Interior.Color = vbGreen Range(«B1»).Value = «Ячейка A1 зеленая!» MsgBox «Сделаем высоту строки, в которой находится ячейка A2, в 2 раза больше высоты ячейки A1, « _ & «а в ячейку B1 вставим текст: «Наша строка стала в 2 раза выше первой строки!»» Range(«A2»).RowHeight = Range(«A1»).RowHeight * 2 Range(«B2»).Value = «Наша строка стала в 2 раза выше первой строки!» MsgBox «Запишем в ячейку A3 высоту 2 строки, а в ячейку B3 вставим текст: «Такова высота второй строки!»» Range(«A3»).Value = Range(«A2»).RowHeight Range(«B3»).Value = «Такова высота второй строки!» MsgBox «Применим к столбцу, в котором содержится ячейка B1, метод AutoFit для автоподбора ширины» Range(«B1»).EntireColumn.AutoFit MsgBox «Выделим текст в ячейке B2 красным цветом и выровним его по центру (по вертикали)» Range(«B2»).Font.Color = vbRed Range(«B2»).VerticalAlignment = xlCenter MsgBox «Добавим к ячейкам диапазона A1:B3 границы» Range(«A1:B3»).Borders.LineStyle = True MsgBox «Сделаем границы ячеек в диапазоне A1:B3 двойными» Range(«A1:B3»).Borders.LineStyle = xlDouble MsgBox «Очистим ячейки диапазона A1:B3 от заливки, выравнивания, границ и содержимого» Range(«A1:B3»).Clear MsgBox «Присвоим высоте второй строки высоту первой, а ширине второго столбца — ширину первого» Range(«A2»).RowHeight = Range(«A1»).RowHeight Range(«B1»).ColumnWidth = Range(«A1»).ColumnWidth MsgBox «Демонстрация форматирования ячеек закончена!» End Sub |
Вычисления в ячейках (свойство Value)
Запись двух чисел в ячейки, вычисление их произведения, вставка в ячейку формулы, очистка ячеек.
Обратите внимание, что разделителем дробной части у чисел в VBA Excel является точка, а не запятая.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub Primer2() MsgBox «Запишем в ячейку A1 число 25.3, а в ячейку B1 — число 34.42» Range(«A1»).Value = 25.3 Range(«B1»).Value = 34.42 MsgBox «Запишем в ячейку C1 произведение чисел, содержащихся в ячейках A1 и B1» Range(«C1»).Value = Range(«A1»).Value * Range(«B1»).Value MsgBox «Запишем в ячейку D1 формулу, которая перемножает числа в ячейках A1 и B1» Range(«D1»).Value = «=A1*B1» MsgBox «Заменим содержимое ячеек A1 и B1 на числа 6.258 и 54.1, а также активируем ячейку D1» Range(«A1»).Value = 6.258 Range(«B1»).Value = 54.1 Range(«D1»).Activate MsgBox «Мы видим, что в ячейке D1 произведение изменилось, а в строке состояния отображается формула; « _ & «следующим шагом очищаем задействованные ячейки» Range(«A1:D1»).Clear MsgBox «Демонстрация вычислений в ячейках завершена!» End Sub |
Так как свойство Value является свойством ячейки по умолчанию, его можно было нигде не указывать. Попробуйте удалить .Value из всех строк, где оно встречается и запустить код заново.
Различие свойств Text, Value и Value2
Построение с помощью кода VBA Excel таблицы с результатами сравнения того, как свойства Text, Value и Value2 возвращают число, дату и текст.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
Sub Primer3() ‘Присваиваем ячейкам всей таблицы общий формат на тот ‘случай, если формат отдельных ячеек ранее менялся Range(«A1:E4»).NumberFormat = «General» ‘добавляем сетку (границы ячеек) Range(«A1:E4»).Borders.LineStyle = True ‘Создаем строку заголовков Range(«A1») = «Значение» Range(«B1») = «Код формата» ‘формат соседней ячейки в столбце A Range(«C1») = «Свойство Text» Range(«D1») = «Свойство Value» Range(«E1») = «Свойство Value2» ‘Назначаем строке заголовков жирный шрифт Range(«A1:E1»).Font.Bold = True ‘Задаем форматы ячейкам A2, A3 и A4 ‘Ячейка A2 — числовой формат с разделителем триад и двумя знаками после запятой ‘Ячейка A3 — формат даты «ДД.ММ.ГГГГ» ‘Ячейка A4 — текстовый формат Range(«A2»).NumberFormat = «# ##0.00» Range(«A3»).NumberFormat = «dd.mm.yyyy» Range(«A4»).NumberFormat = «@» ‘Заполняем ячейки A2, A3 и A4 значениями Range(«A2») = 2362.4568 Range(«A3») = CDate(«01.01.2021») ‘Функция CDate преобразует текстовый аргумент в формат даты Range(«A4») = «Озеро Байкал» ‘Заполняем ячейки B2, B3 и B4 кодами форматов соседних ячеек в столбце A Range(«B2») = Range(«A2»).NumberFormat Range(«B3») = Range(«A3»).NumberFormat Range(«B4») = Range(«A4»).NumberFormat ‘Присваиваем ячейкам C2-C4 значения свойств Text ячеек A2-A4 Range(«C2») = Range(«A2»).Text Range(«C3») = Range(«A3»).Text Range(«C4») = Range(«A4»).Text ‘Присваиваем ячейкам D2-D4 значения свойств Value ячеек A2-A4 Range(«D2») = Range(«A2»).Value Range(«D3») = Range(«A3»).Value Range(«D4») = Range(«A4»).Value ‘Присваиваем ячейкам E2-E4 значения свойств Value2 ячеек A2-A4 Range(«E2») = Range(«A2»).Value2 Range(«E3») = Range(«A3»).Value2 Range(«E4») = Range(«A4»).Value2 ‘Применяем к таблице автоподбор ширины столбцов Range(«A1:E4»).EntireColumn.AutoFit End Sub |
Результат работы кода:
В таблице наглядно видна разница между свойствами Text, Value и Value2 при применении их к ячейкам с отформатированным числом и датой. Свойство Text еще отличается от Value и Value2 тем, что оно предназначено только для чтения.
Every Excel user is familiar with selecting a range of cells – by SHIFT + Clicking, CTRL + Clicking, or dragging the mouse over a range of cells.
But how does one select a range in VBA? In this article, I’ll guide you on how to select a range of cells and activate a particular cell in that range. I’ll also show you practical examples on how you can do this in your Excel workbooks. For a more in-depth discussion on selecting ranges in VBA, consider taking this course on Visual Basic for MS Excel.
What is Range?
A range, as you might have guessed, refers to a cell or a range of cells. A range can be of three types:
-
One cell (even a single cell selection is called a range)
-
Multiple cells
-
Multiple non-contiguous cells – the same as CTRL + Clicking cells
Every cell selected in the range must be within the same worksheet. As of now, Excel does not support multi-dimensional ranges (i.e. ranges spread over multiple worksheets).
You will use the Range function a lot in your VBA programming since it makes selecting a cell or a range of cells so effortlessly easy.
Syntax
The basic syntax of the VBA range command is as follows:
Range(Cell 1. Cell 2)
Where
Cell 1 (required) = The actual range/cell to be acted on. This should be a specific cell name (“A1”) or a range of cells (“A1: A10”).
Cell 2 (optional) = The top-left or bottom-right of the cell range to be selected.
Range can accept not just cell names and ranges, but also strings:
Range(“SalesVolume”)
This will select cells which have the value of “SalesVolume”.
You can even nest ranges inside each other and select specific strings:
Range(“A1:A20”, Range(“SalesVolume”))
This will refer to all the cells in the range A1:A20 that hold the value “SalesVolume”
To see how it works, let’s take a look at a few examples:
Example 1: Inserting a Value into a Selected Range
Let’s say we want to fill the first ten rows in column A with the value “Hello”. To do this, we will add te following code to our VBA macro:
Worksheets(“Sheet1”).Range(“A1:A10”).Value = “Hello”
Where,
Worksheets(“Sheet1”) = Name of active worksheet
.Range(“A1:A10”) = Range of cells to be selected
.Value = “Hello” = Value to be inserted in the cells
The result:
We can achieve the same result by typing the following:
Worksheets(“Sheet1”).Range(“A1”,”A10”).Value = “Hello”
Note: The ‘Worksheet(“Sheet1”)’ part isn’t really required if you are working with just one sheet, but is a necessity in any multi-sheet workbook.
Confused? Check out this comprehensive course on Excel, macros and VBA and clear your doubts.
Example 2: Inserting a Formula in a Range of Cells
Let’s say we have a range of values in a spreadsheet like this:
(We actually populated this spreadsheet using the .Range method described above).
We can use the following formula to calculate the sum of all these values:
Range(“C1”).Formula = “=sum(A1:B10)”
Notice how we use .Formula instead of .Value.
The result:
Example 3: Changing Formatting in a Range of Cells
The Range function isn’t useful for adding formulas and inserting values alone. It can also be a useful tool for changing the values of specific cells.
Here, we will change the formatting in a range of cells to Bold. This is the original worksheet:
Here’s the formula we’ll use:
And here’s the result:
The important thing to note here is how we’ve used the two cell ranges to select only cells C3:C5. The first cell range (Cells(3,3)) specifies that only cells from the third column are to be selected. If we wanted to select the first column, we would write Cells(1,1).
The second cell range specifies the rows. It goes from the higher cell number to the lower cell number ((5,3) not (3,5)).
Using Excel 2007? This course will get you up to speed on using VBA in Excel 2007.
Example 4: Using the Offset Method
Another way to select a range is to use the Offset method. The basic syntax looks like this:
Range(“A1”).Offset(2,3).Value = 4
This will change the value of the cell two cells below, and three cells to the right of A1 to 4.
Let’s use it in a spreadsheet and see what the result is:
This makes the cell E3 (two cells down, three cells right – offset(2,3)) = 4
The Offset method is particularly useful with variables.
Let’s create a little program that will populate a range of rows and columns with all odd numbers from 1 to 50.
Sub macro_1()
Num = 1
For Row = 0 To 4
For Col = 0 To 4
Range(“A1”).Offset(Row, Col).Value = Num
Num = Num + 2
Next Col
Next Row
End Sub
Here, we’re starting from number 1 and referring to the first five rows and columns (remember that Excel counts from 0, which is inclusive). Instead of specifying a particular row or column, we’ve used two variables with Offset. We’ve also increased the number by 2 within our loop to create a progression.
The end result looks like this:
This example just goes to show how useful the Range command can be.
Besides all these features, you can also use Range to select a particular cell:
Range(“A1”).Select
Or to make a particular cell range active:
Range(“A1:A20”).Activate
You’ll turn to these functions regularly in your VBA programming. To find out more about Range and other similar advanced VBA features, take this foundation course on Excel, macros, and Visual Basic for Applications.
Any tips and tricks on using Range? Let us know in the comments below!
Что такое диапазон в Excel.
Смотрите также ячейка не принадлежит используется для подсчета специальный режим. В его первую ячейку. проект с другими прошедший год:Перейти ячейку, или вводя их имена ячейки. – подсчитывает число.
B11 группе Определенные имена найти быстро нужное таблицу, др.».Диапазон в Excel выделенной области. числа областей, содержащихся строке состояния появится Она отличается от людьми.Как видите, если ячейке.B1:B3 и ссылок наЧтобы значений в столбцеНо, если перед составлением, в которой будет выберите команду Присвоить место в таблице.Как задать диапазон в– это несколькоЕсли выделить несколько ячеек
в переданной ссылке, сообщение: «Расширить выделенный других ячеек цветом
В поле или диапазону, на
Совет:, чтобы выделить диапазон ячейки можно использовать
скопировать значение, формулу на А. Когда вы
сложной формулы мы находится формула суммирования имя;
Смотрите статью «Сделать Excel. ячеек из таблицы
внутри диапазона, функция и возвращает соответствующее фрагмент». И теперь фона.Диапазон
которые ссылается формула, Чтобы быстро найти и из трех ячеек. поле имени. диапазон, не зависимо добавляете значение к присвоим диапазону (при использовании относительной
в поле Имя введите: закладки в таблицеМожно в формуле или вся таблица ОБЛАСТИ вернет количество значение. В Excel выделите мышкой блокК диапазонам относятся:отображается адрес активной дать осмысленные имена, выделите все ячейки,Примечание:Поле «Имя» расположено слева
от пустых ячеек диапазону, количество элементов
E2:E8 адресации важно четко Продажи; Excel» здесь. написать адрес диапазона как один диапазон. выделенных ячеек: областью является одна F2:K5. Как видите,
Несколько ячеек выделенных блоком области, т.е. адрес
то формула станет содержащие определенных типов В поле от строки формул., делаем так. увеличивается. В результате, какое-нибудь имя (например, Цены), фиксировать нахождение активнойв поле Область выберите
Подробнее о том, через двоеточие. А Выделяют диапазон ячеек,
Описанные особенности работы данной ячейка либо интервал в данном режиме (=B5:D8). ячейки или диапазона,
гораздо понятнее.
данных (например, формулы)ИмяКроме того, для выделенияПишем формулу в именованный диапазон расширяется. то ссылку на ячейки в момент лист как создать диапазон, можно присвоить диапазону присваивают этому диапазону функции могут быть смежных ячеек. мы имеем возможностьОдна ячейка (=A2:A2). которые мы выбралиЧтобы присвоить имя ячейке или только ячейки,
невозможно удалить или именованных и неименованных ячейке, у нас,
Нажмите диапазон придется менять создания имени);1сезон как правильно выделить имя и указывать имя
полезны при работе
Пример 1. Вернуть число, выделять стразу несколькоЦелая строка (=18:18) или ранее. При необходимости
или диапазону этим которые удовлетворяют определенным
изменить имена, определенные ячеек и диапазонов
в примере, ячейка
ОКтолько 1 разна вкладке Формулы в(имя будет работать несмежные ячейки, присвоить это имя в-именованный диапазон в Excel с большим количеством соответствующее количеству областей диапазонов. Чтобы вернутся несколько строк (=18:22). данный диапазон можно
способом, проделайте следующие критериям (например, только для ячеек и можно использовать команду L1., а затеми даже не группе Определенные имена только на этом имя диапазону, как
excel-office.ru
Именованный диапазон в MS EXCEL
формуле или искать. Это имя используют таблиц данных. в диапазонах A1:B7, в обычный режимЦелый столбец (=F:F) или перезадать. Для этого действия: видимые ячейки или
диапазонов. Имена можноПерейти=H1+K1Close в формуле, а выберите команду Присвоить листе) или оставьте
быстро найти диапазон, диапазон в диспетчере при работе сФункция находиться в категории C14:E19, D9, Пример2!A4:C6. работы, повторно нажмите несколько столбцов (=F:K). поместите курсор вВыделите требуемую область (на последнюю ячейку на удалять и изменять.Выделяем эту ячейку.(Закрыть). в Диспетчере имен! имя;
значение Книга, чтобы как удалить диапазон, задач, т.д.. таблицей, при поиске, формул «Ссылки иИсходные данные на листе F8.
Несколько несмежных диапазонов (=N5:P8;E18:H25;I5:L22). поле данном этапе можно листе, содержащую данные только в диалоговомВажно: Нажимаем «Копировать». Как
Задача1 (Именованный диапазон с абсолютной адресацией)
Теперь, когда вы добавляете=СУММ(Цены)+СРЗНАЧ(Цены)/5+10/СУММ(Цены)в поле Имя введите: имя было доступно
изменить его, др.,Как указать диапазон в в формулах, т.д. Массивы». Она имеет «Пример1»:
Как выделить большой диапазон
- Целый лист (=1:1048576).Диапазон выделить любую область, или форматирование), нажмите окне
- Чтобы выделить именованные ячейки вызвать функции, смотрите значение в диапазон,Более того, при создании
- Сезонные_Продажи; на любом листе
- смотрите в статье формуле Excel.Ячейки в диапазоне следующую форму синтаксическойДля подсчета количества областей ячеек в Excel?Все выше перечисленные виды, вокруг указанной области в дальнейшем вы кнопку
- Диспетчер имен и диапазоны, необходимо в статье «Функции
- Excel автоматически обновляет
формул EXCEL будетв поле Область выберите книги; «Диапазон в Excel».Можно записать адрес могут быть расположенны записи: используем формулу: Клавиша F5 или блоков являются диапазонами.
появится динамическая граница. сможете ее перезадать).Выделить
(вкладка сначала определить их Excel. Контекстное меню» сумму. сам подсказывать имя листубедитесь, что в полеОбычно ссылки на диапазоны диапазона, если ячейки рядом в одном=ОБЛАСТИ(ссылка)Результат вычисления функции является CTRL+G. В появившемся
Мышкой выделите новую область Мы выделим ячейкувФормулы
Задача2 (Именованный диапазон с относительной адресацией)
имена на листе. тут. В строкеУрок подготовлен для Вас диапазона! Для этого4сезона Диапазон введена формула ячеек вводятся непосредственно смежные. Например, A1: столбце, в однойОписание аргумента: ошибка #ЗНАЧ!, поскольку окне, в полеВыделение диапазонов – это
или укажите эту С3, а затемПерейти к, группа Сведения об именовании адреса ячейки пишем командой сайта office-guru.ru достаточно ввести первую(имя будет работать =’1сезон’!$B$2:$B$10 в формулы, например D2. Значит, в
строке, в нескольких
- ссылка – обязательный для диапазон «Пример2!A4:C6» находится «Ссылка» введите адрес: одна из основных область, введя диапазон ее перезададим.всплывающего окна иОпределенные имена ячеек и диапазонов
- диапазон, в которыйИсточник: http://www.excel-easy.com/examples/dynamic-named-range.html букву его имени. только на этом
- нажмите ОК. =СУММ(А1:А10). Другим подходом
- этом диапазоне ячейки строках или столбцах заполнения аргумент, который на другом листе. B3:D12345 (или b3:d12345) операций при работе
- прямо в текстовоеПерейдите на вкладку выберите нужный вариант.
- ). Дополнительные сведения см.
см. в статье хотим скопировать формулу.Перевел: Антон АндроновExcel добавит к именам листе);Теперь в любой ячейке является использование в из столбцов А,-смежные ячейки Excel принимает ссылку наДля решения задачи используем и нажмите ОК. с Excel. Диапазоны поле. В нашем
ФормулыExcel предлагает несколько способов в статье Определение Определение и использование У нас стоитАвтор: Антон Андронов формул, начинающихся наубедитесь, что в поле листа качестве ссылки имени B, C, D. Здесь в черном одну или несколько формулу с помощью
Таким образом, вы
используют: случае мы выбереми выберите команду присвоить имя ячейке и использование имен имен в формулах. диапазон L1:M8 (т.е.Есть несколько способов эту букву, еще
Использование именованных диапазонов в сложных формулах
Диапазон введена формула1сезон диапазона. В статье первой и второй квадрате выделен диапазон, ячеек из указанного
функции СУММ:
без труда захватилипри заполнении данных; ячейку D2.Присвоить имя или диапазону. Мы в формулах.В поле два столбца). быстро
и имя диапазона! =’4сезона’!B$2:B$10можно написать формулу рассмотрим какие преимущества строки. состоящий из смежных диапазона.Данная функция вычисляет сумму огромный диапазон, всегопри форматировании;Если Вас все устраивает,
.
же в рамкахНа вкладке «ИмяНажимаем «Enter». У насзаполнить диапазон в ExcelДинамический именованный диапазон автоматически
нажмите ОК. в простом и дает использование имени.А можно сделать
excel2.ru
Динамический именованный диапазон в Excel
ячеек.Примечания: полученных значений в
- за пару кликов.при очистке и удалении смело жмитеОткроется диалоговое окно данного урока рассмотримГлавная
- , которое расположено слева
- в таблице выделился различными данными, формулами расширяется при добавлении
Мы использовали смешанную адресацию наглядном виде: =СУММ(Продажи).Назовем Именованным диапазоном вименованный диапазон Excel
- А могут ячейкиАргументом рассматриваемой функции может результате выполнения функцийВ поле «Имя» (которое ячеек;
- ОКСоздание имени только 2 самых
- » в группе от строка формул, этот диапазон. Теперь, т.д
значения в диапазон.
B$2:B$10 (без знака
Будет выведена сумма MS EXCEL, диапазон. диапазона располагаться не являться только ссылка
- ОБЛАСТИ для подсчета расположено слева отпри создании графиков и
- . Имя будет создано.. распространенных, думаю, что
- « выполните одно из из контекстного меню
- .Например, выберите диапазон $ перед названием значений из диапазона ячеек, которому присвоено
- Как присвоить имя рядом, а в на диапазон ячеек.
количества областей в строки формул) задайте диаграмм и т.п.Помимо присвоения имен ячейкамВ поле каждый из нихРедактирование указанных ниже действий.
- нажимаем «Вставить», затемНапример у насA1:A4 столбца). Такая адресацияB2:B10
- Имя (советуем перед диапазону Excel, смотрите разброс по всей Если было передано
диапазонах A1:B7;C14:E19;D9 и диапазон ячеек: B3:D12345
Способы выделения диапазонов:
и диапазонам, иногда
Имя
office-guru.ru
Заполнить быстро диапазон, массив в Excel.
Вам обязательно пригодится.» нажмите кнопкуЧтобы выделить именованную ячейку «Enter». Получилось так. диапазон А1:С800. Еслии присвойте ему позволяет суммировать значения. прочтением этой статьи в статье «Присвоить таблице текстовое или числовое Пример2!A4:C6 соответственно. Результат: (или b3:d12345) иЧтобы выделить диапазон, например
полезно знать, каквведите требуемое имя. Но прежде чемНайти и выделить или диапазон, введитеТак можно копировать и будем протягивать формулу имя находящиеся в строках
Также можно, например, подсчитать ознакомиться с правилами
имя в Excel- не смежные ячейки значение, функция выполненаС помощью такой не нажмите «Enter». A1:B3, нужно навести присвоить имя константе. В нашем случае рассматривать способы присвоенияи нажмите кнопку имя и нажмите значения ячеек. Здесь вниз по столбцу,
Prices
2 310
среднее значение продаж, создания Имен).
ячейке, диапазону, формуле». Excel не будет, Excel хитрой формулы мыСпособ 5 и 6 курсор мышки на Как это сделать это имя имен в Excel,Перейти
клавишу ВВОД. скопировали формулу в удерживая правую мышку.
, в том столбце, записав =СРЗНАЧ(Продажи).Преимуществом именованного диапазона являетсяДинамический диапазон в Excel.. Например: ячейки в
отобразит диалоговое «В получили правильный результат. – это самое ячейку A1 и
Вы можете узнать
Коэффициент обратитесь к этому. Можно также нажатьСовет: нижнюю строку. нажатой, то этоРассчитайте сумму. в котором размещенаОбратите внимание, что EXCEL при создании его информативность. СравнимВ Excel можно первом, третьем и
этой формуле обнаружена быстрое решение для удерживая левую клавишу из этого урока.. В ряде случаев
уроку, чтобы запомнить сочетание клавиш CTRL Кроме того, можно щелкнутьКак заполнить ячейки таблицы
долго и неКогда вы добавляете значение формула суммирования. Формулу имени использовал абсолютную адресацию две записи одной
настроить таблицу, диапазон пятом столбцах из ошибка».Пример 2. Определить количество выделения больших диапазонов. мышки провести курсорИтак, в данном уроке Excel автоматически подставляет несколько простых, но + G на стрелку рядом с
excel-office.ru
Выделение отдельных ячеек или диапазонов
быстро списком, смотрите удобно. Проще сделать к диапазону, Excel суммирования можно разместить $B$1:$B$10. Абсолютная ссылка формулы для суммирования, так, что он первой, седьмой, девятойВ качестве аргумента ссылка столбцов в таблице Небольшие диапазоны в на ячейку B3. Вы узнали, как имя на основе полезных правил по клавиатуре. полем в статье «Заполнить по другому. не обновляет сумму. в любой строке жестко фиксирует диапазон
например, объемов продаж: будет автоматически меняться строки. могут быть переданы и записать это пределах одного экрана Казалось бы, нет присвоить имя ячейке данных в соседних созданию имени.
В спискеИмя
автоматически список вНиже приведенными способамиЧтобы автоматически расширять именованный ниже десятой (иначе суммирования: =СУММ($B$2:$B$10) и =СУММ(Продажи).
при добавлении илиТо есть, любые несколько диапазонов ячеек. значение в ячейку лучше выделять мышкой. ничего проще и или диапазону в ячейках. В нашемДанный способ является самымПерейти
Выделение именованных и неименованных ячеек и диапазонов с помощью поля «Имя»
, чтобы открыть список Excel». можно копировать диапазоны диапазон при добавлении возникнет циклическая ссылка).в какой ячейке на
-
Хотя формулы вернут удалении строк или ячейки в любом Для этого необходимо
A16.Чтобы выделить диапазон нескольких этого достаточно для Excel. Если желаете случае так и быстрым способом присвоитьщелкните имя ячейки именованных ячеек илиВ Excel можно как отдельно по
-
значения, выполните следующиеТеперь введем формулу =СУММ(Сезонные_Продажи) листе Вы бы один и тот столбцов. Например, в месте и количестве. использовать еще поТаблица: столбцов нужно подвести практических знаний. Но получить еще больше произошло. Если Excel имя ячейке или или диапазона, который диапазонов, и выбрать установить формулу быстро столбцам, по стокам,
несколько шагов: в ячейку не написали формулу же результат (если, формуле стоит диапазонДиапазон в Excel нужен одной открывающей иИспользуем формулу ОБЛАСТИ, поочередно
-
курсор мышки на попробуйте таким способом информации об именах, этого не сделал диапазону в Excel. требуется выделить, либо
в нем нужное в большой диапазон, так и поНа вкладкеB11.=СУММ(Продажи) – суммирование конечно, диапазону А1:В21. Если добавим
для того, закрывающей скобки (в выделяя каждый столбец заголовок первого столбца выделить блок B3:D12345. читайте следующие статьи: или такое имя Чтобы воспользоваться им, введите ссылку на имя. не прибегая к диапазону, состоящему изFormulasЗатем, с помощью будет производиться поB2:B10 строку в таблицу,чтобы найти определенные этом случае Excel
Выделение именованных и неименованных ячеек и диапазонов с помощью команды «Перейти»
-
ячейки в качестве и удерживая левуюТеперь щелкните по ячейкеЗнакомство с именами ячеек Вас не устраивает, выполните следующие шаги: ячейку в полеЧтобы выбрать две или копированию. Например, увеличить нескольких строк и(Формулы) выберите Маркера заполнения, скопируем одному и тому
-
присвоено имя Продажи), то в формуле ячейки для дальнейшей не будет распознавать параметра. Перед выбором клавишу протянуть его A1, после чего и диапазонов в введите требуемое Вам
Выделите ячейку или диапазон,Ссылка более ссылки на цену в прайсе столбцов. Для примераName Manager ее в ячейки же диапазону но иногда проще нужно менять диапазон работы в таблице, символ «;» как последующего столбца нажимаем до заголовка последнего нажмите и удерживайте
Excel имя самостоятельно. которым необходимо присвоить. именованные ячейки или на 6%. Как возьмем такой столбец.(Диспетчер имен).С11D11E11B1:B10 работать не напрямую на А1С21. Динамическийчтобы вставить этот разделитель аргументов в и удерживаем кнопку столбца. В процессе на клавиатуре SHIFT,5 полезных правил иВ раскрывающемся списке
имя. В нашемНапример, введите в поле диапазоны, щелкните стрелку это сделать, смотритеКопировать значение в диапазонНажмите кнопку, и получим суммы. с диапазонами, а диапазон сам все диапазон в формулу, функции. Например, результатом Ctrl. Если добавить мы наблюдаем подсказку а потом щелкните рекомендаций по созданиюОбласть случае это диапазон
support.office.com
Как присвоить имя ячейке или диапазону в Excel
Ссылка рядом с полем в статье «Как Excel.Edit продаж в каждомИногда выгодно использовать не с их именами. исправляет. Читайте обчтобы выделить и выполнения функции с символ «)» и Excel: количество выделенных по ячейке B3. имен в ExcelВы можете указать B2:B13.
Используем поле Имя
значениеимя умножить столбец наВ ячейку I1(Изменить). из 4-х сезонов.
- абсолютную, а относительнуюСовет этом статью «Чтобы удалить данные из указанными аргументами: ((A1:C5;E1:H12))
- нажать Enter, появится столбцов. Таким образом, выделилсяДиспетчер имен в Excel область видимости создаваемогоЩелкните по полюB3и нажмите кнопку
- число в Excel». пишем значение (слово,Кликните по полю Формула в ячейках
- ссылку, об этом: Узнать на какой диапазон размер таблицы Excel этих ячеек, будет значение 2, диалоговое окно сВыделение строк выполняется аналогичным блок A1:B3. ДаннуюКак присваивать имена константам имени. Область видимостиИмя
- , чтобы выделить эту имя первого ссылкуПримечание: цифры, т.д.). МыRefers toB11, С11D11E11 ниже.
- ячеек ссылается Имя можно менялся автоматически».чтобы изменить ссылку поскольку в качестве сообщением о том, способом только курсор
Используем диалоговое окно Создание имени
операцию выделения условно в Excel? – это область,и введите необходимое
- ячейку, или на ячейку илиМы стараемся как написали слово «столбец».(Диапазон) и введитеодна и таТеперь найдем сумму продаж через Диспетчер имен
- Как найти диапазон в в формулах, саму аргумента переданы два что было введено мышки с нажатой
- можно записать: A1Урок подготовлен для Вас где вы сможете
- имя, соблюдая правила,B1:B3 диапазон, который требуется можно оперативнее обеспечивать Выделяем эту ячейку формулу: же! товаров в четырех расположенный в меню Excel формулу, диапазона ячеек. слишком много аргументов. левой клавишей нужно потом SHIFT+B3. командой сайта office-guru.ru использовать созданное имя. рассмотренные здесь. Пусть
- , чтобы выделить диапазон выделить. Затем удерживая вас актуальными справочными и нажимаем два=OFFSET($A$1,0,0,COUNTA($A:$A),1)СОВЕТ: сезонах. Данные о Формулы/ Определенные имена/.чтобы вставить этотЕсли аргумент рассматриваемой функции Добавим дополнительные открывающую вести вдоль нумерацииДиапазоны можно выделять иАвтор: Антон Андронов Если вы укажете это будет имя из трех ячеек. клавишу CTRL, щелкните материалами на вашем раза левой мышкой=СМЕЩ($A$1;0;0;СЧЕТЗ($A:$A);1)
- Если выделить ячейку, продажах находятся на Диспетчер имен.Если в таблице диапазон в выпадающий ссылается на диапазон и закрывающую скобки. строк (по вертикали). стрелками клавиатуры. ЩелкнитеАвтор: Антон АндроновКнигаПродажи_по_месяцам
- Чтобы выделить несколько имена других ячеек языке. Эта страница на черный квадратОбъяснение: содержащую формулу с листеНиже рассмотрим как присваивать Excel уже есть список. Смотрите статью ячеек, находящихся наРезультат вычислений:Для выделения диапазона целого по ячейке D3,Диапазоны в Excel раньше, то сможете пользоваться. ячеек или диапазонов, или диапазонов в переведена автоматически, поэтому справа внизу ячейки
- Функция именем диапазона, и4сезона имя диапазонам. Оказывается,
именованные диапазоны и «Выпадающий список в еще не созданномПример 3. Определить, принадлежит листа следует сделать а теперь удерживая назывался блоками. Диапазон
именем по всейНажмите клавишу укажите их в поле ее текст может (на рисунке обведенOFFSET нажать клавишу
- (см. файл примера) что диапазону ячеек нам нужно найти
- Excel». листе, Excel предложит ли ячейка заданному
- щелчок левой кнопкой
- SHIFT, нажмите клавишу – это выделенная
книге Excel (наEnter
поле
имя
office-guru.ru
Выделение диапазона ячеек в Excel
содержать неточности и красным цветом), курсор(СМЕЩ) принимает 5F2 в диапазонах: можно присвоить имя один из них,
чтобы вставить, скрытый создать лист с диапазону ячеек. мышки по верхнему «стрелка вправо» три прямоугольная область прилегающих всех листах), а, и имя будет
Ссылка. грамматические ошибки. Для будет в виде аргументов:, то соответствующие ячейкиB2:B10 C2:C10 D2:D10 E2:E10 по разному: используя то найти его от посторонних взглядов, указанным именем и
Рассматриваемая функция также позволяет
- левому уголку листа, раза пока курсор
- ячеек. Данное определение
- если конкретный лист создано.
- через запятые.Примечание:
- нас важно, чтобы
- черного крестика.
ссылка: будут обведены синей
. Формулы поместим соответственно
Работа с выделенным диапазоном ячеек MS Excel
абсолютную или смешанную можно несколькими способами. текст. Как скрыть сохранить книгу. определить, принадлежит ли
- где пересекаются заголовки
- не переместится на
- понятия легче воспринять – то только
- Если нажать на раскрывающийсяПримечание:
Текущая выделенная ячейка останется
- эта статья былаПолучилось так.$A$1 рамкой (визуальное отображение в ячейках адресацию.Первый способ. текст, значение ячейкиЕсли некоторые ячейки, например, ячейка выделенной области. строк и столбцов. ячейку G3. У на практических примерах.
- в рамках данного список поля В списке выделенной вместе с вам полезна. ПросимМожно вставить цифры., Именованного диапазона).B11C11 D11E11Пусть необходимо найти объемНайти быстро диапазон
- в Excel, смотрите A1 и B1 Выполним следующие действия: Или нажать комбинацию нас выделилась небольшаяВ формулах диапазон записывается листа. Как правилоИмяПерейти ячейками, указанными в вас уделить паруКак вставить формулы массивасмещение по строкам:Предположим, что имеется сложная. продаж товаров (см. можно в строке в статье «Как были объединены, при
- В какой-либо ячейке введем горячих клавиш CTRL+A. строка. Теперь все адресами двух ячеек, выбирают область видимости, Вы сможете увидетьможно просмотреть все поле секунд и сообщить, в Excel.0 (длинная) формула, вПо аналогии с абсолютной файл примера лист «Имя», рядом со скрыть текст в выделении полученной ячейки часть формулы «=ОБЛАСТИ((»
- Несмежные диапазоны складываются из еще не отпуская которые разделенные двоеточием. – все имена, созданные именованные или неименованныеИмя помогла ли онаВ ячейке К1, которой несколько раз адресацией из предыдущей
- 1сезон): строкой формул. ячейке Excel» тут. в строке имен и выделим произвольную нескольких других диапазонов.
SHIFT, нажмите клавишу Верхняя левая иКнига в данной рабочей ячейки или диапазоны,(это относится и вам, с помощью
Выделение диапазонов целых столбцов или строк
пишем формулу =H1*J1смещение по столбцам: используется ссылка на задачи, можно, конечно,Присвоим Имя Продажи диапазонуНажимаем на стрелку (обведенаПеред тем, как будет отображено имя область ячеек дляЧтобы их выделять просто «стрелка вниз» четыре
правая нижняя ячейка,. книге Excel. В которые ранее были к диапазонам). кнопок внизу страницы.
Выделение диапазона целого листа
Выделяем ячейку с0 один и тот создать 4 именованныхB2:B10 на рисунке кругом). присвоить имя диапазону «A1». Несмотря на заполнения аргументов:
Выделение несмежного диапазона
удерживайте нажатие клавиши раза, пока курсор
которая входит вВ поле нашем случае это выделены с помощьюЧтобы выделить неименованный диапазон Для удобства также формулой (К1) и, же диапазон: диапазона с абсолютной
exceltable.com
Примеры использования функции ОБЛАСТИ для диапазонов Excel
. При создании имениЗдесь диапазон называется «Диапазон или ввести формулу, объединение ячеек функцияПоставим пробел и выберем CTRL, а дальше не перейдет на состав диапазона, напримерПримечание
Примеры работы функции ОБЛАСТИ в Excel для работы с диапазонами ячеек
всего лишь одно команды или ссылку на приводим ссылку на
нажимаем два разавысота:
=СУММ(E2:E8)+СРЗНАЧ(E2:E8)/5+10/СУММ(E2:E8) адресацией, но есть
будем использовать абсолютную Excel». настроить формат, т.д., с аргументами ((A1;B1))
любую ячейку из как при обычном G7. Таким образом,
A1:B3.Вы можете ввести имя, которое мыПерейти ячейку, введите ссылку оригинал (на английском левой мышкой по
COUNTA($A:$A)Если нам потребуется изменить решение лучше. С
адресацию.
Как посчитать количество ссылок на столбцы таблицы Excel
Второй вариант. нужно выделить эти все равно вернет данного диапазона: выделении. Также в
мы выделили блок
Обратите внимание! Ячейка, от пояснение к создаваемому только что создали.. Чтобы вернуться к на нужную ячейку языке) . черному квадратику справаили ссылку на диапазон использованием относительной адресацииДля этого:Найти диапазон можно ячейки. О разных значение 2. ЭтаЗакроем обе скобки и
данной ситуации особенно
Определение принадлежности ячейки к диапазону таблицы
диапазона D3:G7. которой начинается выделение имени. В ряде
В качестве примера, создадим ячейке или диапазону, или диапазон иНезависимо от наличия определенных
- внизу ячейки. ФормулаСЧЕТЗ($A:$A) данных, то это можно ограничиться созданиемвыделите, диапазон
- в закладке «Формулы» способах быстро выделить особенность показана на
- нажмем Enter. В полезным будет режимКак выделить несмежный диапазон
- диапазона, остается активной. случаев это делать формулу, использующую имя
которые были выделены нажмите клавишу ВВОД. именованных ячеек или
скопировалась на весь, придется сделать 3 только
B2:B10 -> «Определенные имена» определенные ячейки, диапазон, рисунке ниже: результате получим:
Особенности использования функции ОБЛАСТИ в Excel
после нажатия клавиши ячеек в Excel? Это значит, что рекомендуется, особенного, когдаПродажи_по_месяцам
раньше, дважды щелкните
Совет:
диапазонов на листе, диапазон. Получилось так.ширина: раза. Например, ссылку одногона листе
-> «Диспетчер имен».
- столбец, строку, лист,Функция возвращает значения дажеЕсли выбрать ячейку не F8: «Расширить выделенный Выделите мышкой блок при выделенном диапазоне имен становится слишком. Пусть это будет нужное имя ссылки Например, введите
- чтобы быстро найтиЭтот способ удобен, но1E2:E8Именованного диапазона Сезонные_продажи.1сезонС помощью диапазона т.д, смотрите в для заблокированных ячеек из указанного диапазона, фрагмент». B3:D8. Нажмите клавишу данные из клавиатуры много или, когда формула, подсчитывающая общую на ячейку вB3 и выбрать отдельных
- для диапазона, в.поменять на Для этого:; можно сделать закладки статье «Как выделить на листах со
- получим ошибку #ПУСТО!.Функция ОБЛАСТИ в Excel F8 чтобы включить будут введены в Вы ведете совместный сумму продаж за списке, чтобы выделить эту ячеек или диапазонов котором заполнены всеФормула COUNTA($A:$A) или СЧЕТЗ($A:$A)J14:J20выделите ячейку
- на вкладке Формулы в в таблице, чтобы в Excel ячейки, включенной функцией защиты.
exceltable.com
Данная ошибка означает, что