Страницы: 1
RSS
Len(isnumber())
 
Добрый день тавариши  
 
Как можно подститать только буквы    
 
на пример:  
5DRTK57  
DFTKR8L9  
LKOUY5TF88 и.тд
 
можно так
 
Еще один вариант с исключающим символом (к примеру пробелом или знаком препинания):  
 
Function CountTextSimbol(EvString As String, Optional EncludeSimbol As String = "") As Integer  
 Dim j As Integer, p As Integer  
 p = 0  
 For j = 1 To Len(EvString)  
  If Mid(EvString, j, 1) <> EncludeSimbol Then  
    If Not IsNumeric(Mid(EvString, j, 1)) Then  
      p = p + 1  
    End If  
  End If  
 Next j  
 CountTextSimbol = p  
End Function
 
Да то что нужно спасибо всем  
 
эшо один вопрось как понять эту "--" символь в формулах (что это означаеть)      
=SUM(--NOT(ISNUMBER(--MID(A6;ROW(INDIRECT("1:"&LEN(A6)));1))))
 
Объяснение от ZVI :)  
В Excel есть так называемое неявное преобразование типов. Например, формула ="2" * 3, перемножающая текстовое значение "2" на числовое, автоматически преобразует текстовое значение "2" в числовое 2. Результат будет равен 6, как будто перемножались два числа.  
Такое преобразование происходит при любым математических действиях: сложении, вычитании, умножении, возведении в степень и проч., включая смену знака на противоположный. Так -"2" автоматически преобразуется в отрицательное число -2.  
А если еще раз сменить знак --"2", то получим число 2.  
Если записать в ячейку формулу: =-(-"2") и с помощью меню Сервис - Зависимости формул - Вычислить формулу - Вычислить(2 раза) посмотреть, что с ней сделает Excel, то эволюция будет такой: -(-"2"), потом -(-2), а затем 2.  
Важно отметить, что если записать формулу без скобок =--"2", то --"2" преобразуется в число 2 без промежуточных действий (в одно действие).  
Аналогичные преобразования будут и при добавлении к текстовому значению нуля ="911"+0, умножении текста на единицу ="02"*1 и прочих математических действиях, не меняющих результата мат. выражения.  
Подобные преобразования Excel выполняет не только с текстовыми значениями, но и с логическими:  
=ЛОЖЬ+0 или =ЛОЖЬ*1 или =--ЛОЖЬ дает 0, так как логическое значение ЛОЖЬ автоматически преобразуется в 0 (ноль).  
=ИСТИНА+0 или =ИСТИНА*1 или =--ИСТИНА дает 1, так как логическое значение ИСТИНА автоматически преобразуется в 1.  
Любое математическое действие само по себе запускает механизм преобразования в числа текстовых значений математического выражения:  
="3"+"5" выдает числовое значение 8  
Собственно, поэтому =СУММПРОИЗВ(--(Выражение1=Условие); --(Выражение2)) можно заменить на =СУММПРОИЗВ((Выражение1=Условие)*(Выражение2)), т.к. математическое действие умножения автоматически запускает механизм преобразования типов множителей, и дополнительных преобразователей типа двойного отрицания уже не требуется.  
Ну и, наконец, почему всё же часто используют именно двойное отрицание, а не добавление нуля или умножение на единицу?  
Ответ прост: двойное отрицание теоретически выполняется быстрее умножения на 1, сложения с нулем и других математических действий. Экономия времени вычисления небольшая, и по некоторым оценкам составляет примерно 15%
 
Очен спасибо за помощ
Страницы: 1
Читают тему
Наверх