leslip Пользователь Сообщений: 17 |
Добрый вечер. Во вложении пример того в чем нужна помощь в файле Прикрепленные файлы
Изменено: leslip — 04.10.2018 20:32:26 |
Catboyun Пользователь Сообщений: 1631 |
#2 04.10.2018 20:00:57 так нужно?
Изменено: Catboyun — 04.10.2018 20:01:47 |
||
БМВ Модератор Сообщений: 21376 Excel 2013, 2016 |
или Cells(1, 2).End(xlDown).Row если пропусков нет. Изменено: БМВ — 04.10.2018 20:07:45 По вопросам из тем форума, личку не читаю. |
Catboyun Пользователь Сообщений: 1631 |
#4 04.10.2018 20:07:29 БМВ
, эт просто моя невнимательность
Изменено: Catboyun — 04.10.2018 20:09:22 |
||
leslip Пользователь Сообщений: 17 |
Catboyun,да! Супер! Спасибо за быстрый ответ!!!! |
БМВ Модератор Сообщений: 21376 Excel 2013, 2016 |
#6 04.10.2018 20:10:37
верю, у самого нередко бывает. По вопросам из тем форума, личку не читаю. |
||
leslip Пользователь Сообщений: 17 |
#7 04.10.2018 20:16:54 мне подходит и просто вставка значения, это решило проблему, просто я не догадалась, что можно сразу значения вставить |
Автозаполнение ячеек в заданном диапазоне с помощью метода 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 |
ИванМС 0 / 0 / 0 Регистрация: 25.07.2021 Сообщений: 39 |
||||||||
1 |
||||||||
Excel Автозаполнение столбца (по условию)29.05.2022, 19:10. Показов 1108. Ответов 10 Метки vba excel (Все метки)
Здравствуйте,помогите написать макрос,который будет автозаполнять данные столбца по одной предыдущей ячейке,пропуская уже заполненные ячейки. Выполнять заполнение должен только в пустых ячейках.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
29.05.2022, 19:10 |
10 |
306 / 196 / 40 Регистрация: 29.06.2019 Сообщений: 298 |
|
29.05.2022, 19:52 |
2 |
ИванМС, какой номер (буква) столбца?
0 |
Zeag 810 / 465 / 180 Регистрация: 09.03.2009 Сообщений: 1,577 |
||||
29.05.2022, 20:06 |
3 |
|||
Тут на любом столбце можно принцип показать. Пусть столбец 1.
1 |
306 / 196 / 40 Регистрация: 29.06.2019 Сообщений: 298 |
|
29.05.2022, 20:19 |
4 |
ваще не понимаю
0 |
810 / 465 / 180 Регистрация: 09.03.2009 Сообщений: 1,577 |
|
29.05.2022, 20:52 |
5 |
Насколько я понял, начинается с первого значения перед пустой строкой и далее от него пляшем.
1 |
SergioJek 306 / 196 / 40 Регистрация: 29.06.2019 Сообщений: 298 |
||||
29.05.2022, 22:07 |
6 |
|||
Ну как вариант тада. От [A2] идём. Добавлено через 5 минут
1 |
0 / 0 / 0 Регистрация: 25.07.2021 Сообщений: 39 |
|
29.05.2022, 22:53 [ТС] |
7 |
SergioJek, код работает.Можно пожалуйста код сделать,чтобы проходил по 10 столбцам?
0 |
306 / 196 / 40 Регистрация: 29.06.2019 Сообщений: 298 |
|
29.05.2022, 23:01 |
8 |
код сделать,чтобы проходил по 10 столбцам? Откуда и докуда? Я не Ванга. Не могу уследить за ходом ваших мыслей.
1 |
0 / 0 / 0 Регистрация: 25.07.2021 Сообщений: 39 |
|
30.05.2022, 11:12 [ТС] |
9 |
SergioJek, со столбца A по J, с лева на право. А данные в файле такие же и есть. Произвольные числа с пропусками пустых ячеек.
0 |
Angry Old Man 1518 / 396 / 173 Регистрация: 26.03.2022 Сообщений: 737 |
||||
30.05.2022, 15:08 |
10 |
|||
РешениеИспользовал решение SergioJek,
2 |
0 / 0 / 0 Регистрация: 25.07.2021 Сообщений: 39 |
|
02.06.2022, 23:17 [ТС] |
11 |
Спасибо за помощь!
0 |
Макрос: заполнить столбик до конца заполненной таблицы
Автор Екатерина Максимова, 20.09.2016, 16:18
« назад — далее »
Объясняю более подробно. Есть таблица, в которой я сделала дополнительный столбик. В этот столбик я подтягиваю ВПР. Но так как в таблице постоянно меняется количество строчек, то мой макрос сейчас то не до конца протягивает функцию, то наоборот — выходит за пределы таблицы. Можно ли как-то универсально прописать чтобы выделяло до конца заполненной таблицы таблицы(по аналогии с клавишами Ctrl+Shift+стрелочка вниз)? Сильно не ругать — VBA только изучаю.
Dim lLastRow As Long
lLastRow = Cells(Rows.Count,1).End(xlUp).Row 'номер последней заполненной ячейки в первом столбце.
подходит?
Range("A2:A" & lLastRow).Select
Если применяете VBA, то и результат вместо ВПР можно получать в коде.
cheshiki1 ,спасибо но не работает :(возможно я как-то не так его ставлю
vikttur, я это знаю, но опять возникает вопрос — как ВПР вставить в ячейки в границах заполненной таблицы?
Если поможет, то код(та часть что отвечает за впр) у меня сейчас выглядит так:
Sheets(«1»).Select
Range(«C2»).Select
ActiveCell.FormulaR1C1 = «=VLOOKUP(RC[-2],ÂÏÐ!C[-2]:C[-1],2,0)»
Selection.AutoFill Destination:=Range(«C2:C5107»)
Range(«C2:C5107»).Select
Range(«C2»).Select
Selection.Copy
Я Вам предложил вообще не использовать функцию листа.
Файл-пример?
Формула ВПР вставляется в столбик С и до конца заполненной таблицы.
ВПР: (А2,ВПР!А:В,2,0)
Sub RetrievalOfData()
Dim ArrData(), ArrInit()
Dim lRws As Long, lRwsIn As Long
Dim i As Long, k As Long
With Worksheets("ВПР")
lRwsIn = .Cells(.Rows.Count, 1).End(xlUp).Row ' строк в таблице сравнения
If lRwsIn < 2 Then Exit Sub ' нет данных, выход
ArrInit = .Range("A1:B" & lRwsIn).Value ' таблица сравнения в массив
End With
With Worksheets("Просроки ОИВ")
lRws = .Cells(.Rows.Count, 1).End(xlUp).Row ' строк в данных
If lRws < 2 Then Exit Sub ' нет данных, выход
ArrData = .Range("A1:B" & lRws).Value ' данные в массив
ReDim Preserve ArrData(1 To lRws, 1 To 3) ' добавляем столбец для результата поиска
ArrData(1, 3) = .Cells(1, 3).Value
End With
For i = 2 To lRws ' построчно проходим по данным
For k = 2 To lRwsIn ' построчно проходим по таблице сравнения
If ArrData(i, 1) = ArrInit(k, 1) Then ' искомое совпало
ArrData(i, 3) = ArrInit(k, 2) ' записываем результат
Exit For ' выходим (нет смысла просматривать таблицу)
End If
Next k
Next i
' выгружаем данные на лист, отключив обновление экрана
Application.ScreenUpdating = False
Worksheets("Просроки ОИВ").Cells(1, 1).Resize(lRws, 3).Value = ArrData
Application.ScreenUpdating = True
End Sub
Спасибо, работает. А если вкладок в документе несколько?Формула и состав таблиц один и тот же-меняется только название вкладок…когда подставляю этот код мне уже на второй вкладке выдает ошибку в Dim ArrData(), ArrInit().
Макрос должен находиться в общем модуле (см. файл в предыдущем моем сообщении). Этому коду безразлично, с какого листа его запускать. Имена листов указаны в макросе.
With Worksheets("имялиста")
.........
End With
Все, что внутри оператора и начинается точкой, относится к родителю, указанному в операторе.
Если нужно перебрать все листы одним заходом, можно дополнить макрос:
Dim shts As Worksheet
For Each shts In ThisWorkbook.Worksheets
If shts.Name <> "ВПР" Then ' если лист с другим именем
' то поизвести действия для этого листа
End If
Next shts
Но это уже вопрос, выходящий за рамки темы.
Спасибо
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Макрос: заполнить столбик до конца заполненной таблицы
Я записал макрос в Excel, который заполняет столбцы формулами.
Тем не менее, он ограничен диапазоном, который я использовал в моих тестовых данных, то есть он не заполняется до последней строки данных, когда я использую другой (более длинный) набор данных:
ActiveCell.FormulaR1C1 = "Term"
Range("H2").Select
ActiveCell.FormulaR1C1 = "=ROUND((RC[-1]-RC[-2])/30,0)"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H11")
Range("H2:H11").Select
Если вы видите выше, диапазон ограничен H2:H11
— но я хочу, чтобы он автоматически заполнялся до последней строки данных, заполненных в наборе данных. Это можно сделать с помощью проверки, заполнен ли столбец A, но я не могу найти код, который будет работать, — ничего не достаточно просто для меня, чтобы подобрать.
Данные — это 10000 строк с несколькими столбцами, этот конкретный фрагмент макроса заполняет формулу в пустой столбец, но я хочу заполнить только 10 000 строк. В столбце A содержатся данные, так как я могу использовать это, чтобы определить диапазон для автозаполнения формулы вниз?
Я видел другие ответы здесь, относящиеся к превращению данных в таблицу в Excel — но я не хотел бы делать это, поскольку я имею дело с набором данных из 10 000+ строк, и это добавляет много дополнительного форматирования и т.д. ,
Запись в столбец эксель — данных из txt |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
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 и посмотрите, как она может сэкономить вам много времени и сил.
Теперь вы знаете приемы замены пустых ячеек в таблице разными значениями. Я уверен, что вам не составит труда сделать это при помощи любого из рассмотренных способов.