2015-03-17 7 views
2

Я пытаюсь выполнить проверку столбца данных, чтобы увидеть, содержат ли его строки только определенные символы. Символы, о которых идет речь, - 0 - 9 и /. Если присутствуют только те, необходимо вернуть OK, в противном случае ошибка (или 1 и 0, что-либо различающееся в порядке). Она должна в основном выглядеть следующим образом (жирным колонки):Как проверить, содержит ли ячейка только символы из определенного списка?

https://i.imgur.com/IrJuZ47.png

Я имел ограниченный успех с MATCH и ВПР, но ничего, что использует диапазон. Формула была бы предпочтительнее, но VBA тоже круто. Есть идеи?

+2

Пожалуйста, не просто попросите нас решить проблему за вас. Покажите нам, как вы сами пытались решить проблему, а затем показали нам, в чем был результат, и расскажите, почему вы считаете, что это не сработало. См. Также страницы справки (связанные вверху каждой страницы) о том, как написать хороший вопрос. – AdrianHHH

+0

Вероятно, избыток, но один из способов - использовать [VBA Regex] (http://stackoverflow.com/q/22542834/2521004) –

ответ

0

Дайте этому UDF() попробовать:

Public Function CellTest(sIn As Variant) As String 
    Dim L As Long, i As Long, CH As String 
    L = Len(sIn) 

    For i = 1 To L 
     CH = Mid(sIn, i, 1) 
     If IsNumeric(CH) Or CH = "/" Then 
     Else 
      CellTest = "No Good" 
      Exit Function 
     End If 
    Next i 

    CellTest = "Good" 
End Function 

enter image description here

+0

Это хорошо работает, однако он возвращает «Хорошо», когда ячейка полностью пуста. – MapEngine

3

С формулой (в B1 и скопировал вниз, если 12 в A1):

=IF(ISNUMBER(VALUE(SUBSTITUTE(A1,"/",""))),"OK","ERROR") 

Добавление в исключении . делает это немного дольше:

=IF(AND(ISERROR(FIND(".",A1)),ISNUMBER(VALUE(SUBSTITUTE(A1,"/","")))),"OK","ERROR") 
+2

Эта формула будет обозначать ** 1.2 ** как ** OK ** –

+1

Истина действительно (и это '.' не было * указано * как допустимый символ). – pnuts

0

Для формульного подхода следующая формула , введенная массивом, возвращает TRUE или FALSE в зависимости от наличия недопустимых символов. Чтобы подтвердить формулу, удерживайте ctrl-shift при ударе введите и Excel поместите фигурные скобки {...} вокруг формулы.

=AND(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=47,CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<=57) 

Вы можете использовать это как logical_test в функции IF, чтобы возвращать то, что вы хотите.

Смежные вопросы