Excel функция проверки типов

Функция T в Excel выполняет проверку типа принимаемых данных и возвращает текстовую строку, если в ячейке, ссылка на которую была передана в качестве параметра, содержатся текстовые данные либо текст был передан в функцию явно (например, Т(«любое текстовое значение»)).

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

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

Исходные таблицы:

Исходные таблицы.

Для решения используем следующую формулу:

Данная запись имеет следующий смысл:

  1. Функция ЕСЛИ выполняет проверку значения, которое вернет функция Т;
  2. Если ячейка G2 не содержит текстовые данные, будет возвращено пустое значение «» и сработает функция ТЕКСТ, которая преобразует числовой тип данных в текстовый и запишет полученное значение в ячейку B2;
  3. Если в ячейке G2 содержатся текстовые данные, они будут перенесены в ячейку B2 без изменений.

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

заполним все остальные ячейки.

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

Т.
только текстовые данные.

То есть, преобразование в текстовые данные прошло успешно.



Как определить формат ячейки в Excel?

Пример 2. В таблице Excel находится защищенный лист с таблицей, в которой содержатся данные об адресе клиента. Предположительно, номер дома и номер квартиры являются числовыми данными, полученными в результате перебора строки с использованием функций ПРАВСИМВ, ЛЕВСИМВ, НАЙТИ и ЗНАЧЕН. Последняя преобразует данные в формат Число (если это возможно). Определить формат данных поможет функция Т, а преобразовать в текстовый формат – ТЕКСТ.

Таблица на защищенном листе (формулы не видны, так как стоит защита):

Таблица на защищенном листе.

Данные в виде текста необходимо ввести в следующую таблицу:

Данные в виде текста.

В ячейке B2 введем следующую формулу:

следующую формулу.

