Заполнение ячеек в excel по условию vba

Обновлено: 06.07.2024

В первый раз пишу тему и надеюсь сделаю всё правильно. Поиск использовал, решение начал искать давно, однако ничего не нашёл.

Прелюдия - Записал макрос который переносит данные с одного листа на другой.
Суть проблемы - необходимо перенести одну строчку по условию, в ней очень много столбиков (около 30). Я записал макрос, однако перенос надо сделать по условию и строчек очень много (>1000). Поєтому я попытался создать цикл -

Выкладываю только часть кода, потому что он очень длинный получился и без условия, потому что решил разобраться с проблемой поэтапно.
Вместо координтов в скобках стояла отдельная ячейка, я переправил макрос на то что есть сейчас и он не работает. Компилятор выдаёт ошибку Argument Not optional.

Вариантов else очень много, поєтому скопировал только часть кода. Выдает ошибку Loop without Do (как я понимаю компилятор видит конец цикла но не видит его начало).

О VBA знал раньше но работать начал с ним только позавчера, данные отличны от оригинальных потому что они конфединциальны, надуюсь вы отнесётесь к этому с пониманием, буду рад любой помощи. Спасибо.

В первый раз пишу тему и надеюсь сделаю всё правильно. Поиск использовал, решение начал искать давно, однако ничего не нашёл.

Прелюдия - Записал макрос который переносит данные с одного листа на другой.
Суть проблемы - необходимо перенести одну строчку по условию, в ней очень много столбиков (около 30). Я записал макрос, однако перенос надо сделать по условию и строчек очень много (>1000). Поєтому я попытался создать цикл -

Выкладываю только часть кода, потому что он очень длинный получился и без условия, потому что решил разобраться с проблемой поэтапно.
Вместо координтов в скобках стояла отдельная ячейка, я переправил макрос на то что есть сейчас и он не работает. Компилятор выдаёт ошибку Argument Not optional.

Вариантов else очень много, поєтому скопировал только часть кода. Выдает ошибку Loop without Do (как я понимаю компилятор видит конец цикла но не видит его начало).

О VBA знал раньше но работать начал с ним только позавчера, данные отличны от оригинальных потому что они конфединциальны, надуюсь вы отнесётесь к этому с пониманием, буду рад любой помощи. Спасибо. Treider01

В первый раз пишу тему и надеюсь сделаю всё правильно. Поиск использовал, решение начал искать давно, однако ничего не нашёл.

Прелюдия - Записал макрос который переносит данные с одного листа на другой.
Суть проблемы - необходимо перенести одну строчку по условию, в ней очень много столбиков (около 30). Я записал макрос, однако перенос надо сделать по условию и строчек очень много (>1000). Поєтому я попытался создать цикл -

Выкладываю только часть кода, потому что он очень длинный получился и без условия, потому что решил разобраться с проблемой поэтапно.
Вместо координтов в скобках стояла отдельная ячейка, я переправил макрос на то что есть сейчас и он не работает. Компилятор выдаёт ошибку Argument Not optional.

Вариантов else очень много, поєтому скопировал только часть кода. Выдает ошибку Loop without Do (как я понимаю компилятор видит конец цикла но не видит его начало).

О VBA знал раньше но работать начал с ним только позавчера, данные отличны от оригинальных потому что они конфединциальны, надуюсь вы отнесётесь к этому с пониманием, буду рад любой помощи. Спасибо. Автор - Treider01
Дата добавления - 10.09.2014 в 16:09

Если речь о синтаксисе, то три оператора IF подразумевают три END IF
Если операторов IF много, используйте альтернативные варианты, SELECT CASE, например.
В любом случае нужен файл с примером Если речь о синтаксисе, то три оператора IF подразумевают три END IF
Если операторов IF много, используйте альтернативные варианты, SELECT CASE, например.
В любом случае нужен файл с примером Pelena Если речь о синтаксисе, то три оператора IF подразумевают три END IF
Если операторов IF много, используйте альтернативные варианты, SELECT CASE, например.
В любом случае нужен файл с примером

Спасибо насчёт трёх End if - компилятор на ругается, сейчас буду проверять как работает. Операторов IF около 30 и єто не предел + ещё в двух местах используется ещё больше операторов поэтому альтернативный вариант насчёт SELECT CASE - я попробую его использовать, но так как у меня ещё основная работа много времени отнимает, то я ищу лёгкие и быстрые пути решения.

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

В любом случае спасибо за помощь, одну ошибку уже исправили.

EDIT
Код опять не работает, после проверки появилось окно ошибки с цифрой 400. В итоге компилятор ругается на application-defined or object-defined error. Я попробую сделать файл пример.

Если речь о синтаксисе, то три оператора IF подразумевают три END IF
Если операторов IF много, используйте альтернативные варианты, SELECT CASE, например.
В любом случае нужен файл с примером

Спасибо насчёт трёх End if - компилятор на ругается, сейчас буду проверять как работает. Операторов IF около 30 и єто не предел + ещё в двух местах используется ещё больше операторов поэтому альтернативный вариант насчёт SELECT CASE - я попробую его использовать, но так как у меня ещё основная работа много времени отнимает, то я ищу лёгкие и быстрые пути решения.

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

В любом случае спасибо за помощь, одну ошибку уже исправили.

EDIT
Код опять не работает, после проверки появилось окно ошибки с цифрой 400. В итоге компилятор ругается на application-defined or object-defined error. Я попробую сделать файл пример. Treider01

Если речь о синтаксисе, то три оператора IF подразумевают три END IF
Если операторов IF много, используйте альтернативные варианты, SELECT CASE, например.
В любом случае нужен файл с примером

Спасибо насчёт трёх End if - компилятор на ругается, сейчас буду проверять как работает. Операторов IF около 30 и єто не предел + ещё в двух местах используется ещё больше операторов поэтому альтернативный вариант насчёт SELECT CASE - я попробую его использовать, но так как у меня ещё основная работа много времени отнимает, то я ищу лёгкие и быстрые пути решения.

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

В любом случае спасибо за помощь, одну ошибку уже исправили.

EDIT
Код опять не работает, после проверки появилось окно ошибки с цифрой 400. В итоге компилятор ругается на application-defined or object-defined error. Я попробую сделать файл пример. Автор - Treider01
Дата добавления - 10.09.2014 в 16:35

Вот на общий вопрос Елена и дала Вам исчерпывающий общий ответ
Вот на общий вопрос Елена и дала Вам исчерпывающий общий ответ
Автор - KuklP
Дата добавления - 10.09.2014 в 17:03 Спасибо большое за помощь! А по первому вопросу будут комментарии? Спасибо большое за помощь! А по первому вопросу будут комментарии? Treider01 Если будет хотя бы пример файлика (в соответствии с Правилами) - будут вам и ответы.
Самое интересное, что "макрос переноса" достаточно прост Если будет хотя бы пример файлика (в соответствии с Правилами) - будут вам и ответы.
Самое интересное, что "макрос переноса" достаточно прост AndreTM Если будет хотя бы пример файлика (в соответствии с Правилами) - будут вам и ответы.
Самое интересное, что "макрос переноса" достаточно прост Автор - AndreTM
Дата добавления - 10.09.2014 в 17:41

Наконец прилагаю файл, надеюсь не слишком сложно, старался упростить.
И да у меня английский excel. Надеюсь єто не проблема.
Для меня основное понять, как єто сделать правильно, потому как от работающей программы, в которой я не разбираюсь, толку будет не много.

Спасибо за внимание!

Наконец прилагаю файл, надеюсь не слишком сложно, старался упростить.
И да у меня английский excel. Надеюсь єто не проблема.
Для меня основное понять, как єто сделать правильно, потому как от работающей программы, в которой я не разбираюсь, толку будет не много.

Спасибо за внимание! Treider01

Наконец прилагаю файл, надеюсь не слишком сложно, старался упростить.
И да у меня английский excel. Надеюсь єто не проблема.
Для меня основное понять, как єто сделать правильно, потому как от работающей программы, в которой я не разбираюсь, толку будет не много.

Спасибо за внимание! Автор - Treider01
Дата добавления - 11.09.2014 в 14:18

а макрос-то зачем?
особенно с учётом того, что вы синтаксис знать не хотите
можно всё прекрасно формулами сделать. а макрос-то зачем?
особенно с учётом того, что вы синтаксис знать не хотите
можно всё прекрасно формулами сделать. ikki а макрос-то зачем?
особенно с учётом того, что вы синтаксис знать не хотите
можно всё прекрасно формулами сделать.

Хммм. а где это я такое написал?

Однако отвечаю на ваш вопрос - у экселя ограничения на размер формулы и кол-во логических условий, для обоих вычислений представленных в файле формулы уже занимают два столбца. И это не предел. Я, надеюсь, ответил на ваш вопрос? Кроме того они очень сложны для восприятия и корректировки.

а макрос-то зачем?
особенно с учётом того, что вы синтаксис знать не хотите
можно всё прекрасно формулами сделать.

Хммм. а где это я такое написал?

Однако отвечаю на ваш вопрос - у экселя ограничения на размер формулы и кол-во логических условий, для обоих вычислений представленных в файле формулы уже занимают два столбца. И это не предел. Я, надеюсь, ответил на ваш вопрос? Кроме того они очень сложны для восприятия и корректировки. Treider01

а макрос-то зачем?
особенно с учётом того, что вы синтаксис знать не хотите
можно всё прекрасно формулами сделать.

Хммм. а где это я такое написал?

Однако отвечаю на ваш вопрос - у экселя ограничения на размер формулы и кол-во логических условий, для обоих вычислений представленных в файле формулы уже занимают два столбца. И это не предел. Я, надеюсь, ответил на ваш вопрос? Кроме того они очень сложны для восприятия и корректировки. Автор - Treider01
Дата добавления - 11.09.2014 в 15:13

нет.
в формулах на листах, ссылающихся на лист-источник, не может быть ничего сложного и длинного. нет.
в формулах на листах, ссылающихся на лист-источник, не может быть ничего сложного и длинного. ikki нет.
в формулах на листах, ссылающихся на лист-источник, не может быть ничего сложного и длинного. Автор - ikki
Дата добавления - 11.09.2014 в 15:20 нет.
в формулах на листах, ссылающихся на лист-источник, не может быть ничего сложного и длинного.

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

нет.
в формулах на листах, ссылающихся на лист-источник, не может быть ничего сложного и длинного.

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

нет.
в формулах на листах, ссылающихся на лист-источник, не может быть ничего сложного и длинного.

Да, вы правы, если бы мне надо было ссылаться на данные, то всё возможно, однако мне их надо перенести, простая логика подсказывает что всё не просто так, если мой предыдущий ответ вас не удволетворил, то извините, не буду больше отнимать ваше время, спасибо за уделённое внимание моему вопросу. Автор - Treider01
Дата добавления - 11.09.2014 в 15:28

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

т.к. конкретики в файле не оч.много, а заполненных данных для примера - так и вообще нет, то и ответ носит несколько общий характер.
но комментарии я написал. надеюсь, сможете разобраться.
[vba]

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

т.к. конкретики в файле не оч.много, а заполненных данных для примера - так и вообще нет, то и ответ носит несколько общий характер.
но комментарии я написал. надеюсь, сможете разобраться.
[vba]

т.к. конкретики в файле не оч.много, а заполненных данных для примера - так и вообще нет, то и ответ носит несколько общий характер.
но комментарии я написал. надеюсь, сможете разобраться.
[vba]

[/vba] Автор - ikki
Дата добавления - 11.09.2014 в 15:54

Вы не будете против если я задам несколько вопросов?

По поводу вашего комментария - я думал об этом, однако данные не копируются по порядку, иногда вообще хаотично, поэтому я остановился на этом варианте, с последующим удалением лишних строк по мере их образования, как на самом простом.

Спасибо вам за показанный пример.

Вы не будете против если я задам несколько вопросов?

По поводу вашего комментария - я думал об этом, однако данные не копируются по порядку, иногда вообще хаотично, поэтому я остановился на этом варианте, с последующим удалением лишних строк по мере их образования, как на самом простом.

Спасибо вам за показанный пример. Treider01

Вы не будете против если я задам несколько вопросов?

По поводу вашего комментария - я думал об этом, однако данные не копируются по порядку, иногда вообще хаотично, поэтому я остановился на этом варианте, с последующим удалением лишних строк по мере их образования, как на самом простом.

Спасибо вам за показанный пример. Автор - Treider01
Дата добавления - 11.09.2014 в 16:11

Вы не будете против если я задам несколько вопросов?

а попробуйте! чем чёрт не шутит.

[p.s.]пс. прошу пардону за некоторую кажущуюся мою несерьёзность. этот только кажется. характер такой. на самом деле я ещё более несерьёзный[/p.s.]

Вы не будете против если я задам несколько вопросов?

а попробуйте! чем чёрт не шутит.

[p.s.]пс. прошу пардону за некоторую кажущуюся мою несерьёзность. этот только кажется. характер такой. на самом деле я ещё более несерьёзный[/p.s.] ikki

Вы не будете против если я задам несколько вопросов?

а попробуйте! чем чёрт не шутит.

[p.s.]пс. прошу пардону за некоторую кажущуюся мою несерьёзность. этот только кажется. характер такой. на самом деле я ещё более несерьёзный[/p.s.] Автор - ikki
Дата добавления - 11.09.2014 в 16:17

