Макросы в excel если ячейка пуста то

Перейти к содержимому

Макрос проверки заполнения ячеек.

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

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

Рассмотрим несколько вариантов VBA алгоритмов:Макро VBA Excel

Алгоритм для строго определенной ячейки с применением её адреса.

Пример для ячейки с адресом B6:

  •     Private Sub CommandButton1_Click() ‘наименование алгоритма
  •      If IsEmpty(Range(«B6»)) = True Then  ‘условие, если ячейка пустая, то
  •      MsgBox («В ячейке нет данных») ‘вывод сообщения, что в ячейке нет данных
  •      Else  ‘в противном случае
  •      MsgBox («Данные внесены в ячейку»)  ‘вывод сообщения, что в ячейке есть данные
  •      End If  ‘конец блока «если»
  •     End Sub ‘конец алгоритма

Алгоритм для выделенной (активной)  ячейки :

    • Private Sub CommandButton1_Click() ‘наименование алгоритма    
    • If IsEmpty(ActiveCell) = True Then ‘условие, если активная ячейка (ActiveCell)  пустая, то
    •      MsgBox («В ячейке нет данных»)  ‘вывод сообщения, что в ячейке нет данных
    •      Else  ‘в противном случае
    •      MsgBox («Данные внесены в ячейку»)  ‘вывод сообщения, что в ячейке есть данные
    •      End If  ‘конец блока «если»
    •     End Sub ‘конец алгоритма

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

      • Private Sub CommandButton1_Click() ‘наименование алгоритма    
      • If Len(ActiveCell) Then ‘если активная ячейка заполнена данными (имеет объем информации)
      • MsgBox («Данные внесены в ячейку»)  ‘вывод сообщения, что в ячейке есть данные
      • Else  ‘в противном случае
      • MsgBox («Ячейка пустая») ‘вывод сообщения, что в ячейке нет данных
      • End If  ‘конец блока «если»
      •  End Sub  ‘конец алгоритма

      2 / 2 / 2

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

      Сообщений: 258

      1

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

      06.11.2015, 22:16. Показов 11621. Ответов 2


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

      Здравствуйте, подскажите, пожалуйста как можно перед выполнением макроса проверить заполнены ли ячейки и сделать следующее…

      если ячейка А1 пустая — вывести «сообщение» и прекратить выполнение макроса.
      если ячейка А1 не пустая, проверить ячейку B1 (пустая или не пустая).
      если ячейка В1 пустая — вывести «другое сообщение» и прекратить выполнение макроса.
      если ячейка В1 не пустая — выполнить основной код макроса.

      примечание: Ячейки объединенные (А1 и В1 крайние левые ячейки)



      0



      Аксима

      6076 / 1320 / 195

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

      Сообщений: 1,023

      06.11.2015, 22:27

      2

      Лучший ответ Сообщение было отмечено AlexanderSh88 как решение

      Решение

      Здравствуйте, AlexanderSh88,

      Я бы сделал, наверное, так:

      Visual Basic
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      
      Sub PreMacroCheck()
          If IsEmpty(Range("A1")) Then 'Если ячейка "A1" пустая...
              MsgBox "сообщение" 'Выводим сообщение.
              End 'Прекращаем выполнение макроса.
          Else 'Иначе, если ячейка "A1" не пустая...
              If IsEmpty(Range("B1")) Then 'Проверяем ячейку "B1"...
                  MsgBox "другое сообщение" 'Выводим другое сообщение.
                  End 'Прекращаем выполнение макроса.
              End If 'Иначе, если ячейка "B1" не пустая, завершаются все If...
          End If
      End Sub 'и управление передается основной процедуре.
       
      Sub ОсновнаяПроцедура()
          PreMacroCheck
          '...
          'Debug.Print "Основная процедура выполнена."
      End Sub

      С уважением,

      Аксима



      1



      2 / 2 / 2

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

      Сообщений: 258

      06.11.2015, 22:54

       [ТС]

      3

      Аксима, Спасибо, как всегда все работает



      0



      IT_Exp

      Эксперт

      87844 / 49110 / 22898

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

      Сообщений: 92,604

      06.11.2015, 22:54

      Помогаю со студенческими работами здесь

      Формула если ячейка заполнена, то вывести «B1», если пустая то вывести «A1»
      Добрый вечер!

      Напишите пожалуйста формула, если ячейка "B1" заполнена то вывести число из ячейки…

      Удаление Листа, если ячейка пустая
      Здравствуйте, уважаемые программисты! Прошу Вашей помощи в реализации одного макроса. В книге…

      Выделение ячейки цветом если следующая ячейка не пустая
      Добрый день.

      Помогите разобраться. У меня на столбец "J" созданы правила УФ, при превышении…

      Если пустая ячейка цветная, то создаются линии границ
      Здравствуйте, подскажите, пожалуйста, как сделать так, чтобы у ячейки создавались линии границ,…

      Искать еще темы с ответами

      Или воспользуйтесь поиском по форуму:

      3

       

      Подскажите как при помощи VBA определить наличие пустой ячейки (не заполненной = «» ;)  в диапазоне (например А1:С300) или ячейки с значением = 0 ?

       

      Юрий М

      Модератор

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

      Контакты см. в профиле

      Нашли, дальше что? Перебрать диапазон/массив и при нахождении пустой/нулевой выйти из цикла с сообщением.

       

      Антон

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

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

      #3

      28.01.2014 01:20:21

      посредством перебора каждого значения массива и сравнением )

      Код
      'перебираем строки 
      For i=1 to 300 
      'перебираем столбцы 
      For y=1 to 3 
      If cells(i,y).Value="" then 
      Msgbox("пустая ячейка") 
      Exit for
      End if 
      If cells(i,y).Value=0 then 
      Msgbox("нуль.")  
      Exit for 
      End if    
      Next y   
      Next i

      Изменено: Антон28.01.2014 01:25:02

       

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

       

      Юрий М

      Модератор

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

      Контакты см. в профиле

      #5

      28.01.2014 01:28:51

      Код
      Sub Test()
      Dim Rng As Range, rCell As Range
          Set Rng = Range("A1:C300")
          For Each rCell In Rng
              If IsEmpty(rCell) Or rCell = 0 Then
                  MsgBox "Найдено в ячейке " & rCell.Address(0, 0), 64, "Для сведения"
                  Exit For
              End If
          Next
      End Sub 
       
       

      Юрий М

      Модератор

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

      Контакты см. в профиле

      #7

      28.01.2014 02:01:36

      Без цикла, но и без адресов:

      Код
      Sub Test2()
      Dim Rng As Range
          Set Rng = Range("A1:C300")
          x = Application.WorksheetFunction.CountA(Rng)
          y = Application.WorksheetFunction.CountIf(Rng, 0)
          If Rng.Cells.Count <> x Then MsgBox "Есть пустые."
          If y > 0 Then MsgBox "Есть нули."
      End Sub 
       

      KuklP

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

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

      E-mail и реквизиты в профиле.

      Я сам — дурнее всякого примера! …

       

      Max.il

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

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

      Юрий М, Юрий, добрый вечер. Развивая тему, если нужно проверить несколько ячеек, к примеру А3, Т16 и Т22, если они пустые — залить эту ячейку красным цветом. Если в ней есть что-то , пропустить. Если во всех ячейках есть данные, то просто прекратить выполнение макроса без вывода сообщения.
      Спасибо  

       

      Юрий М

      Модератор

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

      Контакты см. в профиле

       

      Max.il

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

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

      Юрий М,Нет, т.к. проверка должна осуществляться после макроса.  

       

      Юрий М

      Модератор

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

      Контакты см. в профиле

      УФ сработает и после макроса. А макрос написать не смогу: нет у меня файла, где имеются перечисленные Вами ячейки ))
      Вы бы уточнили: три ячейки — это только для примера? А по факту? И как макрос должен понять, какие именно ячейки проверять? Где-то есть список этих ячеек?

       

      Юрий М

      Модератор

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

      Контакты см. в профиле

      #13

      27.05.2019 23:32:23

      Нет ответа…

      Код
      Dim rCell As Range
          For Each rCell In Range("A3, T16, T22")
              If rCell = "" Then
                  rCell.Interior.ColorIndex = 3
              Else
                  rCell.Interior.ColorIndex = xlNone
              End If
          Next
      
       

      RAN

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

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

      #14

      27.05.2019 23:39:10

      Цитата
      Max.il написал:
      к примеру
      Код
      Sub qq()
          Dim r As Range
          Set r = [a1:c3]
          On Error Resume Next
          r.SpecialCells(4).Interior.ColorIndex = 3
      End Sub
       

      Max.il

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

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

      RAN,  Юрий М, Мужчины, спасибо, что помогаете . Искренняя благодарность.  

       

      Николай Китаев

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

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

      #16

      17.12.2021 13:26:01

      Цитата
      написал:
      Подскажите как при помощи VBA определить наличие пустой ячейки

      Такая конструкция не работает: If cells(i,y).Value=»» then….

      А так — должно работать:
      If IsEmpty(cells(i,y).Value) = True Then ……., где К — переменная содержащая или несодержащая значение, или переменная, содержащая адрес ячейки Cell, которую проверяем.

      Изменено: Николай Китаев17.12.2021 14:07:17

       

      Jack Famous

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

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

      OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

      Николай Китаев, с момента создания темы прошло почти 8 лет, а ТС был последний раз почти 2 года назад — в курсе?  :D

      Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

       

      Ничего страшного. Можно считать, что памятка для себя. Тем более проверка вида cells(i,y).Value=»» не работает.

       

      БМВ

      Модератор

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

      Excel 2013, 2016

      #19

      17.12.2021 14:19:40

      Цитата
      Николай Китаев написал:
      Тем более проверка вида cells(i,y).Value=»» не работает.

      докажите.

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

       

      Jack Famous

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

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

      OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

      Если вас что-то не устраивает, то не нужно поднимать со дна старую тему, тем более, что спросить автора не получится — создайте свою и там всё подробно опишите и/или спросите

      И тут гляньте:

      VBA. UDF. Функция для проверки значения на строку нулевой длины «=»»»

      Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

       

      vikttur

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

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

      #21

      17.12.2021 23:29:31

      Цитата
      Николай Китаев написал: If IsEmpty(cells(i,y).Value) = True Then ……., где К — переменная

      И где К? )

      Определение с помощью кода VBA Excel, что диапазон ячеек пуст, то есть, ни одна из ячеек диапазона (строки, столбца) не содержит отображаемого значения.

      Определение пустого диапазона

      Определить в VBA Excel, что диапазон ячеек пуст, можно с помощью функции рабочего листа WorksheetFunction.CountA или свойства диапазона ячеек Range.Text.

      Пример 1

      Определение, что диапазон ячеек пуст, с помощью функции рабочего листа WorksheetFunction.CountA:

      Sub Primer1()

          If WorksheetFunction.CountA(Range(«A1:L8»)) = 0 Then

              MsgBox «Диапазон ячеек ««A1:L8»» пуст»

          Else

              MsgBox «Диапазон ячеек ««A1:L8»» не пуст»

          End If

      End Sub

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

      Пример 2

      Определение, что диапазон ячеек пуст, с помощью свойства Text объекта Range:

      Sub Primer2()

          If Range(«A1:L8»).Text = «» Then

              MsgBox «Диапазон ячеек ««A1:L8»» пуст»

          Else

              MsgBox «Диапазон ячеек ««A1:L8»» не пуст»

          End If

      End Sub

      Свойство Text объекта Range возвратит пустую строку только в том случае, если все ячейки диапазона будут содержать пустые строки и (или) значение Empty. Если одна или более ячеек в диапазоне будут содержать пустую строку, возвращенную формулой, то код второго примера все-равно определит, что диапазон пуст.

      Определение пустой строки

      Определение пустой строки в VBA Excel с помощью свойства Range.Text:

      Sub Primer3()

          If Rows(5).Text = «» Then

              MsgBox «Указанная строка пуста»

          Else

              MsgBox «Указанная строка не пуста»

          End If

      End Sub

      Данное определение пустой строки используется в коде для удаления пустых строк из таблицы.

      Определение пустого столбца

      Определение пустого столбца в VBA Excel с помощью свойства Range.Text:

      Sub Primer4()

          If Columns(7).Text = «» Then

              MsgBox «Указанный столбец пуст»

          Else

              MsgBox «Указанный столбец не пуст»

          End If

      End Sub

      или

      Sub Primer5()

          If Columns(«G»).Text = «» Then

              MsgBox «Указанный столбец пуст»

          Else

              MsgBox «Указанный столбец не пуст»

          End If

      End Sub


      Фразы для контекстного поиска: диапазон пустой, строка пустая, столбец пустой.


      Be it for troubleshooting formula errors or data integrity, you might find yourself trying to identify those cells going through the entire workbook. In this article we’re going to show to find in Excel if cell is blank using VBA and automate this process.

      How to find in Excel if cell is blank using VBA

      VBA has some predefined types for the cells that contains special values. These can be accessed with the SpecialCells method. The SpecialCells method uses two arguments to specify the cells; Type and Value. Using a combination of these two arguments you can easily access the cell or range type you desired. Below is a list of values both arguments can get.

      Type

      • xlCellTypeAllFormatConditions. Cells of any format
      • xlCellTypeAllValidation. Cells having validation criteria
      • xlCellTypeBlanks. Empty cells
      • xlCellTypeComments. Cells containing comments
      • xlCellTypeConstants. Cells containing constants
      • xlCellTypeFormulas. Cells containing formulas
      • xlCellTypeLastCell. The last cell in the selected range. Note that this will include empty cells that have had any cells that changed from their default format.
      • xlCellTypeSameFormatConditions. Cells having the same format
      • xlCellTypeSameValidation. Cells having the same validation criteria
      • xlCellTypeVisible. All visible cells

      Value

      • xlErrors
      • xlLogical
      • xlNumbers
      • xlTextValues

      To find the blank cells using VBA, using xlCellTypeBlanks constant for the type argument is enough. The value argument can be omitted.

      An important point in here is that the Selection.SpecialCells(xlCellTypeBlanks).Cells returns an array of cells. So, before returning any information, we need to step through each cell in the array. A For Each…Loop is perfect for arrays consisting of objects. We designed our code to return the address of all blank cells in a Message Box.

      To be able to run codes, you need to add a module into the workbook or the add-in file. Copy and paste the code into the module to run it. The main advantage of the module method is that it allows saving the code in the file, so that it can be used again later. Furthermore, the subroutines in modules can be used by icons in the menu ribbons or keyboard shortcuts. Remember to save your file in either XLSM or XLAM format to save your VBA code.

      Find blank cells

      Sub FindBlankCells()
      
          Dim rng As Range, message As String
      
          For Each rng In Selection.SpecialCells(xlCellTypeBlanks).Cells
      
              message = message & Chr(10) & rng.Address 'Chr(10) is for new line
      
          Next
      
          MsgBox message, vbOKOnly, "Empty Cells" 'vbOKOnly is the type of the message box
      
      End Sub

      МЕНЮ САЙТА

      • 1
      • 2
      • 3
        • Информация о сайте

        • Развите сайта

      • Excel

        • Приемы работы

        • Инструменты и настройки

        • Интеграция

      • Готовые решения

        • Excel

        • VBA

      • Форумы

        • Вопросы и решения

        • Работа и общение

        • Работа форума и сайта

      • Библиотека

        • Книги по Excel

        • Книги по VBA

        • Разное

      • Видеосалон

      • Справочники

      • Разработчик

      КАТЕГОРИИ РАЗДЕЛА

      ОПРОСЫ


      Определить пустая ячейка или нет

      20.07.2013, 12:03
      Для конкретной ячейки (в примере используется A1):

      Sub excample()
       If IsEmpty(Range("A1")) = True Then
       MsgBox "Ячейка пустая"
       Else
       MsgBox "Ячейка непустая"
       End If
      End Sub

      Для активной ячейки:

      Sub excample()
       If IsEmpty(ActiveCell) = True Then
       MsgBox "Ячейка пустая"
       Else
       MsgBox "Ячейка непустая"
       End If
      End Sub
      • 1
      • 2
      • 3
      • 4
      • 5

      Добавил: Serge_007 |

      | Теги: vba, Епусто, IsEmpty, определить наличие в ячейке

      Просмотров: 62954

      | Рейтинг: 5.0/6

      Всего комментариев: 2

      Порядок вывода комментариев:

         еще можно так
      Sub test()
      If Len(ActiveCell) Then
      MsgBox «Ячейка не пустая»
      Else
      MsgBox «Ячейка пустая»
      End If
      End Sub

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

      [

      Регистрация

      |

      Вход

      ]

      В этом учебном материале вы узнаете, как использовать Excel функцию ISEMPTY с синтаксисом и примерами.

      Описание

      Функцию ISEMPTY Microsoft Excel можно использовать для проверки пустых ячеек или неинициализированных переменных.
      Функция ISEMPTY — это встроенная в Excel функция, которая относится к категории информационных функций. Её можно использовать как функцию VBA в Excel.
      В качестве функции VBA вы можете использовать эту функцию в коде макроса, который вводится через редактор Microsoft Visual Basic Editor.

      Синтаксис

      Синтаксис функции ISEMPTY в Microsoft Excel:

      IsEmpty( value )

      Аргументы или параметры

      value
      Значение, которое вы хотите проверить.
      Если value — пустая ячейка или неинициализированная переменная, эта функция вернет True. В противном случае функция вернет False.

      Возвращаемое значение

      Функция ISEMPTY возвращает True, если value является пустой ячейкой или неинициализированной переменной.
      Функция ISEMPTY возвращает False, если value является ячейкой или переменной, содержащей значение (т.е. не пусто).

      Примечание

      • См. также функцию ЕПУСТО (функция рабочего листа).

      Применение

      • Excel для Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 для Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000

      Тип функции

      • Функция VBA

      Пример (как функция VBA)

      Функцию ISEMPTY можно использовать только в коде VBA в Microsoft Excel. Мы можем использовать функцию ISEMPTY для проверки ячейки рабочего листа или переменной.
      Давайте рассмотрим оба этих случая.

      С ячейкой рабочего листа

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

      Sub TestCellA1()

        ‘Проверяет, является ли значение ячейки A1 пусто

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

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

        End If

      End Sub

      В этом примере мы проверим, пуста ли ячейка A1.
      Если ячейка A1 пуста, отобразится сообщение «Ячейка A1 пуста».

      С переменной

      Функцию ISEMPTY также можно использовать для проверки, инициализирована ли переменная.
      Если переменная не была инициализирована, функция ISEMPTY вернет true. В противном случае функция вернет false.

      Переменная не инициализирована

      Давайте сначала рассмотрим пример, когда переменная не была инициализирована:

      Sub TestVariable()

        Dim LResult

      ‘Проверить, инициализирована ли переменная

        If IsEmpty(LResult) = True Then

         MsgBox «Переменная не инициализирована.»

        End If

      End Sub

      В этом примере переменная с именем LResult была объявлена, но не была инициализирована значением. В результате функция ISEMPTY вернет true и отобразит сообщение «Переменная не инициализирована.»

      Переменная инициализирована

      Теперь мы изменим приведенный выше пример и инициализируем переменную LResult перед вызовом функции ISEMPTY.

      Sub TestVariable()

        Dim LResult

        ‘Инициализировать переменную с именем LResult

        LResult = «Google is simply the best search engine!»

        ‘Проверить, инициализирована ли переменная

        If IsEmpty(LResult) = True Then

         MsgBox «Переменная не инициализирована.»

        End If

      End Sub

      Поскольку переменная LResult теперь инициализирована значением «Google is simply the best search engine!», Функция ISEMPTY вернет false, и окно сообщения отображаться не будет.

      Если пользователь использует таблицу 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. Очень часто пользователи забывают о формуле массива, чтобы осуществить проверку сразу большого количества ячеек. Иначе значение, возвращаемое функцией, будет неправильным. 

      Выводы

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

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

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

      Понравилась статья? Поделить с друзьями:
    • Макросы в excel если равно то
    • Макросы в excel календаря
    • Макросы в excel если значение в ячейке
    • Макросы в excel как это работает
    • Макросы в excel добавление новой строки