Описание функций формулы:

  1. Т(защищенный!B3)=»» – условие, проверяемое функцией ЕСЛИ. Результат выполнения функции Т проверяется на пустое значение «».
  2. ТЕКСТ(защищенный!B3;»#») – функция, преобразующая данные из ячейки защищенный!B3 в текстовый тип данных.
  3. защищенный!B3 – получение данных из ячейки, если условие Т(защищенный!B3)=»» — ЛОЖЬ.

Аналогично заполним данными ячейку B3. В результате получим таблицу с только текстовыми значениями:

заполним данными.

Как определить тип данных в Excel?

Пример 3. В Excel можно определить тип данных, содержащихся в определенной ячейке, используя функцию ТИП, которая возвращает числовое значение, соответствующее одному из поддерживаемых типов (например, 1 – Число, 2 – Текст, 4 – Логическое значение и т. д.). Определим типы данных в некоторой таблице, и если они не являются текстовыми, преобразуем их с помощью функции ТЕКСТ.

Исходная таблица:

Пример 3.

Введем в ячейке C3 следующую формулу:

Описание аргументов:

  1. ТИП(B3)<>2 – условие проверки, 2 – тип текстовых данных;
  2. ТЕКСТ(B3;»») – функция, возвращающая текстовое значение из ячейки B3, если результат проверки условия – ИСТИНА;
  3. B3 – неизмененное значение ячейки, если результат условия проверки – ЛОЖЬ.

Аналогично заполним последующие ячейки столбца C. В результате получим:

В результате.

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

используем функцию Т.

Функция Т в Excel и особенности ее синтаксической записи

Функция Т имеет следующий синтаксис:

=Т(значение)

Единственный параметр значение является обязательным для заполнения. Он используется для передачи проверяемых данных.

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

Примечания 2:

  1. Если функция Т принимает на вход текстовые данные (строка текста, ячейка, содержащая текст), она вернет эти данные.
  2. Функция Т возвращает пустую строку, если она принимает на вход числовые данные, логическое значение, ссылку на ячейку, в которой не содержится текст. Примеры:
  • Результатом выполнения функции =Т(293) будет являться пустой текст «», поскольку принимаемое на вход значение является данными числового типа;
  • Следующая запись =Т(«функция Т работает») вернет строку текста «функция Т работает» в ячейку, в которой данная функция записана;
  • Если в ячейку ввести запись типа =Т(текст), то результатом выполнения функции будет код ошибки #ИМЯ?. Поэтому при явной передаче параметра в функцию его значение необходимо помещать в двойные кавычки.
  • Результатом выполнения функции =Т(A1) является текст, содержащийся в ячейке A1 или пустое значение «», если в данной ячейке находятся данные другого типа.

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

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

Способ 1. Использовать функцию TypeName для определения типа данных

Эта функция возвращает строку с названием типа данных на английском. В качестве аргумента принимает переменную, значение ячейки.
Обратите внимание: Функция определяет только стандартные типы данных и не может определить пользовательский тип (определенный с помощью Type).

Возможные возвращаемые функцией значения:

Byte Число типа Byte
Integer Целое число
Long Длинное целое число
Single Число одиночной точности с плавающей запятой
Double Число двойной точности с плавающей запятой
Currency Валюта
Decimal Число с плавающей запятой
Date Дата
String Строка
Boolean Логическое
Error Ошибка
Empty Не проинициализировано (т.е. переменная не была объявлена)
Null Неверные данные (в переменной нет корректных данных)
Object Объект (класс)
Unknown Тип данных не известен
Nothing Объект, никуда не ссылающийся

Приведу несколько примеров по использованию TypeName.

Пример 1. Определение типа переменной.

Dim v As Integer
MsgBox TypeName(v) ' Выведет: Integer

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

Пример 2. Использование TypeName в условии.

Dim v As Integer
If TypeName(v) = "Integer" Then MsgBox "Yes" Else MsgBox "No"         ' Yes
If TypeName(v) = "integer" Then MsgBox "Yes" Else MsgBox "No"         ' No
If LCase(TypeName(v)) = "integer" Then MsgBox "Yes" Else MsgBox "No"  ' Yes

Пример 3. Определение типа данных в ячейке.

MsgBox TypeName(Cells(1, 1).Value) ' Выведет тип данных в ячейке A1

Если функции была передана переменная массив, она вернет тип данных в массиве с добавлением скобок.

Пример 4. Определение типа массива.

Dim Arr1(10) As Integer
Dim Arr2(10)
MsgBox TypeName(Arr1) ' Выведет: Integer()
MsgBox TypeName(Arr2) ' Выведет: Variant()

Способ 2. Проверка на возможность преобразования строки к нужному типу.

Бывает ситуация, когда значение, например, число или дата, содержится в строке. В этом случае TypeName вернет String, а не Integer или Date. Чтобы узнать, что содержится в строке, можно воспользоваться одной из функций IsNumeric, IsDate, IsObject, IsArray, IsNull, IsError.

IsNumeric Проверяет может ли выражение быть преобразовано в число
IsDate Проверяет может ли выражение быть преобразовано в дату
IsObject Проверяет, является ли переменная объектом
IsArray Проверяет, является ли переменная массивом
IsNull Проверка на пустое значение
IsError Проверка выражения на ошибку

Пример 4. Определение может ли переменная быть преобразована в число.

Dim v As String
If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no (т.к. в строке нет числа)
v = "120"
If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes
v = "120.45"
If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no
v = "test 120"
If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no
v = "120 test"
If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no

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

Пример 5. Определение содержит ли переменная дату (может быть преобразована в дату).

Dim firstDate, secondDate As Date
Dim timeOnly, dateAndTime, noDate As String
firstDate = CDate("12.05.2017")
secondDate = #12/5/2017#
timeOnly = "15:45"
dateAndTime = "12.05.2017 15:45"
noDate = "Test"
If IsDate(firstDate) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes
If IsDate(secondDate) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes
If IsDate(timeOnly) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes
If IsDate(dateAndTime) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes
If IsDate(noDate) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no

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

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

19

19 people found this article helpful

Updated on March 14, 2021

What to Know

  • Choose a cell to make it active. Go to the Formulas tab and select More Functions > Information > TYPE.
  • Select a cell in the worksheet to enter the cell reference. Select OK to complete the function.
  • A number appears in the active cell. A 1 indicates the referenced cell contains a number; a 2 indicates text. See the chart for a complete list.

The article explains how to check the type of data in an Excel Cell using the TYPE function.

How to Check the Type of Data in an Excel Cell

Excel’s TYPE function is one of the information functions that can be used to find out information about a specific cell, worksheet, or workbook. The TYPE function reveals the type of data located in a specific cell, but it doesn’t determine whether a cell contains a formula.

Open the Dialog Box

This information covers the steps used to enter the TYPE function into cell B2 of the chart below using the function’s dialog box.

  1. Click on cell B2 to make it the active cell — the location where the function results will be displayed;
  2. Click on the Formulas tab of the ribbon menu;
  3. Choose More Functions > Information from the ribbon to open the function drop-down list;
  4. Click on TYPE in the list to bring up that function’s dialog box.

Enter the Function’s Argument

  1. Click on cell A2 in the worksheet to enter the cell reference into the dialog box;
  2. Click OK to complete the function and return to the worksheet;
  3. The number «1» should appear in cell B2 to indicate that the type of data in cell A2 is a number;
  4. When you click on cell B2, the complete function =TYPE(A2) appears in the formula bar above the worksheet.

What the Type Function Results Mean

Data Type Function Returns
a number returns a value of 1 — row 2 in the image above;
text data returns a value of 2 — row 5 in the image above;
Boolean or logical value returns a value of 4 — row 7 in the image above;
error value returns a value of 1 — row 8 in the image above;
an array returns a value of 64 — rows 9 and 10 in the image above.

In the example, cells A4 and A5 contain formulas that return a number and text data respectively. As a result, the TYPE function in those rows returns a result of 1 (number) in row 4 and 2 (text) in row 5.

Arrays and Type 64

In order to get the TYPE function to return a result of 64, indicating that the type of data is an array — the array must be entered directly into the function as the Value argument, rather than using the cell reference to the array’s location.

As shown in rows 9 and 10, the TYPE function returns the result of 64 no matter whether the array contains numbers or text.

The TYPE Function’s Syntax and Arguments

A function’s syntax refers to the layout of the function and includes the function’s name, brackets, and arguments.

The syntax for the TYPE function is:

= TYPE ( Value )

Value: (required) Can be any type of data such as a number, text or array. This argument can also be a cell reference to the location of the value in a worksheet.

Type Function Options

Options for entering the function and its arguments include:

  1. Typing the complete function: =TYPE(A2) into cell B2
  2. Selecting the function and its arguments using the TYPE function dialog box

Although it is possible to just type the complete function by hand, many people find it easier to use the dialog box to enter the function’s arguments.

Using this approach, the dialog box takes care of such things as entering the equal sign, the brackets, and, when necessary, the commas that act as separators between multiple arguments.

Thanks for letting us know!

Get the Latest Tech News Delivered Every Day

Subscribe

Иногда бывает непонятно, какие данные записаны в ячейке. Как правило путаница происходит между текстовым и числовым форматом. Главная проблема такой путаницы — не считаются формулы. Можем ли мы определить тип данных в ячейке формулой, чтобы использовать его в дальнейших вычислениях? Да можем, а поможет функция ТИП, почти неизвестная даже опытным пользователям Excel.

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

Содержание

  • Функция ТИП в Excel
  • Как определить тип данных в ячейке и использовать их в вычислениях?
  • Похожие статьи

Функция ТИП в Excel

ТИП стала доступна начиная с версии продукта 2007. Как и любая функция имеет свой синтаксис с одним аргументом и возвращает 5 чисел. 1 если данные число, 2 если текст, 4 — логическое выражение, ошибка — 16 и массив 64. Почему 16 и 64, не спрашивайте, ответа я не нашел. Наглядно, как работает функция, показано на картинке:

тип данных в ячейке

Важно отметить, что ТИП не сможет разобрать формула в ячейке или значение, она возвращает свое значение исходя из результатов вычисления формулы или соответственно значения в ячейке.

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

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

Функция ТИП в Excel, применить

Как вы видите, в столбце В я применил функцию ТИП, соответственно, когда в столбце А у нас число, функция ТИП возвращает 1. Далее уже можно использовать эти данные, как вам необходимо.

Пример прикладываю.

Проверка переменных и выражений с помощью встроенных функций VBA Excel: IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject.

Проверка переменных и выражений

Встроенные функции VBA Excel — IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject — проверяют значения переменных и выражений на соответствие определенному типу данных или специальному значению.

Синтаксис функций для проверки переменных и выражений:

Expression — выражение, переменная или необязательный аргумент для IsMissing.

Все функции VBA Excel для проверки переменных и выражений являются логическими и возвращают значение типа Boolean — True или False.

Функция IsArray

Описание функции

Функция IsArray возвращает значение типа Boolean, указывающее, является ли переменная массивом:

  • True — переменная является массивом;
  • False — переменная не является массивом.

Пример с IsArray

Sub Primer1()

Dim arr1(), arr2(1 To 10), arr3

    Debug.Print IsArray(arr1)  ‘Результат: True

    Debug.Print IsArray(arr2)  ‘Результат: True

    Debug.Print IsArray(arr3)  ‘Результат: False

arr3 = Array(1, 2, 3, 4, 5)

    Debug.Print IsArray(arr3)  ‘Результат: True

End Sub

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

Функция IsDate

Описание функции

Функция IsDate возвращает логическое значение, указывающее, содержит ли переменная значение, которое можно интерпретировать как дату:

  • True — переменная содержит дату, выражение возвращает дату, переменная объявлена с типом As Date;
  • False — в иных случаях.

Пример с IsDate

Sub Primer2()

Dim d1 As String, d2 As Date

    Debug.Print IsDate(d1)  ‘Результат: False

    Debug.Print IsDate(d2)  ‘Результат: True

d1 = «14.01.2023»

    Debug.Print IsDate(d1)  ‘Результат: True

    Debug.Print IsDate(Now)  ‘Результат: True

End Sub

Функция IsEmpty

Описание функции

Функция IsEmpty возвращает значение типа Boolean, указывающее, содержит ли переменная общего типа (As Variant) значение Empty:

  • True — переменная содержит значение Empty;
  • False — переменной присвоено значение, отличное от Empty.

Пример с IsEmpty

Sub Primer3()

Dim s As String, v As Variant

    Debug.Print IsEmpty(s)  ‘Результат: False

    Debug.Print IsEmpty(v)  ‘Результат: True

v = 125

    Debug.Print IsEmpty(v)  ‘Результат: False

Range(«A1»).Clear

    Debug.Print IsEmpty(Range(«A1»))  ‘Результат: True

Range(«A1») = 123

    Debug.Print IsEmpty(Range(«A1»))  ‘Результат: False

End Sub

Как видно из примера, функцию IsEmpty можно использовать для проверки ячеек на содержание значения Empty (пустая ячейка общего формата).

Функция IsError

Описание функции

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

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

Пользователь может определить одну или несколько ошибок для своей процедуры или функции с рекомендациями действий по ее (их) исправлению. Возвращается номер ошибки с помощью функции CVErr.

Пример с IsError

Допустим, пользователь определил, что ошибка №25 означает несоответствие аргумента функции Vkuba числовому формату:

Function Vkuba(x)

    If IsNumeric(x) Then

        Vkuba = x ^ 3

    Else

        Vkuba = CVErr(25)

    End If

End Function

Sub Primer4()

    Debug.Print Vkuba(5)  ‘Результат: 125

    Debug.Print IsError(Vkuba(5))  ‘Результат: False

    Debug.Print Vkuba(«пять»)  ‘Результат: Error 25

    Debug.Print IsError(Vkuba(«пять»))  ‘Результат: True

End Sub

Функция IsMissing

Описание функции

Функция IsMissing возвращает значение типа Boolean, указывающее, был ли необязательный аргумент типа данных Variant передан процедуре:

  • True — если в процедуру не было передано значение для необязательного аргумента;
  • False — значение для необязательного аргумента было передано в процедуру.

Пример с IsMissing

Function Scepka(x, Optional y)

    If Not IsMissing(y) Then

        Scepka = x & y

    Else

        Scepka = x & » (а необязательный аргумент не подставлен)»

    End If

End Function

Sub Primer5()

    Debug.Print Scepka(«Тропинка», » в лесу»)  ‘Результат: Тропинка в лесу

    Debug.Print Scepka(«Тропинка»)  ‘Результат: Тропинка (а необязательный аргумент не подставлен)

End Sub

Функция IsNull

Описание функции

Функция IsNull возвращает логическое значение, указывающее, является ли Null значением переменной или выражения:

  • True — значением переменной или выражения является Null;
  • False — в иных случаях.

Пример с IsNull

Функция IsNull особенно необходима из-за того, что любое условие с выражением, в которое входит ключевое слово Null, возвращает значение False:

Sub Primer6()

Dim Var

Var = Null

    If Var = Null Then Debug.Print Var  ‘Результат: «»

    If Var <> Null Then Debug.Print Var  ‘Результат: «»

    If IsNull(Var) Then Debug.Print Var  ‘Результат: Null

End Sub

Функция IsNumeric

Описание функции

Функция IsNumeric возвращает значение типа Boolean, указывающее, можно ли значение выражения или переменной рассматривать как число:

  • True — если аргумент функции может рассматриваться как число;
  • False — в иных случаях.

Пример с IsNumeric

Sub Primer7()

Debug.Print IsNumeric(«3,14»)  ‘Результат: True

Debug.Print IsNumeric(«четыре»)  ‘Результат: False

End Sub

Функция IsObject

Описание функции

Функция IsObject возвращает логическое значение, указывающее, является ли переменная объектной:

  • True — переменная содержит ссылку на объект или значение Nothing;
  • False — в иных случаях.

Функция IsObject актуальна для переменных типа Variant, которые могут содержать как ссылки на объекты, так и значения других типов данных.

Пример с IsObject

Sub Primer8()

Dim myObj As Object, myVar As Variant

    Debug.Print IsObject(myObj)  ‘Результат: True

    Debug.Print IsObject(myVar)  ‘Результат: False

Set myVar = ActiveSheet

    Debug.Print IsObject(myVar)  ‘Результат: True

End Sub


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