Не заполняются ячейки в excel
И самое удивительное - если выделить такую ячейку вручную и нажать Delete (или вкладка Главная -группа Редактирование -Очистить содержимое) - то ячейка становится действительно пустой и с ней начинают работать формулы и другие функции Excel как с реально пустой.
Здесь возникает главный вопрос: что с этой ячейкой не так, если там и до Delete ничего не было?
А не так с ней вот что: практически во всех программах есть такое понятие строковых(текстовых) данных, как строка нулевой длины(еще её часто называют нулевая строка. В Visual Basic for Application такая строка обозначается константой vbNullString , в ячейках её можно встретить как сочетание двух кавычек подряд - "" ). Визуально такой текст себя никак не проявляет, однако это все же текст. А любой текст это уже не пусто, но и не число.
Откуда может появится такой текст в ячейках? Здесь несколько вариантов:
- Он есть в ячейках изначально, потому что именно так настроена выгрузка и создание файлов в сторонней программе(вроде 1С). В некоторых случаях такие выгрузки настроены таким образом, что как таковых пустых ячеек нет - они просто заполняются строкой нулевой длины.
- в ячейке была записана формула, результатом которой стал текст нулевой длины. Самый простой пример такой формулы:
=ЕСЛИ( A1 =1;10;"")
=IF(A1=1,10,"")
в итоге, если в ячейке A1 записано любое значение, отличное от 1 формула вернет строку нулевой длины. И если впоследствии формулу заменять значением(Как удалить в ячейке формулу, оставив значения?), то получим нашу псевдо пустую ячейку.
Если формулы создаются Вами и в дальнейшем планируются производить с этими ячейками математические действия, то лучше вместо "" ставить 0. Тогда проблем не будет. Нули всегда можно заменить или скрыть: Файл -Параметры -Дополнительно -Показывать нули в ячейках, которые содержат нулевые значения
А если такой файл делали не Вы - он достался "по наследству" или это выгрузка из другой программы, что делать тогда? Я предлагаю такой вот нехитрый код, который во всех выделенных ячейках заменит строки нулевой длины на нормальные пустые ячейки:
Sub ReplaceNullString() Dim rR As Range, rF As Range, rC As Range Dim avR, lr As Long, lc As Long Set rR = Intersect(ActiveSheet.UsedRange, Selection) On Error Resume Next Set rR = rR.SpecialCells(xlCellTypeConstants) On Error GoTo 0 If rR Is Nothing Then MsgBox "В выделенных ячейках нет значений!", vbInformation, "www.excel-vba.ru" Exit Sub End If Set rF = rR.Find(vbNullString, , xlFormulas, xlWhole) If Not rF Is Nothing Then avR = rR.Value If Not IsArray(avR) Then Redim avR(1 to 1, 1 to 1) avR(1,1) = rR.Value end if For lr = 1 To UBound(avR, 1) For lc = 1 To UBound(avR, 2) If avR(lr, lc) = "" Then rR.Item(lr, lc).Value = Empty Next lc Next lr MsgBox "Строки нулевой длины заменены", vbInformation, "www.excel-vba.ru" Exit Sub End If MsgBox "Строк нулевой длины на листе нет или лист защищен", vbInformation, "www.excel-vba.ru" End Sub
Как это работает:
если раньше никогда не работали с макросами, то рекомендую ознакомиться со статьями:
Что такое макрос и где его искать?
Что такое модуль? Какие бывают модули?
- создаем в книге новый стандартный модуль: Alt+F11 -Insert -Module()
- копируем в созданный модуль приведенный выше код
- выделяем нужный диапазон(если надо заменить на всем листе - то можно выделить все ячейки листа или целиком нужные столбцы - программа сама определить нужные данные)
- нажимаем Alt+F8 и в появившемся окне выбираем ReplaceNullString
Excel не пишет в ячейке? Уберите защиту листа, проверьте правильность ввода данных, разрешите запись напрямую или запретите выполнение макросов. Также проверьте цвет шрифта и отключите Num Lock при наборе цифр. Ниже подробно рассмотрим, в чем могут быть причины подобной неисправности, и как ее решить своими силами.
Причины, почему Excel не пишет
Для начала нужно понимать, почему не пишется в Экселе, и чем может быть обусловлена подобная проблема. Условно выделяется несколько причин:
- лист защищен, из-за чего в ячейке Excel ничего не пишет;
- установлена проверка данных;
- запрещен непосредственный ввод;
- имеется код, который запрещает изменения;
- нажат NumLock;
- установлен белый шрифт и т. д.
Выше рассмотрены главные причины, почему в Эксель не пишет, что позволяет сделать вывод по дальнейшим шагам для исправления проблемы.
Что делать, если Эксель не пишет
Выделяется несколько шагов, как действовать для восстановления работоспособности Excel. Здесь многое зависит от проблемы.
Уберите защиту листа
- Перейдите в раздел «Рецензирование».
- Жмите «Снять защиту с листа».
Для снятия защиты может потребоваться пароль, ведь при его отсутствии могут возникнуть трудности.
Уберите проверку данных
Для обхода такой ошибки необходимо ввести правильный параметр, убрать проверку сведений или копировать другую ячейку и скопировать в ту, в которую не пишет. Наиболее правильный шаг — ввод корректного параметра, ведь при наличии проверки в Excel работают специальные алгоритмы, которые будут некорректно выполнять функции при несоблюдении правила ввода данных.
Чтобы отключить проверку, сделайте следующее:
- Выделите необходимые ячейки.
- Перейдите в раздел «Данные».
- Войдите в «Проверка данных».
- В поле «Тип …» установите «Любое значение».
- Подтвердите действие.
Проверьте возможность ввода сведений напрямую
Наиболее редкой является причина, когда в Эксель не вводятся цифры / буквы из-за запрета редактирования. В таком случае вносить изменения напрямую не получится, но через строку это действие вполне можно реализовать без каких-либо ограничений.
Для решения проблемы Excel нужно проверить ряд настроек. При этом подходы отличаются в зависимости от версии программы, поэтому рассмотрим разные варианты.
В 2003-м Excel сделайте следующее:
- Зайдите в «Сервис» и «Параметры».
- Перейдите в категорию «Правка».
- Поставьте отметку в поле «Правка прямо в ячейке».
Если в вашем распоряжении Эксель 2007, сделайте следующие шаги:
- Кликните на кнопку «Офис».
- Зайдите в «Параметры Excel».
- Войдите в категорию «Дополнительно».
- Установите отметку «Разрешить редактирование в ячейках».
При пользовании 2010-й версией пройдите такие этапы:
- Войдите в «Файл», а после «Параметры».
- Кликните на «Дополнительно».
- Поставьте флажок в поле «Разрешить редактирование в …».
После этого проверьте, пишет что-либо Excel или нет.
Запретите выполнение макросов
Если софт не пишет по этой причине, для обхода защиты запретите выполнение макросов и запустите файл еще раз. Как вариант, перейдите в модуль листа и избавьтесь от всех кодов. Для запрета выполнения макросов нужно перейти в настройки, а сам алгоритм действий зависит от версии программы.
Для 2003-го Excel сделайте следующее:
- Войдите в «Сервис», а после «Безопасность».
- В разделе «Уровень макросов «Высокий» внесите изменения.
В 2007-й версии сделайте следующее:
- Кликните на кнопку «Офис».
- Перейдите в «Центр управления безопасностью».
- Кликните на «Параметры центра управления безопасностью».
- Войдите в «Параметры макросов».
- Жмите на «Отключить все макросы без уведомления».
В Excel 2010 и выше пройдите такие шаги:
- Кликните на Файл и «Параметры».
- Войдите в «Центр управления безопасностью».
- Жмите на «Параметры центра управления безопасностью».
- Перейдите в «Параметры макросов».
- Выберите «Отключить все макросы без уведомления».
После внесения параметров перезапустите Excel и проверьте, пишет что-либо в ячейке или нет. Как только изменения вступили в силу, все должно быть нормально.
Проверьте факт включения NumLock
В ситуации, когда в Экселе не вводятся цифры, причиной может быть включение NumLock, который переводит управление на дополнительное поле. Для решения проблемы просто нажмите кнопку еще раз.
Гляньте на цвет шрифта
Некоторые пользователи жалуются, что Excel не пишет в ячейке. По факту все нормально, но текст / цифры не видно из-за светлого цвета шрифта. Он может сливаться с фоном, из-за чего кажется, что в поле ничего нет. Для решения вопроса просто измените цвет на черный.
Если вы забыли пароль на лист, то можете воспользоваться командой моей надстройки MulTEx - Снять защиту с листа(без пароля). Надстройка платная, но есть ДЕМО период на один месяц, которого должно хватить, чтобы снять защиту с одного листа.
Причина третья - Запрещен ввод напрямую в ячейках
И самая экзотическая причина - редактирование напрямую в ячейках запрещено. Это значит, что редактировать значение ячеек напрямую на листе нельзя, однако через строку формул это действие допускается без проблем и ограничений(при условии, что озвученные выше причины отсутствуют).
Где расположена строка формул:
В таком случае надо проверить следующие настройки:
- для Excel 2003: Сервис -Параметры -вкладка Правка -установить флажок Правка прямо в ячейке
- для Excel 2007: Кнопка Офис -Параметры Excel (Excel Options) -Дополнительно (Advanced) -установить флажок Разрешить редактирование в ячейках (Allow Editing Directly in the Cells)
- для Excel 2010 и выше: Файл (File) -Параметры (Options) -Дополнительно (Advanced) -установить флажок Разрешить редактирование в ячейках (Allow Editing Directly in the Cells)
Private Sub Worksheet_Change(ByVal Target As Range) With Application .EnableEvents = 0 MsgBox "На этом листе запрещено изменять данные ячеек", vbInformation, "www.excel-vba.ru" .Undo .EnableEvents = 1 End With End Sub
- Excel 2003:
Сервис-Безопасность-Уровень макросов "Высокий" - Excel 2007:
Кнопка Офис-Параметры Excel (Excel Options) -Центр управления безопасностью (Trust Centr) -Параметры центра управления безопасностью (Trust Centr Settings) -Параметры макросов (Macro Settings) -Отключить все макросы без уведомления (Disable All Macros without notification) - Excel 2010 и выше:
Файл (File) -Параметры (Options) -Центр управления безопасностью (Trust Centr) -Параметры центра управления безопасностью (Trust Centr Settings) -Параметры макросов (Macro Settings) -Отключить все макросы без уведомления (Disable All Macros without notification)
После изменения параметров безопасности макросов необходимо перезапустить приложение Excel: закрыть его полностью и открыть заново. Только после этого изменения вступят в силу.
О том, что такое модуль листа и где его искать можно прочитать в статье: Что такое модуль? Какие бывают модули?
Причина пятая - мы где-то про что-то забыли
А это уже скорее некий перечень действий, которые тоже не мешает проверить.
Не протягивается нумерация в Excel? Используйте один из доступных способов для автоматической установки цифр, воспользуйтесь приложением Access, попробуйте раскрыть строчки путем выделения с последующим нажатием правой кнопки мышки по заголовкам слева и выбором пункта «Показать». Ниже подробно рассмотрим, как действовать при появлении такой ошибки, и как правильно выполнить работу.
Причины
Для понимания причин, почему в Эксель не протягивается нумерация, необходимо знать особенности этого процесса. В отличие от другого софта Майкрософт Офис, здесь не предусмотрено кнопки автоматического проставления цифр. Но по желанию можно с легкостью добавить последовательные числа в строки данных посредством перетаскивания маркера или с применением функции «Строка».
Что делать
В ситуации, когда в Экселе не протягивается нумерация, убедитесь в правильности выполнения работы. Воспользуйтесь одним из следующих методов, позволяющих автоматически установить номера.
- Выделите 1-ю ячейку в диапазоне, требующем заполнения.
- Укажите стартовое значение будущей последовательности.
- Введите параметр в следующей ячейке для задания образца заполнения. К примеру, если нужна последовательность от 1 и далее, введите в первые ячейки цифры 1 и 2. Если нужна другая последовательность, к примеру, 3, 6, 9, 12 и т. д, ведите 3 и 6.
- Выделите ячейки, в которых проставлена начальная нумерация. В более старом Эксель предусмотрена кнопа «Быстрый анализ». Она показывается по умолчанию, если выбрать больше одной ячейки с информацией.
- Попробуйте, протягивается ли маркер заполнения — переместите его в диапазон, требующий заполнения. По мере продвижения маркера Excel отображает предварительный параметр. Для изменения образца переместите маркер заполнения, зафиксировав нажатой правую клавишу, и после выберите образец.
Для введения нумерации в Excel по возрастанию передвиньте маркер вниз или в правую сторону, а по убыванию — вверх и в левую сторону. В случае, если маркера заполнения нет, сначала отобразите его. Для этого войдите в раздел «Параметры» и «Дополнительно». Там найдите пункт «Параметры правки» и установите отметку «Разрешить маркеры заполнения и перетаскивания ячеек».
Если нумерация протягивается в Excel, все сделано правильно. Но учтите, что в случае добавления, смещения или удаления строчек числа не обновляются. Обновление последовательной нумерации можно проводить вручную путем выбора двух чисел в правильной последовательности и перетащив маркер заполнения к концу перечня.
- Найдите первую ячейку для нумерации Excel, которая требует нумеровку, и введите =Строка(А1). Эта функция возвращает номер в строчку, где находится ссылка. В приведенном примере будет стоять 1.
- Переместите маркер заполнения и захватите диапазон, требующий заполнения. Если его не видно, отобразите по рассмотренному выше принципу.
Если Эксель не протягивает числа, рассмотренный выше метод часто выручает. При этом обновление цифр происходит при сортировке. Если же добавлять, смещать или удалять строчки, происходит прерывание последовательности. В ситуации, когда нумерация Excel не протягивается, ее можно обновить самостоятельно путем выбора двух цифр в правильной последовательности и перемещения маркера в конец списка.
В случае применения опции «Строка» нумерация в Excel протягивается автоматически. Если же нужно, чтобы цифры добавлялись сами при внесении дополнительных строк, выполните преобразование данных в таблицу Эксель. При этом все строчки, добавленные в конец, будут нумероваться.
Если нужно ввести определенные коды, к примеру, для заказов, используйте функции «Строка» и «Текст». К примеру, для указания 00-01 введите =Текст(Строка (А1), «00-00» в 1-й ячейке диапазона и переместите маркер в конец списка. После этого проверьте, протягивается нумерация Excel или нет.
- Выделите 1-ю ячейку и поставьте в ней «1».
- Жмите на «Заполнить», что находится в панели инструментов.
- Выберите пункт «Прогрессия» из списка.
- В появившемся окне необходимо задать все необходимые параметры. Ставьте расположение «по столбцам», а тип — «арифметическая» с шагом «1». Граничное значение укажите равное строчкам, которые требуют нумеровки.
Какие есть альтернативы
Если Эксель не протягивает нумерацию, можно воспользоваться альтернативными решениями:
- Используйте приложение Access для импортирования данных Excel в базу приложения. Здесь можно создать поле, отличающееся способностью генерировать уникальный номер в случае добавления в таблицу новой записи.
- Исправьте проблему, связанную со скрытыми строками. Выделите нужные строчки, в которых не протягивается нумерация в Excel, жмите правой кнопкой мышки по заголовкам с левой стороны и выберите пункт «Показать».
- Попробуйте перезагрузить компьютер, перезайти в приложение Excel или переустановить его. Этот метод подходит, если причиной проблемы был какой-то временный и несущественный баг.
Мало кому понравится долго и монотонно вводить одинаковые или однотипные данные в таблицу. Это довольно скучная работа, забирающая большое количество времени. В программе Excel имеется возможность автоматизировать ввод таких данных. Для этого предусмотрена функция автозаполнения ячеек. Посмотрим, как она работает.
Работа автозаполнения в Эксель
Автозаполнение в Microsoft Excel осуществляется с помощью специального маркера заполнения. Для того, чтобы вызвать этот инструмент нужно навести курсор на нижний правый край любой ячейки. Появится небольшой черный крестик. Это и есть маркер заполнения. Нужно просто зажать левую кнопку мыши и потянуть в ту сторону листа, где вы хотите заполнить ячейки.
То, как будут заполняться ячейки, уже зависит от того типа данных, который находится в исходной ячейке. Например, если там будет обычный текст в виде слов, то при перетягивании с помощью маркера заполнения производится его копирование в другие ячейки листа.
Автозаполнение ячеек числами
Чаще всего автозаполнение используется для ввода большого массива чисел, которые следуют по порядку. Например, в определенной ячейке стоит цифра 1, а нам нужно пронумеровать ячейки от 1 до 100.
-
Активируем маркер заполнения и проводим им вниз на необходимое количество ячеек.
Как видим, после этого весь нужный диапазон заполнился числами по порядку.
Но можно сделать ещё проще. Вам не нужно будет вызывать параметры автозаполнения. Для этого, когда тянете маркер заполнения вниз, то кроме зажатой левой кнопки мыши, нужно зажать ещё кнопку Ctrl на клавиатуре. После этого, заполнение ячеек числами по порядку происходит сразу же.
Существует также способ сделать автозаполнения ряда прогрессии.
-
Вносим в соседние ячейки два первых числа прогрессии.
Инструмент «Заполнить»
В программе Excel есть также отдельный инструмент, которые называется «Заполнить». Расположен он на ленте во вкладке «Главная» в блоке инструментов «Редактирование».
- Заносим данные в любую ячейку, а затем выделяем её и диапазон ячеек, который собираемся заполнить.
С помощью данного инструмента можно также заполнить ячейки прогрессией.
-
Заносим число в ячейку и выделяем диапазон ячеек, который будет заполняться данными. Жмем на кнопку «Заполнить», а в появившемся списке выбираем пункт «Прогрессия».
- выбрать расположение прогрессии (по столбцам или по строкам);
- тип (геометрическая, арифметическая, даты, автозаполнение);
- установить шаг (по умолчанию он равен 1);
- установить предельное значение (необязательный параметр).
Кроме того, в отдельных случаях, устанавливаются единицы измерения.
Когда все настройки внесены, жмем на кнопку «OK».
Автозаполнение формулами
Одним из основных инструментов Excel являются формулы. При наличии в таблице большого числа одинаковых формул можно также воспользоваться функцией автозаполнения. Суть не меняется. Нужно тем же способом маркера заполнения скопировать формулу в другие ячейки. При этом, если в формуле содержатся ссылки на другие ячейки, то по умолчанию при копировании таким способом координаты их меняются по принципу относительности. Поэтому, такие ссылки называют относительными.
Если вы хотите, чтобы при автозаполнении адреса стали фиксированными, то нужно в исходной ячейке перед координатами строк и столбцов поставить знак доллара. Такие ссылки называются абсолютными. Затем, производится обычная процедура автозаполнения с помощью маркера заполнения. Во всех заполненных таким способом ячейках формула будет абсолютно неизменная.
Урок: Абсолютные и относительные ссылки в Excel
Автозаполнение другими значениями
Кроме того, в программе Excel предусмотрено автозаполнение другими значениями по порядку. Например, если вы введете какую-нибудь дату, а затем, воспользовавшись маркером заполнения, выделите другие ячейки, то весь выбранный диапазон окажется заполненный датами в строгой последовательности.
Точно так же, можно произвести автозаполнение по дням недели (понедельник, вторник, среда. ) или по месяцам (январь, февраль, март. ).
Более того, если в тексте будет любая цифра, то Эксель распознает её. При использовании маркера заполнения произойдет копирование текста с изменением цифры по нарастающей. Например, если вы запишите в ячейку выражение «4 корпус», то в других ячейках, заполненных с помощью маркера заполнения, это название преобразится в «5 корпус», «6 корпус», «7 корпус» и т.д.
Добавление собственных списков
Возможности функции автозаполнения в Excel не ограничивается определенными алгоритмами или предустановленными списками, такими как, например, дни недели. При желании пользователь может в программу добавить свой личный список. Тогда, при записи в ячейку любого слова из элементов, которые находятся в перечне, после применения маркера заполнения, данным списком будет заполнен весь выделенный диапазон ячеек. Для того, чтобы добавить свой список, нужно выполнить такую последовательность действий.
-
Делаем переход во вкладку «Файл».
Как видим, автозаполнение в Экселе является очень полезным и удобным инструментом, который позволяет значительно сэкономить время на добавлении одинаковых данных, повторяющихся списков, и т.д. Преимуществом этого инструмента является и то, что он настраиваемый. В него можно вносить новые списки или изменять старые. Кроме того, с помощью автозаполнения можно произвести быстрое заполнение ячеек различными видами математических прогрессий.
Читайте также: