Почему excel не находит пустые ячейки

Хитрости »

6 Май 2017              47453 просмотров


Эта статья будет близка тем, кому приходится часто работать с отчетами, выгруженными в Excel из программ вроде 1С, SAP и им подобных. Хотя, справедливости ради, надо отметить, что и в обычных файлах Excel такая проблема может так же встречаться, особенно, если в файле использовались различные формулы.
Вводные данные: есть отчет который выкачивается из сторонней программы. В нем есть ячейки, с виду пустые: в них нет пробелов, нет переносов на строки, никаких символов, нет объектов, условного форматирования, в настройках не стоит скрывать нули(ФайлПараметрыДополнительноПоказывать нули в ячейках, которые содержат нулевые значения). Даже если перейти в режим редактирования ячейки — там пусто.
Если попробовать найти такие «пустые» ячейки(выделить все ячейки листа -F5 -Выделить -Пустые ячейки) — они не выделяются. Но фильтр при этом их видит как пустые и фильтрует как пустые.
Любые математические действия(умножение на ячейку, сложение, деление и т.п.) внутри формул с такими ячейками выдают ошибку #ЗНАЧ!(#VALUE!), а функция ЕПУСТО(ISBLANK) считает ячейку не пустой. Формулы вроде СУММ(SUM) и СЧЁТ(COUNT) игнорируют такие ячейки, а СЧЁТЗ(COUNTA) считает их заполненными.

И самое удивительное — если выделить такую ячейку вручную и нажать Delete (или вкладка Главная -группа РедактированиеОчистить содержимое) — то ячейка становится действительно пустой и с ней начинают работать формулы и другие функции Excel как с реально пустой.
Здесь возникает главный вопрос: что с этой ячейкой не так, если там и до Delete ничего не было?
А не так с ней вот что: практически во всех программах есть такое понятие строковых(текстовых) данных, как строка нулевой длины(еще её часто называют нулевая строка. В Visual Basic for Application такая строка обозначается константой vbNullString, в ячейках её можно встретить как сочетание двух кавычек подряд — «»). Визуально такой текст себя никак не проявляет, однако это все же текст. А любой текст это уже не пусто, но и не число.
Откуда может появится такой текст в ячейках? Здесь несколько вариантов:

  1. Он есть в ячейках изначально, потому что именно так настроена выгрузка и создание файлов в сторонней программе(вроде 1С). В некоторых случаях такие выгрузки настроены таким образом, что как таковых пустых ячеек нет — они просто заполняются строкой нулевой длины.
  2. в ячейке была записана формула, результатом которой стал текст нулевой длины. Самый простой пример такой формулы:
    =ЕСЛИ(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

Как это работает:
если раньше никогда не работали с макросами, то рекомендую ознакомиться со статьями:
Что такое макрос и где его искать?
Что такое модуль? Какие бывают модули?

  1. создаем в книге новый стандартный модуль: Alt+F11InsertModule()
  2. копируем в созданный модуль приведенный выше код
  3. выделяем нужный диапазон(если надо заменить на всем листе — то можно выделить все ячейки листа или целиком нужные столбцы — программа сама определить нужные данные)
  4. нажимаем Alt+F8 и в появившемся окне выбираем ReplaceNullString
  5. Короткая видеоинструкция:
    Вставка кода в файл и его выполнение


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

поэтому в excel я пытаюсь избавиться от пустых ячеек между моими ячейками, в которых есть информация, используя F5 для поиска пустых ячеек, затем Ctrl + — для их удаления и сдвига ячеек вверх. Но когда я пытаюсь это сделать, он говорит мне, что «клеток не найдено».

Я заметил, что если я выбираю свои «пустые» ячейки, Excel все еще считает их:Like in this picture что странно. Но если я нажму Delete на эти выбранные ячейки, счетчик исчезнет, а затем я могу перейти F5, пробелы, Ctrl + — и Сдвиньте клетки вверх, и это сработает…

Итак, мой вопрос в том, как я могу это сделать, но с этими пустыми ячейками, которые Excel считает не пустыми? Я попытался пройти и просто нажать delete над пустыми ячейками, но у меня много данных и понял, что это займет слишком много времени. мне нужно найти способ выбрать эти «пустые» ячейки в пределах выбора данных.

заранее спасибо за вашу помощь! :)

15 ответов


откровение: некоторые пустые ячейки на самом деле не пустой! Как я покажу, ячейки могут иметь пробелы, новые строки и true empty:

example

чтобы найти эти ячейки быстро вы можете сделать несколько вещей.

  1. на =CODE(A1) формула вернет значение#! если клетка действительно пуста, в противном случае вернется. Это число -номер ASCII в =CHAR(32).
  2. если вы выделите ячейку и щелкните в строке формул и используйте курсор, чтобы выбрать все. newline selection example

удаление этих:

если у вас есть только пробел в клетках они могут быть легко удалены с помощью:

  1. пресс ctrl + h чтобы открыть find и replace.
  2. введите одно место в найти, оставить заменить на пустой и убедитесь, что у вас есть матч всей ячейки содержание галочкой в опциях.
  3. пресс заменить все.

если у вас newlines это сложнее и требует VBA:

  1. щелкните правой кнопкой мыши на вкладке листа > Просмотр кода.
  2. затем введите следующий код. Помните Chr(10) новая строка заменяет это только по мере необходимости, например " " & Char(10) это пробел и новая строка:

    Sub find_newlines()
        With Me.Cells
            Set c = .Find(Chr(10), LookIn:=xlValues, LookAt:=xlWhole)
            If Not c Is Nothing Then
                firstAddress = c.Address
                Do
                    c.Value = ""
                    Set c = .FindNext(c)
                    If c Is Nothing Then Exit Do
                Loop While c.Address <> firstAddress
            End If
        End With
    End Sub
    
  3. Теперь запустите ваш код нажатие Ф5.


после файл поставляется: выберите диапазон интересов для повышения производительности, затем выполните следующие действия:

Sub find_newlines()
    With Selection
        Set c = .Find("", LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.Value = ""
                Set c = .FindNext(c)
                If c Is Nothing Then Exit Do
            Loop While c.Address <> firstAddress
        End If
    End With
End Sub

простой способ выбрать и очистить эти пустые ячейки, чтобы сделать их пустыми:

  1. пресс ctrl + a или предварительно выберите свой диапазон
  2. пресс ctrl + f
  3. оставить найти пустой и выберите матч всего содержимого ячейки.
  4. нажмите найти все
  5. пресс ctrl + a выбрать все пустые ячейки нашли
  6. закрыть поиск диалоговое окно
  7. пресс backspace или удалить

Это сработало для меня:

  1. CTR-H для поиска и замены
  2. оставьте «найти что» пустой
  3. изменить «заменить на» на уникальный текст, то, что вы
    положительный не будет найден в другой ячейке (я использовал ‘xx’)
  4. клик
    «Заменить Все»
  5. скопируйте уникальный текст на Шаге 3, чтобы найти то, что’
  6. удалить уникальный текст в «заменить на»
  7. нажмите «заменить все»

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

мне удалось очистить их

  1. выбор столбцов / строк, которые я хотел очистить, а затем делать
  2. «найти» [без текста] и» заменить » [слово выбора].
  3. затем я сделал «найти» [слово выбора] и» заменить » на [нет текста].

он избавился от всех скрытых / фантомных персонажей в тех ячейки. Может, это сработает?


все, это довольно просто. Я пытался сделать то же самое, и это то, что сработало для меня в VBA

Range("A1:R50").Select    'The range you want to remove blanks
With Selection
    Selection.NumberFormat = "General"
    .Value = .Value
End With

С уважением,
Ананд Ланка


Если у вас нет форматирования или формул, которые вы хотите сохранить, вы можете попробовать сохранить файл в виде текстового файла с разделителями табуляции, закрыть его и снова открыть с помощью excel. Это сработало для меня.


'Select non blank cells
Selection.SpecialCells(xlCellTypeConstants, 23).Select
' REplace tehse blank look like cells to something uniqu
Selection.Replace What:="", Replacement:="TOBEDELETED", LookAt:=xlWhole, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
'now replace this uique text to nothing and voila all will disappear
Selection.Replace What:="TOBEDELETED", Replacement:="", LookAt:=xlWhole, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

нашел другой способ. Установите автофильтр для все столбцы (важно или вы будете смещать данные), выбрав строку заголовка > вкладка «данные» > сортировка и фильтр — «фильтр». Используйте раскрывающийся список в первом столбце данных, снимите флажок «выбрать все» и выберите только «(пробелы) » > [OK]. Выделите строки (Теперь все вместе) > щелкните правой кнопкой мыши > «удалить строку». Вернитесь к раскрывающемуся меню > ‘Select all’. Престо:)


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

Я выбрал весь столбец, выбрал Find & Replace, нашел ячейки ни с чем и заменил на 0, затем снова запустил find и replace, найдя ячейки с 0 и заменив их на «».

Это решило мою проблему и позволило мне искать пустые ячейки (F5, специальные, пробелы) и удалять строки, которые были пусты….БУМ.

может не работать для каждого приложения, но это решило мою проблему.

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


Это работает с цифрами.

Если ваш диапазон O8:O20, то в соседнем пустом диапазоне (например, T8: T20) введите =O8/1 и заполните. Это даст вам результат #VALUE для «пустых» ячеек, и ваш исходный номер останется прежним.

затем с выбранным диапазоном T8: 20 (CTL -*, если это еще не так) нажмите F5 и выберите специальный. В специальном диалоге выберите ошибки и нажмите кнопку ОК. Это отменит выбор фактических номеров, оставив только выбранные ячейки #VALUE. Удалите их, и у вас будут фактические пустые ячейки. Скопируйте T8:T20 и вставьте обратно через O8: O20.

по существу, поскольку пустые ячейки не работают, вам нужно преобразовать «пустые» ячейки во что-то, что может зацепиться за специальное. Любое действие, которое будет преобразовано в #VALUE, будет работать, и другие типы «ошибок» также должны поддерживаться.


мой метод похож на предложение Курта выше о сохранении его как файла с разделителями табуляции и повторном импорте.
Предполагается, что данные имеют только значения без формул.
Это, вероятно, хорошее предположение, потому что проблема «плохих» пробелов вызвана путаницей между пробелами и нулями-обычно в данных, импортированных из какого-то другого места, — поэтому не должно быть никаких формул.
Мой метод —разобрать на месте — очень похоже на сохранение в виде текстового файла и повторный импорт, но вы можете сделать это без закрытия и повторного открытия файла.
Он находится в разделе Данные > текст в Столбцы > разделители > удалить все символы синтаксического анализа (также можно выбрать текст, если хотите) > готово. Это должно заставить Excel повторно распознавать ваши данные с нуля или из текста и распознавать пробелы как действительно пустые.
Вы можете автоматизировать это в подпрограмме:

Sub F2Enter_new()         
   Dim rInput As Range
   If Selection.Cells.Count > 1 Then Set rInput = Selection
   Set rInput = Application.InputBox(Title:="Select", prompt:="input range", _ 
                                     Default:=rInput.Address, Type:=8)
'   Application.EnableEvents = False: Application.ScreenUpdating = False
   For Each c In rInput.Columns
      c.TextToColumns Destination:=Range(c.Cells(1).Address), DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
      Semicolon:=False, Comma:=False, Space:=False, Other:=False, _
      FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
   Next c
   Application.EnableEvents = True: Application.ScreenUpdating = True
End Sub

вы также можете включить эту прокомментированную строку, чтобы эта подпрограмма выполнялась «в фоновом режиме». Для этой подпрограммы улучшается производительность только немного (для других это действительно может помочь).
Имя-F2Enter, потому что исходный ручной метод для исправления этой проблемы «пробелов» — заставить Excel распознать формулу, нажав F2 и Enter.


вот как я исправил эту проблему без какого-либо кодирования.

  1. выберите весь столбец, из которого я хотел удалить «пустые» ячейки.
  2. щелкните вкладку Условное форматирование вверху.
  3. Выберите «Новое Правило».
  4. нажать «форматировать только ячейки, которые содержат».
  5. изменить «между» На «равно».
  6. нажмите на поле рядом с полем» равно».
  7. нажмите одну из проблемных» пустых » ячеек.
  8. клик кнопка формат.
  9. выберите случайный цвет для заполнения коробки.
  10. нажмите «OK».
  11. Это должно изменить все проблемные» пустые » ячейки на цвет, который вы выбрали. Теперь щелкните правой кнопкой мыши одну из цветных ячеек и перейдите в раздел «сортировать» и «поместить выбранный цвет ячейки сверху».
  12. это поставит все проблемные ячейки в верхней части столбца, и теперь все ваши другие ячейки останутся в исходном порядке, в котором вы их поместите. Теперь вы можете выбрать все проблемные ячейки в одной группе и нажмите кнопку Удалить ячейку сверху, чтобы избавиться от них.

самым простым решением для меня было:

1) Выберите диапазон и скопируйте его (ctrl+c)

2)Создайте новый текстовый файл (в любом месте, он будет удален в ближайшее время), откройте текстовый файл, а затем вставьте в excel информацию (ctrl+v)

3) Теперь, когда информация в Excel находится в текстовом файле, выполните select all в текстовом файле (ctrl+a), а затем скопируйте (ctrl+c)

4) перейдите к началу исходного диапазона на шаге 1 и вставьте его старая информация из копии на Шаге 3.

готово! Больше никаких фальшивых заготовок! (теперь вы можете удалить временный текстовый файл)


Goto — > Special — >blanks не любит объединенные ячейки. Попробовать unmerging клеток выше диапазона, в котором вы хотите выбрать то, болванками попробовать снова.


У меня была аналогичная проблема с получением формулы COUNTA для подсчета непустых ячеек, она считала все из них (даже пустые как непустые), я попытался =CODE (), но у них не было пробелов или новых строк.

Я обнаружил, что когда я щелкнул в ячейке, а затем щелкнул из нее, формула будет считать ячейку. У меня были тысячи ячеек, поэтому я не мог сделать это вручную. Я написал этот оператор VBA, чтобы буквально проверить все ячейки, и если они были пустыми, то сделать их пустыми. Игнорируйте бессмысленность этого макроса и поверьте мне, что он действительно работал, заставляя Excel распознавать пустые ячейки как пустые.

'This checks all the cells in a table so will need to be changed if you're using a range
Sub CreateBlanks()

Dim clientTable As ListObject
Dim selectedCell As Range

Set clientTable = Worksheets("Client Table").ListObjects("ClientTable")

For Each selectedCell In clientTable.DataBodyRange.Cells
    If selectedCell = "" Then
        selectedCell = ""
    End If
Next selectedCell
End Sub

Не выделяются пустые ячейки из диапазона

dyhes

Дата: Четверг, 22.01.2015, 22:17 |
Сообщение № 1

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

Ранг: Новичок

Сообщений: 28


Репутация:

0

±

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


Excel 2013

Всем привет! Хочу выделить пустые ячейки из A1:A31, чтобы их удалить НО не получается. Делаю таким методом: выделяю диапазон=>F5=>»выделить» =>»пустые ячейки» =>ок , и они не выделяются.
Рядом, в столбце B пишу что-то аналогичное и все получается… %)

Сообщение отредактировал dyhesЧетверг, 22.01.2015, 22:18

 

Ответить

dyhes

Дата: Четверг, 22.01.2015, 22:23 |
Сообщение № 2

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

Ранг: Новичок

Сообщений: 28


Репутация:

0

±

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


Excel 2013

Сделал такой же столбец B. Из B1:B31 выделяются пустые ячейки, а из A1:A31 — нет %)

Сообщение отредактировал dyhesЧетверг, 22.01.2015, 22:24

 

Ответить

Nic70y

Дата: Четверг, 22.01.2015, 22:24 |
Сообщение № 3

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

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

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

Прикол какой-то (или я туплю)
мож сюда надо запостить?
http://www.excelworld.ru/forum/5-12518-1

что сделал:
скопировал столбец A, вставил его в блокнот,
удалил столбец A,
вставил из блокнота обратно в эксель — F5 работает.


ЮMoney 41001841029809

Сообщение отредактировал Nic70yЧетверг, 22.01.2015, 22:28

 

Ответить

DJ_Marker_MC

Дата: Четверг, 22.01.2015, 22:27 |
Сообщение № 4

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

Ранг: Ветеран

Сообщений: 991


Репутация:

213

±

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


Excel 2019

Добрый вечер.
А все потому, что там не пустая ячейка, там какой то спецсимвол зарыт.
Советую:
— Установить на весь столбец фильтр
— отфильтровать по пустым
— выделить все от первой до последней строки «типа пустые»
— нажать делит
— убрать фильтр.
ГОТОВО

Я так предполагаю данные вытаскивались с какой то учетной системы типа 1с? )))

 

Ответить

Nic70y

Дата: Четверг, 22.01.2015, 22:30 |
Сообщение № 5

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

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

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010


ЮMoney 41001841029809

 

Ответить

DJ_Marker_MC

Дата: Четверг, 22.01.2015, 22:30 |
Сообщение № 6

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

Ранг: Ветеран

Сообщений: 991


Репутация:

213

±

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


Excel 2019

Nic70y, не не прикол, сталкивался с такой ерундой, это учетные системы так балуются.
У нас например 1с выгружает пустые ячейки как пробел и даже пробовали при формировании отчета принудительно удалять пробел в самой 1с при выводе отчета, но все равно, пробел удаляется, а вот такой баг имеет место.

 

Ответить

_Boroda_

Дата: Четверг, 22.01.2015, 22:31 |
Сообщение № 7

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Предположу, что это вставленный откуда-то диапазон. В этом случае (иногда) бывает так, что пустые ячейки не распознаются пустыми.
Как можно полечить:
1. выделить диапазон, поставить автофильтр, в нем выбрать «Пусто», выделить полученное, нажать Альт+Шифт+4, удалить строки;
2. выделить диапазон, нажать Контрл+F, нажать «Найти все», внизу окошка поиска появится список найденного с выделенной первой строкой, прокрутите список до конца и топните мышой на последнюю строку, держа при этом нажатым Шифт — выделятся все пустые, затем просто удалить строки. Во вложении файлик с картинкой


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Nic70y

Дата: Четверг, 22.01.2015, 22:32 |
Сообщение № 8

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

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

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

да постирал эти ячейки работает, но какой там символ?…


ЮMoney 41001841029809

 

Ответить

DJ_Marker_MC

Дата: Четверг, 22.01.2015, 22:33 |
Сообщение № 9

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

Ранг: Ветеран

Сообщений: 991


Репутация:

213

±

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


Excel 2019

у меня на этот случай даже макрос был)))
[vba]

Код

‘Пробегает по каждой ячейки всего выделеного диапазона листа и нажимает делит на всех ячейках в которых пустота или 1 пробел
Sub ClearNullContents()
     For Each cell In Selection
     If Len(cell) = 0 Or cell.Value = » » Then cell.ClearContents
     Next
End Sub

[/vba]

 

Ответить

dyhes

Дата: Четверг, 22.01.2015, 22:36 |
Сообщение № 10

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

Ранг: Новичок

Сообщений: 28


Репутация:

0

±

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


Excel 2013

да, все понятно, я копировал столбец с формулой типа =ЕСЛИ(СУММ(—(A7=$A$1:A6))>=1;»»;A7) . Вставка — только значения. Пустые ячейки ничего не отображают, но в них видимо осталась где-то информация, хоть они и пустые

Сообщение отредактировал dyhesЧетверг, 22.01.2015, 22:36

 

Ответить

Nic70y

Дата: Четверг, 22.01.2015, 22:36 |
Сообщение № 11

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

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

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

ну Вы 1-с ники монстры…
но почему при копи-пасте в блокнот все пропадает?
что за не существующий символ?


ЮMoney 41001841029809

 

Ответить

DJ_Marker_MC

Дата: Четверг, 22.01.2015, 22:41 |
Сообщение № 12

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

Ранг: Ветеран

Сообщений: 991


Репутация:

213

±

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


Excel 2019

Nic70y, я не 1-с ник)))) в том то и дело, я в конечном счете один отчет попросил наших 1-с программеров выгружать напрямую в txt с разделителями tab и проблема с пустыми ячейками ушла из моей жизни)))

 

Ответить

Nic70y

Дата: Четверг, 22.01.2015, 22:45 |
Сообщение № 13

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

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

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

[offtop]Век живи — век учись:
Пойду чаю попью — т.к. магазины закрылись. :( [/offtop]


ЮMoney 41001841029809

 

Ответить

dyhes

Дата: Четверг, 22.01.2015, 22:57 |
Сообщение № 14

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

Ранг: Новичок

Сообщений: 28


Репутация:

0

±

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


Excel 2013

Пустые ячейки могут быть вовсе не пустыми… Внешний вид обманчив)

 

Ответить

Nic70y

Дата: Четверг, 22.01.2015, 23:08 |
Сообщение № 15

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

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

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

это известный факт, но назовите мне кодсимвола…


ЮMoney 41001841029809

 

Ответить

RAN

Дата: Четверг, 22.01.2015, 23:16 |
Сообщение № 16

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

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

Сообщений: 5645

Сыщик находит. :) Пустая А7.
[vba]

Код

Function is_empty(cl)
     is_empty = IsEmpty(cl)
End Function

[/vba]


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

 

Ответить

Nic70y

Дата: Четверг, 22.01.2015, 23:20 |
Сообщение № 17

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

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

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

Андрей, это и F5 находит.
не отмазался! Что за символ?


ЮMoney 41001841029809

 

Ответить

dyhes

Дата: Четверг, 22.01.2015, 23:21 |
Сообщение № 18

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

Ранг: Новичок

Сообщений: 28


Репутация:

0

±

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


Excel 2013

Nic70y, где прописана эта информация я не знаю, я только рассказал как у меня это получилось. Посмотрите сообщение 10. «Пустой» ячейка стала после копирования (ctrl-c, ctrl-v, вставка — значения) ячейки которая осталась пустой в результате вычислений, то есть которая имела формулу.

 

Ответить

RAN

Дата: Четверг, 22.01.2015, 23:27 |
Сообщение № 19

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

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

Сообщений: 5645

[vba][/vba]

и понапишут же
vbNullString колонной, имеющей значение 0 Не же, как строка нулевой длины («»); используется для вызова внешних процедур


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

Сообщение отредактировал RANЧетверг, 22.01.2015, 23:31

 

Ответить

 

Подскажите, пожалуйста, как решить проблему с тем, что Excel воспринимает пустые ячейки как 0?

Мне нужно посчитать несмежные ячейки по критерию <5. Среди несмежных ячеек есть временно пустые, но которые со временем будут заполнены. Почему-то Excel учитывает эти пустые ячейки, как будто в них содержится значение 0 и тоже считает их.

Как сделать так, чтобы пустые ячейки не считались? Функция =СУММ(A1<5;A3<5;A8<5; и т.д. очень много ячеек, среди которых есть пустые).

Update после поста № 25: На данный момент лучшее решение предложил

Сергей

, а именно формулу =СУММПРОИЗВ((A1:N1<5)*НЕ(ЕПУСТО(A1:N1))*{1;0;1;0;1;0;1;0;1;0;1;1;0;1})  

Изменено: Eugen_excel20.02.2017 13:43:42

 

Karataev

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

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

Могу предложить делать проверку, пусто в ячейке или нет:
=ЕСЛИ(A1<>»»;A1<5;0)
Но если увидеть Ваш файл, то может быть можно использовать другую, более удобную формулу.

Еще вариант придумал:
=СУММ(И(A1<>»»;A1<5);И(A3<>»»;A3<5);И(A8<>»»;A8<5))

Изменено: Karataev19.02.2017 23:34:49

 

БМВ

Модератор

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

Excel 2013, 2016

#3

19.02.2017 23:38:41

Цитата
Eugen_excel написал:
СУММ

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

Приложите файл, всем понятнее будет.  

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

 

elnur_quba

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

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

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

 

vikttur

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

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

elnur_quba, и чего Вы добьетесь?

 
Eugen_excel

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

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Спасибо всем за ответы! Прикладываю файл-пример, из которого вы все поймете  8)

Прошу помочь решить задачу!

 

Сергей

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

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

#8

20.02.2017 08:40:28

вариант

Код
=СУММПРОИЗВ((A1:N1<5)*НЕ(ЕПУСТО(A1:N1)))

Лень двигатель прогресса, доказано!!!

 

Eugen_excel

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

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

#9

20.02.2017 08:53:37

Цитата
Сергей написал:
вариантКод ? 1=СУММПРОИЗВ((A1:N1<5)*НЕ(ЕПУСТО(A1:N1)))

Вы выделили диапазон A1:N1, но ячейка B1, например, мне не нужна. Там будет другое значение и ее будет использовать другая функция, скажем «больше 2». Да и пустые ячейки со временем заполнятся и «поломают» предложенную функцию. Мне нужны только отдельные несмежные ячейки.

Неужели придется суммировать миллион функций СЧЕТЕСЛИ для каждой отдельной ячейки?  :cry:

Изменено: Eugen_excel20.02.2017 08:56:42

Excel 2010

 

Сергей

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

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

#10

20.02.2017 08:56:51

еще вариант

Код
=СУММПРОИЗВ((A1:N1<5)*(A1:N1>0)*{1;0;1;0;1;0;1;0;1;0;1;1;0;1})

Лень двигатель прогресса, доказано!!!

 

Сергей

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

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

#11

20.02.2017 09:00:29

смотрите файл

Код
=СЧЁТЕСЛИМН(A1:N1;"<5";A2:N2;"нужна")

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

  • Пример пустые ячейки.xlsx (10.95 КБ)

Лень двигатель прогресса, доказано!!!

 

elnur_quba

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

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

=СУММЕСЛИ(A1,»<5″,A1)+СУММЕСЛИ(C1,»<5″,C1)+СУММЕСЛИ(E1,»<5″,E1)+СУММЕСЛИ(G1,»<5″,G1)+СУММЕСЛИ(I1,»<5″,I1)+СУММЕСЛИ(K1,»<5″,K1)+СУММЕСЛИ(L1,»<5″,L1)+СУММЕСЛИ(N1,»<5″,N1)

 

@

Сергей

Функция с массивом =СУММПРОИЗВ((A1:N1<5)*(A1:N1>0)*{1;0;1;0;1;0;1;0;1;0;1;1;0;1}) выглядит интересно. Но проблема в том, что пока еще пустая ячейка может получить значение 0 и не будет посчитана по данной формуле. А нужно, чтобы если в ячейке стоит 0, то ячейка тоже считалась, ведь она удовлетворяет критерию «<5».

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

@

elnur_quba

Хотелось бы избежать множественных повторений «СУММЕСЛИ», «СЧЕТЕСЛИ», а прописать все несмежные ячейки одной формулой. Конечно, если решения не найдется, буду суммировать отдельные функции СЧЕТЕСЛИ для каждой отдельной ячейки.

 

Сергей

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

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

вам уже показано несколько вариантов играйтесь экспериментируйте вместо  (A1:N1>0) поставьте НЕ(ЕПУСТО(A1:N1)

Лень двигатель прогресса, доказано!!!

 

Z

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

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

Win 10, MSO 2013 SP1

#15

20.02.2017 09:30:05

Цитата
Eugen_excel написал: но выглядит вычурно. Не хотелось бы лишних нагромождений.

OFF Так будьте сами последовательны — зачем в ваших данных «черезполосица»?! В чем ее ЦЕЛЕСООБРАЗНОСТЬ?.. ;)
 

«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

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

 

Z

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

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

Win 10, MSO 2013 SP1

#17

20.02.2017 10:00:45

Цитата
Eugen_excel написал: … необходимые данные находятся в разных несмежных ячейках и их никак не поместить в соседние ячейки…

OFF Нет лишь одного пути к цели, варианты при желании можно найти и применить. Главное — не зашориваться, а уметь взглянуть на ситуацию с разных сторон. В вашем случае мы имеем лишь кусок из задачи, о которой вы и не упоминаете, а это не помешало бы более приемлемому построению данных и поиску решения… ;)

«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

Eugen_excel

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

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

#18

20.02.2017 10:51:32

Цитата
Z написал:
OFF Нет лишь одного пути к цели, варианты при желании можно найти и применить.

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

Надеюсь, вам тоже интересно найти простой способ решения этой, на первый взгляд, детской задачи, а не использовать километровые формулы с кучей повторяющихся «СЧЕТЕСЛИ» и т.д., или нагромождать таблицу лишними вспомогательными данными.

У меня 40 таких несмежных ячеек. Представьте как это будет выглядеть: прописать формулу с 40 «СЧЕТЕСЛИ+СЧЕТЕСЛИ+СЧЕТЕСЛИ». Неужли нет более простого способа подсчета несмежных ячеек?

Excel 2010

 

Сергей

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

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

#19

20.02.2017 11:48:56

Сами придумали себе проблему и героически с ней боретесь чем не устроил вариант =СУММПРОИЗВ((A1:N1<5)*НЕ(ЕПУСТО(A1:N1)*{1;0;1;0;1;0;1;0;1;0;1;1;0;1}), или вы даже его не пробовали а говорите

Цитата
Eugen_excel написал:
просто еще не нашелся человек, который это умеет и знает как делать правильно

Лень двигатель прогресса, доказано!!!

 

AlbertSF

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

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

#20

20.02.2017 12:02:35

Eugen_excel, ваша формула в файле примере посчитала все верно.

Код
=СУММ(A1<5;C1<5;E1<5;G1<5;I1<5;K1<5;L1<5;N1<5)

Условие у вас «Нужно посчитать количество ячеек…», а формулу пишете «Сумм».

Например, у меня формула

Код
=СЧЁТЕСЛИ(A1:N1;"<5")

дает результат 3. Что верно. Пустые ячейки не считает. Если добавить в этот диапазон 0. то результат станет 4.

Какой результат хотите получить в итоге?

 

Eugen_excel

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

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

#21

20.02.2017 12:51:44

Цитата
Сергей написал:
=СУММПРОИЗВ((A1:N1<5)*НЕ(ЕПУСТО(A1:N1)*{1;0;1;0;1;0;1;0;1;0;1;1;0;1}), или вы даже его не пробовали а говорите

Как это не пробовал? Указанная функция считает неправильно.

Excel 2010

 

Сергей

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

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

читайте название файла

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

  • Вранье.png (21.67 КБ)

Лень двигатель прогресса, доказано!!!

 

Eugen_excel

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

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

#23

20.02.2017 13:02:36

Цитата
AlbertSF написал:
Код ? 1=СЧЁТЕСЛИ(A1:N1;»<5″)дает результат 3. Что верно. Пустые ячейки не считает. Если добавить в этот диапазон 0. то результат станет 4.Какой результат хотите получить в итоге?

Да вы поймите, что нельзя использовать в функции СЧЕТЕСЛИ диапазон A1:N1.

Нужно посчитать определенное кол-во несмежных ячеек, а не целый диапазон смежных ячеек! Завтра ячейка B1 будет иметь значение «4» и тоже посчитается, но она мне не нужна! Функция СЧЕТЕСЛИ не работает с несмежными ячейками/диапазонами.

Уже столько неудачных попыток было предложено, что видимо забыли, в чем состоит суть проблемы. Нужно посчитать количество несмежных ячеек по 1 конкретному критерию. В примере критерий — это <5. Интересуют только ячейки A1, C1, E1, G1, I1, K1, L1 и N1. Но никак не диапазон от A до N. Еще раз прикладываю файл-пример.

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

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

  • Пример пустые ячейки.xlsx (11.09 КБ)

Excel 2010

 

Сергей

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

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

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

Лень двигатель прогресса, доказано!!!

 

Eugen_excel

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

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

#25

20.02.2017 13:30:06

Цитата
Сергей написал: читайте название файла

Вот так работает =СУММПРОИЗВ((A1:N1<5)*НЕ(ЕПУСТО(A1:N1))*{1;0;1;0;1;0;1;0;1;0;1;1;0;1})

Я когда вводил предыдущую формулу мне почему-то excel сам подправил и получилось неправильно. Сравнил с Вашей, удалил лишние скобки и получилось.

Подводим промежуточный итог:
Лучшее решение предложил

Сергей

с формулой =СУММПРОИЗВ((A1:N1<5)*НЕ(ЕПУСТО(A1:N1))*{1;0;1;0;1;0;1;0;1;0;1;1;0;1}) за что ему большое спасибо!  :idea:

Excel 2010

 

Eugen_excel

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

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

#26

20.02.2017 13:47:06

Я обновил первый пост, чтобы другим людям было легче найти решение, которое предложил

Сергей

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

Excel 2010

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

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

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

Содержание

  1. Как определить, пустая ячейка или нет (способы)
  2. Процедуры VBA
  3. Код для конкретной ячейки
  4. Код для активной ячейки
  5. Функция ЕПУСТО для проверки пустых ячеек
  6. Примеры использования функции ЕПУСТО
  7. Почему следует использовать функцию ЕПУСТО при проверке пустых ячеек?
  8. Пример проверки на пустую ячейку
  9. Как подсчитать количество пустых ячеек в Эксель
  10. Особенности применения функции ЕПУСТО в Excel
  11. Выводы

Как определить, пустая ячейка или нет (способы)

Это можно сделать с помощью функции ЕПУСТО, которая может использоваться для данных самых разных типов, включая не только числа и текст, но даже логические функции. Давайте более подробно рассмотрим особенности работы с этой формулой.

Эта функция имеет очень простую схему использования. Если в конкретной ячейке нет никакой информации, то возвращается ИСТИНА. Если же в ней содержится определенная информация, то, соответственно, значение оказывается ЛОЖЬ.

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

Процедуры VBA

VBA – это язык программирования, который используется для написания макросов. Это маленькие исполняемые модули, которые выполняют определенную последовательность действий, в том числе, и осуществляют проверку, есть ли внутри ячейки какая-то информация, или нет.

Код для конкретной ячейки

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

Sub example()  

 If IsEmpty(Range(«A1»)) = True Then  

 MsgBox «Ячейка пустая»  

 Else  

 MsgBox «Ячейка не пустая»  

 End If  

End Sub  

Этот фрагмент кода проверяет ячейку А1 на предмет того, содержатся ли в ней какие-то данные. И результат выводит в соответствующее окошко.

Код для активной ячейки

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

Sub example()  

 If IsEmpty(ActiveCell) = True Then  

 MsgBox «Ячейка пустая»  

 Else  

 MsgBox «Ячейка не пустая»  

 End If  

End Sub 

Функция ЕПУСТО для проверки пустых ячеек

Как мы уже поняли, функция ЕПУСТО дает возможность определить, пустая ли определенная ячейка. Давайте разберем некоторые практические аспекты использования этой функции.

Примеры использования функции ЕПУСТО

Давайте опишем некоторые способы применения функции ЕПУСТО на практике. Допустим, вы работаете преподавателем и у вас открыта таблица с оценками учеников по последнему тесту. При этом некоторые из баллов не записаны, поскольку ряд студентов плохо сдали его и пошли на пересдачу. И допустим, перед нами стоит задача написать в третьей колонке список тех, кто сдал экзамен с первого раза.

Как определить - пустая ячейка, или в ней содержатся данные

1

Чтобы реализовать поставленные задачи, нам нужно ввести следующую формулу после выделения диапазона C3:C18.

=ЕСЛИ(ИЛИ(ЕПУСТО(B3);B3=2);»На пересдачу»;»Сдал»)

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

После того, как мы введем эту формулу, результат будет следующим:

Как определить - пустая ячейка, или в ней содержатся данные

2

Далее давайте попробуем сделать особое форматирование в зависимости от того, есть ли оценка у человека или нет. Для этого нужно найти параметр «Стили» на вкладке «Главная». Там находится пункт «Условное форматирование». После того, как мы его выберем, нужно нажать кнопку «Создать правило».

Как определить - пустая ячейка, или в ней содержатся данные

3

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

Как определить - пустая ячейка, или в ней содержатся данные

4

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

Как определить - пустая ячейка, или в ней содержатся данные

5

Почему следует использовать функцию ЕПУСТО при проверке пустых ячеек?

Тот человек, который уже немного разбирается в Excel, может задать вопрос: почему нельзя использовать банальную функцию ЕСЛИ для этой цели? Да, можно. Достаточно просто записать такую формулу:

=ЕСЛИ(ИЛИ(B3=»»;B3=2);»На пересдачу»;»Сдал»)

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

Как определить - пустая ячейка, или в ней содержатся данные

6

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

Если использовать функцию ЕПУСТО для этой цели, пользователь получает возможность узнать реальную картину, какие ячейки действительно пустые, а не только отображаются, как пустые. 

Пример проверки на пустую ячейку

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

Как определить - пустая ячейка, или в ней содержатся данные

7

Чтобы понять, есть ли пустые ячейки, нужно использовать именно формулу массива. Ее основное отличие в том, что она работает одновременно с большим количеством данных. Чтобы сделать формулу массива, нужно нажать комбинацию Ctrl + Shift + Enter после того, как формула будет введена в соответствующую строку.

=ЕСЛИ(СУММ(—ЕПУСТО(B3:B17));ИСТИНА;ЛОЖЬ)

В примере, которое описывается нами сейчас, функция СУММ применяется с целью определения количества всех значений, которые возвращаются функцией ЕПУСТО. Если же после вычисления по этой формуле окажется значение, превышающее ноль, то вернется значение «Истина».

Как следствие, мы получим следующую таблицу.

Как определить - пустая ячейка, или в ней содержатся данные

8

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

Внимание. Были использованы символы «–-» в формуле, приводимой выше. На это надо обратить особое внимание. Эти символы означают двойное отрицание. В нашем примере его нужно использовать, чтобы превратить логический тип данных в числовой.

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

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

Как подсчитать количество пустых ячеек в Эксель

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

Сама таблица выглядит так.

Как определить - пустая ячейка, или в ней содержатся данные

9

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

=ЕСЛИ(СУММ(—ЕПУСТО(B3:B12));СЧИТАТЬПУСТОТЫ(B3:B12)&» поля не заполнены»;СРЗНАЧ(B3:B12))

Функция ЕСЛИ дает возможность осуществить проверку набора ячеек на предмет того, есть ли среди них пустые значения (для этого используется функция —ЕПУСТО с соответствующими аргументами). Если в итоге суммирования было возвращено положительное значение, то будет показан текст, в котором записано, сколько ячеек без значения. Для этого используется функция СЧИТАТЬПУСТОТЫ. А с помощью знака & мы соединяем несколько значений. 

Получается такой документ.

Как определить - пустая ячейка, или в ней содержатся данные

10

При этом нужно помнить про все особенности и ограничения применения функции ЕСЛИ, описанные выше. 

Особенности применения функции ЕПУСТО в Excel

Есть несколько типов функций, и ЕПУСТО принадлежит к категории логических. Простыми словами, она проверяет какое-то выражение на предмет соответствия определенному критерию. Таких функций насчитывается еще огромное количество, и это не только указанная выше ЕСЛИ. Также к таким функциям относятся такие операторы, как ЕССЫЛКА, ЕЧИСЛО и так далее. Все они возвращают одно из двух возможных значений: истинное или ложное. 

Если записать функцию, ее синтаксис будет следующим.

=ЕПУСТО(значение)

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

Есть ряд особенностей, которые берутся в учет, когда пользователь собирается работать с этой функцией:

  1. Нельзя указывать конкретное значение, как параметр, поскольку тогда будет автоматически возвращено значение «ЛОЖЬ». Все дело в том, что такое значение априори не может содержат никаких значений. 
  2. Если перед нами стоит задача сделать так, чтобы было возвращена «ИСТИНА» в случае заполненности ячейки любой информацией, то нужно использовать сразу две функции: НЕ и ЕПУСТО. Тогда сначала нужно использовать первую, а потом вторую в качестве аргумента. 
  3. Использование функции АДРЕС, как параметр функции ЕПУСТО. бесполезно. Тогда всегда будет возвращаться результат, что критерию значение не соответствует. Все потому, что функцией АДРЕС осуществляется возвращение ссылки, которая сама по себе уже является разновидностью информации даже в том случае, если в ячейке, на которую она ссылается, нет никаких данных. 
  4. Значение «ЛОЖЬ» будет в качестве итога даже в той ситуации, когда есть ошибка. Все потому, что какая-то информация содержится в ней в любом случае, пусть даже неверная. А если речь идет об информации про ошибку, то это еще и полезная информация. А ссылка уже может считаться полноценным типом данных. 
  5. Очень часто пользователи забывают о формуле массива, чтобы осуществить проверку сразу большого количества ячеек. Иначе значение, возвращаемое функцией, будет неправильным. 

Выводы

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

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

Оцените качество статьи. Нам важно ваше мнение:

Like this post? Please share to your friends:
  • Почему excel не сортирует по возрастанию
  • Почему excel не копирует лист
  • Почему excel не растягивает формулы
  • Почему excel не ищет
  • Почему excel не протягивает формулу