Excel макрос заполнить столбец

 

leslip

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

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

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

Во вложении пример того в чем нужна помощь в файле

Прикрепленные файлы

  • 12.xlsm (14.82 КБ)

Изменено: leslip04.10.2018 20:32:26

 

Catboyun

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

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

#2

04.10.2018 20:00:57

так нужно?

Код
Sub Макрос9()
' Сочетание клавиш: Ctrl+r

    Range("A1") = "Type"
    Range("A2:A" & Cells(Rows.Count, 2).End(xlUp).Row) = "PCS"
End Sub

Изменено: Catboyun04.10.2018 20:01:47
(перепутал столбец)

 

БМВ

Модератор

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

Excel 2013, 2016

Catboyun, не прокатит. Cells(Rows.Count, 1).End(xlUp).Row ,будет 2
надо или  Cells(Rows.Count, 2).End(xlUp).Row

или Cells(1, 2).End(xlDown).Row  если пропусков нет.

Изменено: БМВ04.10.2018 20:07:45

По вопросам из тем форума, личку не читаю.

 

Catboyun

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

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

#4

04.10.2018 20:07:29

БМВ

, эт просто моя невнимательность

Цитата
Catboyun написал:
Изменено: Catboyun  — 4 Окт 2018 20:01:47 (перепутал столбец)

Изменено: Catboyun04.10.2018 20:09:22

 

leslip

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

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

Catboyun,да! Супер! Спасибо за быстрый ответ!!!!

 

БМВ

Модератор

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

Excel 2013, 2016

#6

04.10.2018 20:10:37

Цитата
Catboyun написал: эт просто моя невнимательность

верю, у самого нередко бывает.

По вопросам из тем форума, личку не читаю.

 

leslip

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

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

#7

04.10.2018 20:16:54

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

Автозаполнение ячеек в заданном диапазоне с помощью метода 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 (Все метки)


Студворк — интернет-сервис помощи студентам

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

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Например:      
6
7
пусто
пусто
пусто
25
26
27
пусто
пусто
38
39
40

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Итог кода:
6
7
8
9
10
25
26
27
11
12
38
39
40



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.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub FillData()
   Dim i As Long, iLastRow As Long, lastVal As Integer, bFlag As Boolean
 
   Application.ScreenUpdating = False
   bFlag = False  ' значение предыдущей ячейки еще не бралось
   With ThisWorkbook.Sheets(1)
      iLastRow = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
      For i = 2 To iLastRow
         If .Cells(i, 1) = "" Then     ' встретили пустую ячейку
            If Not bFlag Then          ' если еще не заполняли предыдущее значение
               lastVal = .Cells(i - 1, 1) + 1   ' то взять из строки выше и прибавить 1
               bFlag = True                     ' и установить флаг
            Else
               lastVal = lastVal + 1   ' значение уже брали, увеличим на 1
            End If
            .Cells(i, 1) = lastVal     ' и запишем в ячейку
         End If
      Next
   End With
   Application.ScreenUpdating = True
End Sub



1



306 / 196 / 40

Регистрация: 29.06.2019

Сообщений: 298

29.05.2022, 20:19

4

ваще не понимаю
почему после 6 7 идут 8 9 10
а после 26 27 идут 11 12.
Кто контролирует этот счётчик?



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

Visual Basic
1
2
3
4
5
6
7
8
Sub ЁЁЁЁЁЁЁЁЁЁЁЁЁЁ()
For R = 2 To Cells(Rows.Count, 1).End(xlUp).Row
  If Cells(R, 1) = "" Then
    If LN = 0 Then LN = Cells(R - 1, 1) + 1 Else LN = LN + 1
    Cells(R, 1) = LN
  End If
Next
End Sub

