Заполнение пустых ячеек значениями из соседних ячеек
Как известно, для полноценной работы с данными (фильтрации, сортировки, подведения итогов и т.д.) нужен непрерывный список, т.е. таблица без разрывов (пустых строк и ячеек — по возможности). На практике же часто мы имеем как раз таблицы с пропущенными пустыми ячейками — например после копирования результатов сводных таблиц или выгрузок в Excel из внешних программ. Таким образом, возникает необходимость заполнить пустые ячейки таблицы значениями из верхних ячеек, то бишь…
В общем случае, может возникнуть необходимость делать такое заполнение не только вниз, но и вверх, вправо и т.д. Давайте рассмотрим несколько способов реализовать такое.
Способ 1. Без макросов
Выделяем диапазон ячеек в первом столбце, который надо заполнить (в нашем примере, это A1:A12).
Нажимаем клавишу F5 и затем кнопку Выделить (Special) и в появившемся окне выбираем Выделить пустые ячейки (Blanks):
Не снимая выделения, вводим в первую ячейку знак «равно» и щелкаем по предыдущей ячейке или жмём стрелку вверх (т.е. создаем ссылку на предыдущую ячейку, другими словами):
И, наконец, чтобы ввести эту формулу сразу во все выделенные (пустые) ячейки нажимаем Ctrl + Enter вместо обычного Enter. И все! Просто и красиво.
В качестве завершающего мазка я советовал бы заменить все созданные формулы на значения, ибо при сортировке или добавлении/удалении строк корректность формул может быть нарушена. Выделите все ячейки в первом столбце, скопируйте и тут же вставьте обратно с помощью Специальной вставки (Paste Special) в контекстом меню, выбрав параметр Значения (Values). Так будет совсем хорошо.
Способ 2. Заполнение пустых ячеек макросом
Если подобную операцию вам приходится делать часто, то имеем смысл сделать для неё отдельный макрос, чтобы не повторять всю вышеперечисленную цепочку действий вручную. Для этого жмём Alt+F11 или кнопку Visual Basic на вкладке Разработчик (Developer), чтобы открыть редактор VBA, затем вставляем туда новый пустой модуль через меню Insert — Module и копируем или вводим туда вот такой короткий код:
Sub Fill_Blanks() For Each cell In Selection If IsEmpty(cell) Then cell.Value = cell.Offset(-1, 0).Value Next cell End Sub
Как легко можно сообразить, этот макрос проходит в цикле по всем выделенным ячейкам и, если они не пустые, заполняет их значениями из предыдущей ячейки.
Для удобства, можно назначить этому макросу сочетание клавиш или даже поместить его в Личную Книгу Макросов (Personal Macro Workbook), чтобы этот макрос был доступен при работе в любом вашем файле Excel.
Способ 3. Power Query
Power Query — это очень мощная бесплатная надстройка для Excel от Microsoft, которая может делать с данными почти всё, что угодно — в том числе, легко может решить и нашу задачу по заполнению пустых ячеек в таблице. У этого способа два основных преимущества:
- Если данных много, то ручной способ с формулами или макросы могут заметно тормозить. Power Query сделает всё гораздо шустрее.
- При изменении исходных данных достаточно будет просто обновить запрос Power Query. В случае использования первых двух способов — всё делать заново.
Для загрузки нашего диапазона с данными в Power Query ему нужно либо дать имя (через вкладку Формулы — Диспетчер имен), либо превратить в «умную» таблицу командой Главная — Форматировать как таблицу (Home — Format as Table) или сочетанием клавиш Ctrl+T:
После этого на вкладке Данные (Data) нажмем на кнопку Из таблицы / диапазона (From Table/Range). Если у вас Excel 2010-2013 и Power Query установлена как отдельная надстройка, то вкладка будет называться, соответственно, Power Query.
В открывшемся редакторе запросов выделим столбец (или несколько столбцов, удерживая Ctrl) и на вкладке Преобразование выберем команду Заполнить — Заполнить вниз (Transform — Fill — Fill Down):
Вот и всё Осталось готовую таблицу выгрузить обратно на лист Excel командой Главная — Закрыть и загрузить — Закрыть и загрузить в… (Home — Close&Load — Close&Load to…)
В дальнейшем, при изменении исходной таблицы, можно просто обновлять запрос правой кнопкой мыши или на вкладке Данные — Обновить всё (Data — Refresh All).
Ссылки по теме
- Объединение двух столбцов с данными
- Быстрое выделение всех ячеек с формулами или константами
- Быстрое заполнение пустых ячеек макросом из надстройки PLEX
Skip to content
В этой статье вы узнаете, как выбрать сразу все пустые ячейки в электронной таблице Excel и заполнить их значением, находящимся выше или ниже, нулями или же любым другим шаблоном.
Заполнять пустоты или нет? Этот вопрос часто касается пустых ячеек в таблицах Excel. С одной стороны, ваша таблица выглядит аккуратнее и читабельнее, если вы не загромождаете ее повторяющимися значениями. С другой стороны, пустые ячейки могут вызвать проблемы при сортировке, фильтрации данных или создании сводной таблицы. В этом случае вам желательно заполнить все поля.
Таким образом, мой ответ — «Заполнить». А теперь посмотрим, как это сделать.
- Как быстро выделить пустые ячейки
- Заполняем значениями сверху или снизу при помощи формулы
- Как заменить пустые ячейки нулями либо произвольными значениями
- Используем простой макрос VBA
- Как быстро заполнить пустые ячейки не используя формулы.
Есть разные способы решения этой проблемы. Я покажу вам несколько быстрых и один ОЧЕНЬ быстрый способ заполнить пустые ячейки значениями.
Как выделить пустые ячейки на листах Excel.
Перед тем, как заполнить пустоты в таблице Excel, сначала нужно их выделить. Если у вас большая таблица с десятками незаполненных областей, разбросанными по ней, то потребуется много времени, чтобы сделать это вручную. Вот быстрый приём для выбора пустых ячеек.
- Выберите столбцы или строки, в которых вы хотите заполнить пустоты.
- Нажмите
Ctrl + G
или жеF5
для отображения диалогового окна “Перейти”. - Щелкните по кнопке «Выделить».
- Выберите «Пустые ячейки».
- Далее выберите, что будем выделять. Например, формулы, комментарии, константы, пробелы и т. д.
- Установите переключатель «Пустые ячейки» и нажмите «ОК».
Теперь выделены только пустые ячейки из выбранного диапазона, и вы готовы к следующему шагу.
Формула Excel для заполнения пустых ячеек значениями, стоящими выше / ниже
Выбрав пустые ячейки в таблице, вы можете заполнить их значениями, стоящими сверху или снизу, или же просто вставить какое-то определенное содержимое.
Если вы собираетесь заполнить пробелы значением из ближайшей заполненной ячейки выше или ниже, вам нужно ввести очень простую формулу в одну из пустых ячеек. Затем просто скопируйте ее во все остальные. Вот как это сделать.
- Выделите все незаполненные ячейки, как описано выше.
- Нажмите
F2
или просто поместите курсор в строку формул, чтобы начать писать формулу в активной ячейке.
Как видно на скриншоте ниже, активная ячейка – A3, то есть по умолчанию это самая левая верхняя из всех незаполненных.
- Введите знак равенства (=).
- Наведите курсор на ячейку, находящуюся выше или ниже, с помощью клавиши со стрелкой вверх или вниз или просто кликните по ней мышкой.
Формула (=A2) показывает, что A3 получит значение из A2, и будет заполнена предыдущим значением.
- Нажмите
Ctrl + Enter
, чтобы автоматически вставить формулу сразу во все выделенные позиции.
Ну вот! Теперь каждая выделенная ячейка ссылается на ячейку, находящуюся над ней.
Поэтому рекомендую не останавливаться и сразу после ввода формул заменить их на значения. Выполните следующие простые шаги:
- У вас выделены все ячейки с формулами, которые вы только что ввели и хотите преобразовать.
- Нажмите
Ctrl + C
или жеCtrl + Ins
, чтобы копировать формулы и их результаты в буфер обмена. - Нажмите
Shift + F10
а потомV
, чтобы вставить обратно в выделенные позиции только значения.Shift + F10 + V
— это самый быстрый способ использовать диалог Excel «Специальная вставка».
Заполните пустые ячейки нулями или другим определенным значением
Что, если вам нужно заполнить все пробелы в таблице нулями, любым другим числом или просто одинаковыми данными? Вот два способа решить эту проблему.
Способ 1.
- Выделите пустые ячейки, как мы уже делали.
- Нажмите
F2
для активации режима редактирования в строке формул. Или просто кликните туда мышкой. - Введите желаемое число или текст.
- Нажмите
Ctrl + Enter
.
Несколько секунд — и все пустые ячейки одинаково заполнены введенным вами словом, символом либо нулями при необходимости.
Способ 2.
- Выделите диапазон с пустыми ячейками.
- Нажмите
Ctrl + H
для отображения диалогового окна «Найти и заменить». Или используйте меню. - В этом окне перейдите на вкладку «Заменить».
- Оставьте поле «Найти» пустым и введите необходимое значение в текстовое поле «Заменить на».
- Щелкните » Заменить все».
Пустые ячейки будут заполнены значением, которое вы указали.
Заполнение пустых ячеек при помощи макроса VBA.
Если подобную операцию вам приходится делать часто, то имеет смысл создать для неё отдельный макрос, чтобы не повторять всю вышеперечисленную цепочку действий вручную. Для этого жмём Alt+F11 или кнопку Visual Basic на вкладке Разработчик (Developer), чтобы открыть редактор VBA, затем вставляем туда новый пустой модуль через меню Insert – Module. Далее копируем или вводим туда вот такой короткий код:
Sub Fill_Blanks()
For Each cell In Selection
If IsEmpty(cell) Then cell.Value = cell.Offset(-1, 0).Value
Next cell
End Sub
Как легко можно сообразить, этот макрос проходит последовательно по всем выделенным ячейкам и, если они не пустые, то заполняет их значениями из предыдущей ячейки сверху.
Для удобства, можно назначить этому макросу сочетание клавиш или даже поместить его в Личную Книгу Макросов (Personal Macro Workbook), чтобы он был доступен при работе в любом вашем файле Excel.
Какой бы способ вы ни выбрали, заполнение таблицы Excel займет у вас буквально минуту.
Как быстро заполнить пустые ячейки без использования формул.
Если вы не хотите иметь дело с формулами каждый раз, когда заполняете пустоты в вашей таблице, то можете использовать очень полезную надстройку Ultimate Suite для Excel, созданную разработчиками Ablebits. Входящая в неё утилита «Заполнить пустые ячейки» автоматически копирует в пустые клетки таблицы значение из первой заполненной ячейки снизу или сверху. Далее мы рассмотрим, как это работает.
Вот наши данные о продажах в разрезе менеджеров и регионов. Некоторые из продавцов работали в нескольких регионах, сведения об их продажах записаны друг под другом. Также объединены ячейки месяцев. Таблица выглядит достаточно читаемо. Однако, если нужно будет отфильтровать или просуммировать данные по менеджерам, или же найти сумму продаж по региону за определенный месяц, то сделать это будет весьма затруднительно. Этому будут мешать пустые и объединенные ячейки.
Поэтому постараемся привести таблицу к стандартному виду, заполнив все пустоты и разъединив ранее объединенные области.
Перейдите на ленте на вкладку AblebitsTools.
- Установите курсор в любую ячейку таблицы, в которой вам нужно заполнить пустые ячейки.
- Щелкните значок «Заполнить пустые ячейки (Fill Blank Cells)».
На экране появится окно надстройки, в котором перечислены все столбцы и указаны параметры заполнения.
- Снимите отметку со столбцов, в которых нет пустых ячеек.
- Выберите действие из раскрывающегося списка в правом нижнем углу окна.
Если вы хотите заполнить пустые поля значением из ячейки, находящейся выше, выберите параметр «Заполнить ячейки вниз (Fill cells downwards)». Если вы хотите скопировать содержимое из ячейки ниже, выберите в этом же выпадающем списке «Заполнить ячейки вверх (Fill cells upwards)». В нашем случае выбираем заполнение вниз.
- Нажмите кнопку Заполнить (Fill).
Готово!
В отличие от рассмотренных выше способов, здесь пустые ячейки заполнены не одним и тем же значением, а разными, которые гораздо больше подходят для ваших данных. Правильное заполнение этой даже такой небольшой таблицы потребовало бы от вас достаточно существенных затрат времени. А надстройка позволяет это сделать буквально в пару кликов.
Помимо заполнения пустых ячеек, этот инструмент также разделил объединенные ячейки. В таком виде таблица вполне пригодна для фильтрации данных, различных подсчетов, формирования сводной таблицы на ее основе.
Проверьте это! Загрузите полнофункциональную пробную версию надстройки Fill Blank Cells и посмотрите, как она может сэкономить вам много времени и сил.
Теперь вы знаете приемы замены пустых ячеек в таблице разными значениями. Я уверен, что вам не составит труда сделать это при помощи любого из рассмотренных способов.
Автозаполнение ячеек в заданном диапазоне с помощью метода Range.AutoFill. Синтаксис, параметры, примеры автозаполнения из кода VBA Excel.
Определение
Определение метода Range.AutoFill:
AutoFill — это метод объекта Range, который выполняет автозаполнение ячеек в указанном диапазоне.
Синтаксис
Синтаксис метода Range.AutoFill:
Expression.AutoFill (Destination, Type) |
Expression — выражение (переменная), возвращающее объект Range.
Параметры
Параметры метода Range.AutoFill:
Параметр | Описание |
---|---|
Destination | Диапазон ячеек, который необходимо заполнить. В него должен быть включен исходный диапазон (Expression). Обязательный параметр. |
Type | Константа из коллекции XlAutoFillType, задающая тип автозаполнения. Необязательный параметр. |
Константа из коллекции XlAutoFillType указывает, как должен быть заполнен целевой диапазон (Destination) в зависимости от содержимого диапазона исходных данных (Expression). По умолчанию используется константа xlFillDefault (0), когда приложение Excel само определяет значения и форматы, используемые для заполнения целевого диапазона.
Примеры с Range.AutoFill
Примеры автозаполнения целевых диапазонов из кода VBA Excel с помощью метода AutoFill объекта Range.
Пример 1
Автозаполнение указанного диапазона (Destination), состоящего из нескольких строк и столбцов, данными одной ячейки (Expression) в зависимости от ее расположения в целевом диапазоне:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub Primer1() ‘Удаляем границы ячеек, если уже были запуски кода Range(«A1:E20»).Borders.LineStyle = xlNone ‘Ячейка Expression в верхнем левом углу Destination Range(«A1») = 111 Range(«A1»).AutoFill Range(«A1:E5») Range(«A1:E5»).Borders(xlEdgeBottom).LineStyle = True ‘Ячейка Expression в нижнем левом углу Destination Range(«A10») = 222 Range(«A10»).AutoFill Range(«A6:E10») Range(«A6:E10»).Borders(xlEdgeBottom).LineStyle = True ‘Ячейка Expression в верхнем правом углу Destination Range(«E11») = 333 Range(«E11»).AutoFill Range(«A11:E15») Range(«A11:E15»).Borders(xlEdgeBottom).LineStyle = True ‘Ячейка Expression в нижнем правом углу Destination Range(«E20») = «444» Range(«E20»).AutoFill Range(«A16:E20») End Sub |
Целевые диапазоны для наглядности разделены горизонтальными линиями. Ячейка (Expression) может находиться только по углам целевого диапазона (Destination), иначе будет сгенерирована ошибка.
Пример 2
Горизонтальное автозаполнение указанного диапазона (Destination) последовательностью чисел, месяцев и дней недели:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub Primer2() ‘Удаляем границы ячеек, если уже были запуски кода Range(«A1:L4»).Borders.LineStyle = xlNone ‘Автозаполнение строки единицами Range(«A1») = 1 Range(«A1»).AutoFill Range(«A1:L1») Range(«A1:L1»).Borders(xlEdgeBottom).LineStyle = True ‘Автозаполнение строки последовательностью натуральных чисел Range(«A2») = 1 Range(«B2») = 2 Range(«A2:B2»).AutoFill Range(«A2:L2») Range(«A2:L2»).Borders(xlEdgeBottom).LineStyle = True ‘Одновременное заполнение одной строки последовательностью ‘месяцев и второй строки — днями недели Range(«A3») = «Январь» Range(«A4») = «Понедельник» Range(«A3:A4»).AutoFill Range(«A3:L4») End Sub |
Пример 3
Вертикальное автозаполнение указанного диапазона (Destination) последовательностью дат:
Sub Primer3() ‘Автозаполнение столбца датами, начиная с текущей Range(«A1») = Date Range(«A1»).NumberFormat = «DD.MM.YYYY» Range(«A1»).AutoFill Range(«A1:A20») ‘Автозаполнение столбца датами в обратном порядке Range(«B20») = Date Range(«B20»).NumberFormat = «DD.MM.YYYY» Range(«B20»).AutoFill Range(«B1:B20») End Sub |
Что делать, если необходимо заполнить множество диапазонов пустых ячеек значениями, находящимися перед этими диапазонами? Многократно копировать и вставлять долго и утомительно, использовать формулы тоже не выход, так как их нужно точно также копировать и вставлять.
Макрос для быстрого заполнения пустых ячеек
Заполнение пустых ячеек значениями ячеек, предшествующих пустым, можно быстро осуществить при помощи простой процедуры (макроса). Процедура проверяет значения ячеек в выделенном диапазоне и если встречает пустую ячейку, то заполняет её значением предыдущей ячейки.
Ниже приведен программный код макроса, который сэкономит время, сохранит силы и заполнит пустые ячейки предыдущими значениями. Перед запуском макроса необходимо предварительно выделить диапазон ячеек на рабочем листе книги Excel.
Option Explicit Sub ZapolneniePustyhYacheek() 'Процедура заполнения пустых ячеек предыдущим значением в выделенном диапазоне Dim r As Long Dim c As Long c = 2 'номер столбца в котором необходимо заполнить ячейки (здесь необходимо поставить свое значение) For r = Selection.Cells(1).Row To Selection.Cells.Count - 1 If Cells(r + 1, c) = "" Then Cells(r + 1, c).Value = Cells(r, c).Value Next r End Sub
Для того, чтобы перенести этот программный код на свой компьютер, наведите курсор мыши на поле с программным кодом, нажмите на одну из двух кнопкокв правом верхнем углу этого поля, скопируйте программный код и вставьте его в модуль проекта на своем компьютере (подробнее о том, как сохранить программный код макроса).
Надстройка для программного заполнения пустых ячеек
Быстро заполнить пустые ячейки верхними, нижними, правыми или левыми значениями можно также при помощи надстройки для Excel. Надстройка проста в использовании, достаточно лишь выделить диапазон ячеек и способ заполнения пустых ячеек.
надстройка для быстрого заполнения пустых ячеек
Другие материалы по теме:
godofwaaar 0 / 0 / 0 Регистрация: 10.11.2015 Сообщений: 2 |
||||
1 |
||||
23.12.2015, 16:26. Показов 22213. Ответов 3 Метки нет (Все метки)
Ячейки в Excel данным способом почему-то не заполняются. Почему? Как это исправить?
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
23.12.2015, 16:44 |
2 |
|||
Решение
For i = 1 To i = 10 Должно быть
1 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||||||||||||||||||
23.12.2015, 17:39 |
3 |
|||||||||||||||||||
godofwaaar, В Excel эту задачу можно решить и без цикла, например :
P.S. Можно и менее очевидным способом :
или даже так
2 |
0 / 0 / 0 Регистрация: 28.01.2016 Сообщений: 1 |
|
23.01.2020, 10:35 |
4 |
Круто!
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
23.01.2020, 10:35 |
Помогаю со студенческими работами здесь
Заполнение ячеек Макрос на заполнение ячеек Заполнение диапазона ячеек Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 4 |