ВНИМАНИЕ: с ума длиной первенствует формула впереди
Я также смотрел на работу со значительными фигурами, и я не смог использовать VBA как электронные таблицы не может поддерживать их. Я пошел на этот вопрос/ответ и на многие другие сайты, но все ответы все время не имеют отношения ко всем номерам. Меня заинтересовал принятый ответ, и он приблизился, но как только мои номера были < 0.1 У меня получилось #value! ошибка. Я уверен, что я мог бы это исправить, но я уже пошел по тропинке и просто нажал.
Проблема:
мне нужно сообщить переменное число значащих цифр в положительном и отрицательном режиме с номерами от 10^-5 до 10^5. Кроме того, согласно клиенту (и до purple math), если было поставлено значение , оно было точным до +/- 1, и мы хотим представить 3-сиговый фиг, ответ должен быть «100». поэтому я включил это также.
Решение:
Мое решение для формулы первенствовать, которая возвращает текстовое значение с требуемыми значащими цифрами для положительных и отрицательных чисел.
Это long, но, как представляется, генерирует правильные результаты в соответствии с моими испытаниями (описанными ниже) независимо от количества и значимых цифр. Я уверен, что это можно упростить, но в настоящее время это не так. Если кто-то хочет предложить упрощение, пожалуйста, оставьте мне комментарий!
=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
Результаты тестов:
Я тестировал против wikipedia list of examples и мои собственные примеры пока положительные и отрицательные. Я также тестировал несколько значений, которые давали мне проблемы на ранней стадии, и все, кажется, дают правильные результаты.
Я также протестировал с несколькими значениями, которые дали мне вопросы на ранней стадии и все, кажется, производит правильные результаты в настоящее время.
3 Инжир Тестовых
99.99 -> 100.
99.9 -> 99.9
100 -> 100.
101 -> 101
Примечание:
Лечения отрицательного чисел
Для Лечить отрицательные числа, я включил конкатенацию с отрицательным знаком, если меньше чем 0, и использовать абсолютное значение для всей другой работы.
Способ строительства: Первоначально она была разделена на около 6 столбцов в Excel, которые выполняются различные шаги, и в конце я слившихся все шаги в одну формулу выше.
Так что вы хотите, чтобы: 18.036-> 18,0, 18.16-> 18,2 185.212-> 185, 1856705.5223-> 1860000? –
@ bto.rdz Правильно – Veridian
Единственный способ, которым я знаю, это преобразовать ваш номер в строку, затем выполнить некоторую операцию в зависимости от того, где находится десятичная точка, плохо выставить пример –