Ну как вариант тада. От [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,

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub Rblank()
 
Const Addr1 = "C2"      'Первая ячейка с данными
Const nCol = 10         'Количество столбцов
 
Dim R1: R1 = Range(Addr1).Row
Dim C1: C1 = Range(Addr1).Column
Dim RN: RN = Cells(Rows.Count, C1).End(xlUp).Row
Dim i, j
 
For i = C1 To C1 + nCol - 1
    Rx = 0
    For j = R1 To RN
        If Cells(j, i) = "" Then
            If Rx = 0 Then Rx = Cells(j - 1, i) + 1 Else Rx = Rx + 1
            Cells(j, i) = Rx
        End If
    Next
Next
 
End Sub



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

Glass4217

Дата: Среда, 22.05.2019, 06:21 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 55


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Доброго времени суток.
Помогите разобраться с макросом.

Имеется файл «Текстовый файл.txt», где строго построчно записаны текстовые данные.

Как макросом — заполнить столбец H — построчными данными из txt, начиная с того места, где кончаются единицы в столбце F ?
В данном случае заполнение начнется со строки H33.

 

Ответить

RAN

Дата: Среда, 22.05.2019, 10:29 |
Сообщение № 2

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

И почему мне всегда казалось, что фраза

Помогите разобраться с макросом.

предполагает, как минимум, наличие оного?


Быть или не быть, вот в чем загвоздка!

 

Ответить

K-SerJC

Дата: Среда, 22.05.2019, 13:51 |
Сообщение № 3

Группа: Проверенные

Ранг: Обитатель

Сообщений: 487


Репутация:

86

±

Замечаний:
0% ±


Excel 2013


Благими намерениями выстелена дорога в АД.

 

Ответить

Glass4217

Дата: Четверг, 23.05.2019, 07:49 |
Сообщение № 4

Группа: Пользователи

Ранг: Участник

Сообщений: 55


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

K-SerJC, ну вот я по ссылке нашел вот такой код:
[vba]

Код

Sub xx()
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = False
        Open ActiveWorkbook.Path & «8037208.txt» For Input As #1
        With GetObject(«new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}»)
            .SetText Input$(LOF(1), 1)
            .PutInClipboard
        End With
        Close #1
        With [C5:F5]
            Range(.Cells, .End(xlDown)).ClearContents
            .Cells(1).PasteSpecial xlPasteAll
            .Copy
        End With
        .CutCopyMode = 0
        .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1
    End With
End Sub

[/vba]

Так там — не то.

Там — табулированный текст и вставляется он сразу в несколько столбцов.
А у меня — нужно только в один столбец.

Потом еще этот код — не учитывает наличие единиц в столбце F.

 

Ответить

K-SerJC

Дата: Четверг, 23.05.2019, 09:06 |
Сообщение № 5

Группа: Проверенные

Ранг: Обитатель

Сообщений: 487


Репутация:

86

±

Замечаний:
0% ±


Excel 2013

Доброго дня!
ну так вы писали:

Помогите разобраться с макросом

а как вам помочь, если вы ничего не делаете?

так и написали бы что ни будь в стиле: «сделайте пожалуйста мне макрос который сделает то что мне нужно.»

Там — табулированный текст и вставляется он сразу в несколько столбцов.

так попробуйте свой файл поставить и путь(имя) к нему указать
в этой строке:
[vba]

Код

Open ActiveWorkbook.Path & «8037208.txt» For Input As #1

[/vba]
ActiveWorkbook.Path — это директория где лежит ваш файл эксель

а вот тут задаются ячейки после которых сначала удаляются данные с листа, а затем вставляются данные из txt
[vba]

[/vba]


Благими намерениями выстелена дорога в АД.

 

Ответить

Glass4217

Дата: Четверг, 23.05.2019, 10:04 |
Сообщение № 6

Группа: Пользователи

Ранг: Участник

Сообщений: 55


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

K-SerJC, спасибо за ответ.
Теперь макрос выглядит так:
[vba]

Код

Sub xx()
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = False
        Open ActiveWorkbook.Path & «Текстовый файл.txt» For Input As #1
        With GetObject(«new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}»)
            .SetText Input$(LOF(1), 1)
            .PutInClipboard
        End With
        Close #1
        With [H7]
            Range(.Cells, .End(xlDown)).ClearContents
            .Cells(1).PasteSpecial xlPasteAll
            .Copy
        End With
        .CutCopyMode = 0
        .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1
    End With
End Sub

[/vba]

Но этот файл — перед вставкой — удаляет предыдущее содержимое столбца H, хотя этого делать не нужно.
Я спрашивал — как осуществить вставку текста — в столбец H, начиная с последней соответствующей ячейки (где нет 1 столбца F).
То есть это должна сейчас быть — ячейка H33.

Каково ваше мнение — как реализовать эту операцию ?

 

Ответить

K-SerJC

Дата: Четверг, 23.05.2019, 11:15 |
Сообщение № 7

Группа: Проверенные

Ранг: Обитатель

Сообщений: 487


Репутация:

86

±

Замечаний:
0% ±


Excel 2013

То есть это должна сейчас быть — ячейка H33.

Каково ваше мнение — как реализовать эту операцию ?

ну вот так попробуйте заменить
[vba][/vba]
на
[vba]

Код

with Cells(Cells(Rows.Count, 8).End(xlUp).Row,8)

[/vba]


Благими намерениями выстелена дорога в АД.

 

Ответить

RAN

Дата: Четверг, 23.05.2019, 11:27 |
Сообщение № 8

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

[vba]

Код

Sub мяу()
    Open ActiveWorkbook.Path & «8037208.txt» For Input As #1
    spl = Split(Input$(LOF(1), 1), vbNewLine)
    Cells(Rows.Count, «F»).End(xlUp).Offset(1, 2).Resize(UBound(spl)) = spl
    Close #1
End Sub

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

Glass4217

Дата: Четверг, 23.05.2019, 11:41 |
Сообщение № 9

Группа: Пользователи

Ранг: Участник

Сообщений: 55


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

RAN, K-SerJC, теперь все работает. Спасибо за ответы в теме.

 

Ответить

Skip to content

Как быстро заполнить пустые ячейки в Excel?

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

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

Таким образом, мой ответ — «Заполнить». А теперь посмотрим, как это сделать.

  • Как быстро выделить пустые ячейки
  • Заполняем значениями сверху или снизу при помощи формулы
  • Как заменить пустые ячейки нулями либо произвольными значениями
  • Используем простой макрос VBA
  • Как быстро заполнить пустые ячейки не используя формулы.

Есть разные способы решения этой проблемы. Я покажу вам несколько быстрых и один ОЧЕНЬ быстрый способ заполнить пустые ячейки значениями.

Как выделить пустые ячейки на листах Excel.

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

  1. Выберите столбцы или строки, в которых вы хотите заполнить пустоты.

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

  1. Нажмите Ctrl + G или же F5 для отображения диалогового окна “Перейти”.
  2. Щелкните по кнопке «Выделить».
  3. Выберите «Пустые ячейки».

выделяем ячейки без данных

  1. Далее выберите, что будем выделять. Например, формулы, комментарии, константы, пробелы и т. д.
  1. Установите переключатель «Пустые ячейки» и нажмите «ОК».

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

Формула Excel для заполнения пустых ячеек значениями, стоящими выше / ниже

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

  1. Выделите все незаполненные ячейки, как описано выше.
  2. Нажмите F2 или просто поместите курсор в строку формул, чтобы начать писать формулу в активной ячейке.

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

  1. Введите знак равенства (=).
  2. Наведите курсор на ячейку, находящуюся выше или ниже, с помощью клавиши со стрелкой вверх или вниз или просто кликните по ней мышкой.

заполнить пустые ячейки данными  находящимися выше

Формула (=A2) показывает, что A3 получит значение из A2, и будет заполнена предыдущим значением.

  1. Нажмите Ctrl + Enter, чтобы автоматически вставить формулу сразу во все выделенные позиции.

Ну вот! Теперь каждая выделенная ячейка ссылается на ячейку, находящуюся над ней.

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

  1. У вас выделены все ячейки с формулами, которые вы только что ввели и хотите преобразовать.
  2. Нажмите Ctrl + C или же Ctrl + Ins, чтобы копировать формулы и их результаты в буфер обмена.
  3. Нажмите Shift + F10 а потом V, чтобы вставить обратно в выделенные позиции только значения.
    Shift + F10 + V — это самый быстрый способ использовать диалог Excel «Специальная вставка».

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

Что, если вам нужно заполнить все пробелы в таблице нулями, любым другим числом или просто одинаковыми данными? Вот два способа решить эту проблему.

