ВНИМАНИЕ: впереди невероятно длинная формула Excel
Я также хотел работать со значащими цифрами, но не смог использовать VBA, поскольку электронные таблицы их не поддерживают. Я зашел на этот вопрос / ответ и на многие другие сайты, но все ответы, похоже, не всегда касаются всех чисел. Меня заинтересовал принятый ответ, и он был близок к этому, но как только мои цифры стали ‹ 0,1, я получил ошибку #value!. Я уверен, что мог бы исправить это, но я уже был на пути и просто продолжал.
Проблема:
Мне нужно было сообщить переменное количество значащих цифр в положительном и отрицательном режиме с числами от 10 ^ -5 до 10 ^ 5. Кроме того, согласно клиенту (и purple math), если значение 100 было задано с точностью до +/- 1, и мы хотим представить с 3-значными цифрами, что ответ должен быть «100». поэтому я включил и это.
Решение:
Мое решение для формулы Excel, которая возвращает текстовое значение с необходимыми значащими цифрами для положительных и отрицательных чисел.
Он длинный, но, по-видимому, дает правильные результаты в соответствии с моим тестированием (изложенным ниже) независимо от запрошенного числа и значащих цифр. Я уверен, что это можно упростить, но в настоящее время это не входит в объем. Если кто-то хочет предложить упрощение, пожалуйста, оставьте мне комментарий!
=TEXT(IF(A1<0,"-","")&LEFT(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00"),sigfigs+1)*10^FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1),(""&(IF(OR(AND(FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1)+1=sigfigs,RIGHT(LEFT(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00"),sigfigs+1)*10^FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1),1)="0"),LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00"))<=sigfigs-1),"0.","#")&REPT("0",IF(sigfigs-1-(FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1))>0,sigfigs-1-(FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1)),0)))))
Примечание. У меня есть именованный диапазон под названием "sigfigs", и мои числа начинаются в ячейке A1
Результаты тестирования:
Я протестировал его на основе списка примеров из Википедии и своих собственных положительных и отрицательных примеров. . Я также протестировал несколько значений, которые вызвали у меня проблемы на раннем этапе, и все они, похоже, дают правильные результаты.
Я также протестировал несколько значений, которые раньше вызывали у меня проблемы, и теперь все они дают правильные результаты.
Тест трех цифр
99.99 -> 100.
99.9 -> 99.9
100 -> 100.
101 -> 101
Примечания:
Обработка отрицательных чисел
Чтобы обрабатывать отрицательные числа, я включил конкатенацию с отрицательным знаком, если меньше 0, и использовал абсолютное значение для всей остальной работы.
Метод построения: изначально он был разделен примерно на 6 столбцов в Excel, которые выполняли различные шаги, а в конце я объединил все шаги в одну формулу выше.
person
Sisyphus
schedule
27.01.2017