2015-03-21 3 views
3

Я понятия не имею, как сделать функцию на excel, которая возвращает количество значимых цифр в числе. Так, например. Если я вхожу 0.0001004 выход будет 4.Функция, которая возвращает число значимых цифр

+1

Почему бы это было 4 в этом случае? – GSerg

+0

Поскольку значимые цифры составляют от 1 до 4 1004, всего 4 номера. – Leo

+1

Вам не нужно смеяться, я не писал здесь шутки. Вы можете проверить, что «нули, появляющиеся где угодно между двумя ненулевыми цифрами, значительны». в [link] (http://en.wikipedia.org/wiki/Significant_figures) – Leo

ответ

0

Я думаю, что вы ищете:

=IF(AND(A1<1,A1>0),LEN(MID(A1,IF(ROUND(-LOG10(A1),0)=0,3,ROUND(-LOG10(A1),0)+2),99)),0) 

Первый IF проверяет, находится ли входной номер в диапазоне 0-1, ROUND(-LOG10(A1),0) находит количество нулей, подстроку MID от ненулевой цифры до конца (99), LEN Проверьте длину.

enter image description here

+1

Он возвращается 3 для 0,43. Он должен вернуть 2 правильно? – Leo

+1

@ LeonardoSaturninoFerreira смотреть редактировать – zx8754

+1

Wow! Я не знаю, что вы сделали, но это решает мою проблему. Мне нужно это для чисел ниже 1, так что это работает для меня. Однако, строго говоря, -1 должен вернуться 1, 1.2 должен вернуться 2 и 10 также должен вернуться 2. Спасибо за ваше время. – Leo

0

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

Public Function Sig(r As Range) As Long 
    If InStr(r.Text, ".") = 0 Then 
     Sig = 0 
     Exit Function 
    End If 

    t = Split(r.Text, ".")(1) 
    l = Len(t) 
    For i = 1 To l 
     If Left(t, 1) = "0" Then 
      t = Mid(t, 2) 
     Else 
      Exit For 
     End If 
    Next i 
    Sig = Len(t) 
End Function 

Он явно зависит от форматирование клетки

+0

Гэри, извините за вопрос новичков, как я могу заставить эту функцию получить номер из ячейки, скажем A1, а затем вывести число сиг. инжир в ячейку А2? – Leo

0

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

=IF(B3="","",IF(ABS(B3)=0,0,LEN((ABS(B3)/10^LEN(ABS(B3)))*10^(LEN(ABS(B3)/10^LEN(ABS(B3)))-LEN(INT(ABS(B3)/10^LEN(ABS(B3))))-1)))+LEN(B3)-LEN(ABS(B3))-IF(LEFT(B3,1)="-",1,0)+IF(OR(LEFT(B3,1)=".",LEFT(B3,2)="-."),1,0))+IF(AND(NOT(ISERROR(FIND(".",B3))),ISERROR(FIND(".",ABS(B3)))),-1,0) 

Это уравнение является немного более сложным, чем это абсолютно необходимо из-за его способность обрабатывать ввод текста, где вы получите осложняющие факторы, как 0,123 против .123, отрицательных чисел и конечных нулей (например, -.0900).

enter image description here

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