Способ 1.

  1. Выделите пустые ячейки, как мы уже делали.
  2. Нажмите F2 для активации режима редактирования в строке формул. Или просто кликните туда мышкой.
  3. Введите желаемое число или текст.
  4. Нажмите Ctrl + Enter.

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

Способ 2.

  1. Выделите диапазон с пустыми ячейками.
  2. Нажмите Ctrl + H для отображения диалогового окна «Найти и заменить». Или используйте меню.
  3. В этом окне перейдите на вкладку «Заменить».
  4. Оставьте поле «Найти» пустым и введите необходимое значение в текстовое поле «Заменить на».
  5. Щелкните » Заменить все».

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

Заполнение пустых ячеек при помощи макроса 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.

  1. Установите курсор в любую ячейку таблицы, в которой вам нужно заполнить пустые ячейки.
  2. Щелкните значок «Заполнить пустые ячейки (Fill Blank Cells)».

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

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

Если вы хотите заполнить пустые поля значением из ячейки, находящейся выше, выберите параметр «Заполнить ячейки вниз (Fill cells downwards)». Если вы хотите скопировать содержимое из ячейки ниже, выберите в этом же выпадающем списке «Заполнить ячейки вверх (Fill cells upwards)». В нашем случае выбираем заполнение вниз.

  1. Нажмите кнопку Заполнить (Fill).

Готово!  :)

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

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

Проверьте это! Загрузите полнофункциональную пробную версию надстройки Fill Blank Cells и посмотрите, как она может сэкономить вам много времени и сил.

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

Как сделать диаграмму Ганта Думаю, каждый пользователь Excel знает, что такое диаграмма и как ее создать. Однако один вид графиков остается достаточно сложным для многих — это диаграмма Ганта.  В этом кратком руководстве я постараюсь показать основные функции диаграммы Ганта, покажу…
Как сделать автозаполнение в Excel В этой статье рассматривается функция автозаполнения Excel. Вы узнаете, как заполнять ряды чисел, дат и других данных, создавать и использовать настраиваемые списки в Excel. Эта статья также позволяет вам убедиться, что вы знаете все о маркере заполнения,…
Проверка данных в Excel: как сделать, использовать и убрать Мы рассмотрим, как выполнять проверку данных в Excel: создавать правила проверки для чисел, дат или текстовых значений, создавать списки проверки данных, копировать проверку данных в другие ячейки, находить недопустимые записи, исправлять и удалять проверку данных.…
Быстрое удаление пустых столбцов в Excel В этом руководстве вы узнаете, как можно легко удалить пустые столбцы в Excel с помощью макроса, формулы и даже простым нажатием кнопки. Как бы банально это ни звучало, удаление пустых столбцов в Excel не может…
Как полностью или частично зафиксировать ячейку в формуле При написании формулы Excel знак $ в ссылке на ячейку сбивает с толку многих пользователей. Но объяснение очень простое: это всего лишь способ ее зафиксировать. Знак доллара в данном случае служит только одной цели — он указывает,…
Чем отличается абсолютная, относительная и смешанная адресация Важность ссылки на ячейки Excel трудно переоценить. Ссылка включает в себя адрес, из которого вы хотите получить информацию. При этом используются два основных вида адресации – абсолютная и относительная. Они могут применяться в разных комбинациях…
6 способов быстро транспонировать таблицу В этой статье показано, как столбец можно превратить в строку в Excel с помощью функции ТРАНСП, специальной вставки, кода VBA или же специального инструмента. Иначе говоря, мы научимся транспонировать таблицу. В этой статье вы найдете…
4 способа быстро убрать перенос строки в ячейках Excel В этом совете вы найдете 4 совета для удаления символа переноса строки из ячеек Excel. Вы также узнаете, как заменять разрывы строк другими символами. Все решения работают с Excel 2019, 2016, 2013 и более ранними версиями. Перенос…

Понравилась статья? Поделить с друзьями:
  • Excel макрос заполнение данных
  • Excel макрос запись ячеек
  • Excel макрос запись в другой файл
  • Excel макрос записи строки
  • Excel макрос заменить символ