Excel VBA-интерпретировать значения" N/A"
я просматриваю электронную таблицу, которая содержит столбец цен, в виде double
типы. Я пытаюсь найти отсутствующее значение, которое отображается в электронной таблице как "n/a"
, но это не позволяет мне интерпретировать это как string
тип.
ячейки, содержащей "n/a"
Кажется integer
введите; как я могу это прочитать?
3 ответов
ячейка, содержащая #N / A, извлекается VBA как вариант, содержащий код ошибки
обычно лучше всего назначать ячейки Excel вариантам, потому что ячейка может содержать число(двойное), логическое, строку или ошибку, и вы не можете заранее сказать, что содержит ячейка.
если все вы хотите сделать, это проверить значение ошибки тут:
Application.WorksheetFunction.IsNA(rngToCheck.Value)
здесь rngToCheck
- это ячейка, которую вы хотите проверить на #N/A
значение ошибки
(есть список функций рабочего листа, которые можно вызвать из Excel VBA здесь)
вы также можете изучить rngToCheck.Text
поскольку это будет содержать строку "#N / A"
если вместо этого вы хотите прочитать формулу в ячейке, которая сгенерировала #N/A
тогда rngToCheck.Formula
сделал бы это
вы можете подготовить таблицу, которую вы хотите проверить, как описано ниже, и оценить специальные ячейки, содержащие функции, это легко проверить их на True
или False
в VBA. Кроме того, вы можете написать свою функцию на VBA, как показано ниже.
здесь функции Excel которые проверяют ячейки для специальных значений, например:
=ISNA(C1)
(предполагается, что C1-это ячейка для проверки). Это вернется True
если ячейка #N/A
, иначе False
.
если вы хотите показать, является ли диапазон ячеек (скажем,"C1:C17
") имеет любую ячейку, содержащую #N/A
или нет, это может выглядеть разумно использовать:
=if(ISNA(C1:C17); "There are #N/A's in one of the cells"; "")
к сожалению, это не так, это не будет работать, как ожидалось. Вы можете оценить только одну ячейку.
тем не менее, вы можете это сделать косвенно использование:
=if(COUNTIF(E1:E17;TRUE)>0; "There are #N/A's in one of the cells"; "")
предполагая, что каждый из клеток E1
через E17
содержит ISNA
формулы для каждой ячейки, чтобы проверить:
=ISNA(C1)
=ISNA(C2)
...
=ISNA(C17)
вы можете скрыть столбец E
правой кнопкой мыши по столбцу и выберите скрыть в контекстном меню Excel, чтобы пользователь вашей электронной таблицы не мог видеть этот столбец. Они все еще могут быть доступны и оценены, даже если они скрыты.
на VBA вы можете передать объект диапазона как RANGE
параметр и оценка значения по отдельности с помощью цикла FOR:
Public Function checkCells(Rg As Range) As Boolean
Dim result As Boolean
result = False
For Each r In Rg
If Application.WorksheetFunction.IsNA(r) Then
result = True
Exit For
End If
Next
checkCells = result
End Function
эта функция использует функцию IsNA() внутренне. Он должен быть помещен внутри модуля, а затем может использоваться внутри электронной таблицы, например:
=checkCells(A1:E5)
возвращает True
, если какая-либо ячейка является #N/A
, иначе False
. Необходимо сохранить книгу как книгу с поддержкой макросов (расширение XLSM
), и убедитесь, что макросы не отключены.
в Excel предоставляет больше функций, таких как вышесказанное:
ISERROR(), ISERR(), ISBLANK(), ISEVEN(), ISODD(), ISLOGICAL(),
ISNONTEXT(), ISNUMBER(), ISREF(), ISTEXT(), ISPMT()
например, ISERR()
проверяет все ошибки ячеек, кроме #N/A
и полезно для обнаружения ошибок расчета.
все эти функции описаны в встроенная справка Excel (нажмите F1, а затем введите "IS функции" как текст поиска для объяснения). Некоторые из них могут использоваться внутри VBA, некоторые могут использоваться только в качестве макрофункции ячейки.