1)Когда вы обявляете переменные - что значит знак & после каждой переменной?

3)Ещё не могли бы вы обьяснить как построен цикл, потому как такого я нигде не видел.

4) Sheets(4).Cells(j4, "b") - цифра 4 указывает на порядковый номер листа?

Большое спасибо за внимание.

1)Когда вы обявляете переменные - что значит знак & после каждой переменной?

3)Ещё не могли бы вы обьяснить как построен цикл, потому как такого я нигде не видел.

4) Sheets(4).Cells(j4, "b") - цифра 4 указывает на порядковый номер листа?

Большое спасибо за внимание. Treider01

3)Ещё не могли бы вы обьяснить как построен цикл, потому как такого я нигде не видел.

4) Sheets(4).Cells(j4, "b") - цифра 4 указывает на порядковый номер листа?

Большое спасибо за внимание. Автор - Treider01
Дата добавления - 11.09.2014 в 16:34

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

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Заполнение ячейки по условию больше или меньше процентов
Здравствуйте. Помогите написать формулу, пожалуйста. У сотрудника есть план продаж и.

Скопировать значение ячейки из другой таблицы по условию
Есть таблица (приложенный файл). Необходимо значения последнего столбика (L), скопировать в.

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

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

Реализовать то не трудно, но вот что именно нужно сделать не очень понятно.
Нашли текст во втором столбце - что с ним делать? Его копировать в первый столбец? Если нет, то что надо записывать в первый столбец?

т.е должен определять по второму столбцу (по строчке) если яблоко, то в 1ый столбец пишет фрукт.

1-ый столбец (этот столбец заполняется автоматически) 2-ой столбец (этот столбец заполняется руками)
фрукт яблоко
фрукт банан
овощ свекла
ягода малина

Решение

Для этого нужна таблица со всеми овощами, фруктами, ягодами.
Потом можно формулой.

Здравствуйте. Задача примерно такая же.

В поликлинике карты разных категорий пациентов начинаются с определённых цифр. Например, если карта 91/любые цифры - то это всегда пенсионеры и т.д. - см. пример. Нужно, чтобы при написании полного номера карты - принадлежность категории пациента определялась по первым цифрам.

Добрый день.
Подскажите как сделать, чтобы формулы считались только один раз.
Т.е. есть формулы (а так же функции, связи с другими файлами), которые правильно все считаются, но из-за огромного числа записей открытие и сохранение файла очень долгое.
Как я вижу нужен какой-то макрос, который будет срабатывать при открытии документа, смотреть если есть запись в нужной ячейке, то не трогать, или если там пусто, то сделать нужный расчет (запрос, связь с другим листом или прочее), и записать в ячейку результат (т.е. не формула).

Добавлено через 13 минут
добавлю
формул много разных, если будет вопрос о примере, напишите попробую сделать кусочек из файлов.

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


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


Заполнение ячейки частичным содержанием другой
Доброго времени суток! Прошу помочь решить задачу. Необходимо заполнить одну ячейку частичным.

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

Хотя инструмент Мгновенное заполнение (Flash Fill) появился в Excel ещё с 2013-й версии, но почему-то для многих пользователей этот факт остался незамеченным. И совершенно напрасно. Во многих случаях он оказывается проще, легче и быстрее, чем аналогичные решения на формулах или макросах. По моему опыту, на тренингах эта тема вызывает постоянное "вау!" аудитории - независимо от продвинутости и/или усталости слушателей.

Механизм работы этого инструмента прост: если у вас есть один или несколько столбцов с исходными данными и вы начинаете набирать рядом в соседнем столбце их же, но в каком-либо нужном вам измененном виде, то Excel рано или поздно намекнёт, что готов продолжить дальше за вас:

Чтобы выявить логику (шаблон, pattern) преоборазования и запустить эту функцию Excel обычно хватает ввода 1-3 первых результирующих значений вручную. Если предложенный вариант вам подходит, то достаточно нажать Enter - и остаток списка будет доделан моментально.

Если вы уже ввели 2-3 первых значения, а продолжение всё не появляется, то можно форсировать процесс сочетанием клавиш Ctrl + E или использовать кнопку Мгновенное заполнение (Flash Fill) на вкладке Данные (Data) :

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

Извлечение слов из текста и перестановки

Написать формулу, которая извлекает, например, третье слово из текста в ячейке - маленький подвиг. Разобрать фразу по пробелу в разные колонки с помощью Данные - Текст по столбцам (Data - Text to Columns) тоже дело не быстрое. С помощью мгновенного заполнения это делается легко и красиво. Причем, можно попутно менять извлекаемые слова местами, комбинируя их в любом порядке:

Деление текста по регистру

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

Реализовать подобное формулами очень тяжко. Если без мгновенного заполнения, то поможет только макрос.

Склейка текста

Если можно делить, то можно и клеить! Мгновенное заполнение легко соберёт для вас длинную фразу из нескольких фрагментов, перемежая их нужными пробелами, запятыми, союзами или словами:

Извлечение отдельных символов

Обычно для вытаскивания отдельных символов и подстрок в Excel используются функции ЛЕВСИМВ (LEFT) , ПРАВСИМВ (RIGHT) , ПСТР (MID) и им подобные, но мгновенное заполнение с легкостью решает и эту задачу. Классический пример - формирование ФИО:

Извлечение только чисел, текста или дат

Если вы когда-нибудь пытались вытащить только нужный тип данных из буквенно-цифровой каши, то должны понимать всю сложность этой простой, на первый взгляд, задачи. Мгновенное заполнение и тут справляется "на ура", но нужен лёгкий пендель в виде Ctrl + E :

С извлечением текста тоже самое:

Даты - тоже не проблема (даже если они написаны в разных форматах):

Преобразование форматов чисел или дат

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

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

Аналогичным образом можно также правильно представить телефонные номера, добавив код страны и трехзначный префикс оператора (города) в скобках:

Не забудьте сначала поменять формат ячеек в столбце В на текстовый - иначе Excel будет воспринимать значения начинающиеся со знака "+" как формулы.

Преобразование текста (чисел) в дату

Изменение регистра

Если вам достался текст с нЕпрАвИльНЫм рЕгисТроМ, то можно просто намекнуть в соседнем столбце к какому виду вы хотите его преобразовать - и мгновенное заполнение сделает за вас всю работу:

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

Ограничения и нюансы

При использовании в работе мгновенного заполнения следует помнить несколько моментов:

Как известно, для полноценной работы с данными (фильтрации, сортировки, подведения итогов и т.д.) нужен непрерывный список, т.е. таблица без разрывов (пустых строк и ячеек - по возможности). На практике же часто мы имеем как раз таблицы с пропущенными пустыми ячейками - например после копирования результатов сводных таблиц или выгрузок в Excel из внешних программ. Таким образом, возникает необходимость заполнить пустые ячейки таблицы значениями из верхних ячеек, то бишь.

из сделать

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

Способ 1. Без макросов

Выделяем диапазон ячеек в первом столбце, который надо заполнить (в нашем примере, это A1:A12).

Нажимаем клавишу F5 и затем кнопку Выделить (Special) и в появившемся окне выбираем Выделить пустые ячейки (Blanks) :

fill-blanks3.jpg

Не снимая выделения, вводим в первую ячейку знак "равно" и щелкаем по предыдущей ячейке или жмём стрелку вверх (т.е. создаем ссылку на предыдущую ячейку, другими словами):

И, наконец, чтобы ввести эту формулу сразу во все выделенные (пустые) ячейки нажимаем Ctrl + Enter вместо обычного Enter . И все! Просто и красиво.

В качестве завершающего мазка я советовал бы заменить все созданные формулы на значения, ибо при сортировке или добавлении/удалении строк корректность формул может быть нарушена. Выделите все ячейки в первом столбце, скопируйте и тут же вставьте обратно с помощью Специальной вставки (Paste Special) в контекстом меню, выбрав параметр Значения (Values) . Так будет совсем хорошо.

Способ 2. Заполнение пустых ячеек макросом

Если подобную операцию вам приходится делать часто, то имеем смысл сделать для неё отдельный макрос, чтобы не повторять всю вышеперечисленную цепочку действий вручную. Для этого жмём Alt + F11 или кнопку Visual Basic на вкладке Разработчик (Developer) , чтобы открыть редактор VBA, затем вставляем туда новый пустой модуль через меню Insert - Module и копируем или вводим туда вот такой короткий код:

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

Для удобства, можно назначить этому макросу сочетание клавиш или даже поместить его в Личную Книгу Макросов (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) :

Заполнение пустых ячеек в Power Query

Вот и всё :) Осталось готовую таблицу выгрузить обратно на лист Excel командой Главная - Закрыть и загрузить - Закрыть и загрузить в. (Home - Close&Load - Close&Load to. )

В дальнейшем, при изменении исходной таблицы, можно просто обновлять запрос правой кнопкой мыши или на вкладке Данные - Обновить всё (Data - Refresh All) .

Читайте также: