Определение количества значащих цифр (Microsoft Excel)
Бренда интересуется количеством значащих цифр в значении. Она задается вопросом, есть ли функция или формула Excel, которую она может использовать, которая вернула бы количество значащих цифр в значении, отображаемом в ячейке.
Этот вопрос не так прост, как кажется. Некоторым людям нужно найти количество цифр в значении без десятичных знаков или отрицательных знаков.
Если это все, что вам нужно, то такая формула будет работать нормально:
=IF(A1<0,IF(A1=INT(A1),LEN(A1)-1,LEN(A1)-2),IF(INT(A1)=A1,LEN(A1),LEN(A1)-1))
Однако причина того, что это не так просто, заключается в том, что количество значащих цифр в значении зависит от многих факторов. Суть в том, что вы не всегда можете определить, глядя на значение, сколько значащих цифр оно имеет.
Например, значение 100 может иметь 1, 2 или 3 значащих цифры. Предполагается, что значение 1,00 имеет 3 значащих цифры, но это может быть не так, если отображаемое значение является результатом форматирования, наложенного Excel — например, значение в ячейке может быть 1,0000437, которое Excel форматирует как 1,00. Вы можете узнать больше о значащих цифрах здесь:
http://excel.tips.net/T001983
Есть несколько общепринятых способов обозначения значащих цифр в числе, но любая попытка кодифицировать набор правил всегда открыта для обсуждения. Один такой набор правил был отмечен в Википедии, в разделе «Определение значащих цифр» этой статьи:
http://en.wikipedia.org/wiki/Significant_figures
Имея в виду хотя бы элементарный набор правил (например, тот, что в статье в Википедии), можно разработать определяемую пользователем функцию, которая даст вам наиболее вероятное количество значащих цифр для значения.
Function SigFigs(rng As Range, Optional iType As Integer = 1) 'iType = 1 is Min 'iType = 2 is Max Dim rCell As Range Dim sText As String Dim sText2 As String Dim iMax As Integer Dim iMin As Integer Dim iDec As Integer Dim i As Integer Application.Volatile Set rCell = rng.Cells(1) 'if not a number then error If Not IsNumeric(rCell) Or IsDate(rCell) Then SigFigs = CVErr(xlErrNum) Exit Function End If sText2 = Trim(rCell.Text) sText = "" 'find position of decimal point (it matters) iDec = InStr(sText2, ".") 'strip out any non-numbers (including decimal point) For i = 1 To Len(sText2) If Mid(sText2, i, 1) >= "0" And _ Mid(sText2, i, 1) <= "9" Then _ sText = sText & Mid(sText2, i, 1) Next 'remove any leading zeroes (they don't matter) While Left(sText, 1) = "0" sText = Mid(sText, 2) Wend iMax = Len(sText) 'strip trailing zeroes (they don't matter if no decimal point) sText2 = sText If iDec = 0 Then While Right(sText2, 1) = "0" sText2 = Left(sText2, Len(sText2) - 1) Wend End If iMin = Len(sText2) 'return Min or Max Select Case iType Case 1 SigFigs = iMin Case 2 SigFigs = iMax Case Else SigFigs = CVErr(xlErrNum) End Select End Function
Вы вызываете эту функцию, используя на листе следующее:
=SigFigs(A1, x)
Вы можете заменить x на 1 или 2. Если вы укажете 1, функция вернет минимальное количество значащих цифр. Если вы укажете 2, то функция вернет максимальное количество значащих цифр. В большинстве случаев два возможных возвращаемых значения будут одинаковыми, за исключением значений, которые являются целыми числами без конечной десятичной точки, которые имеют конечные нули. Другими словами, если вы используете функцию для вычисления числа 1234000, то минимум (x равно 1)
возвращает 4, а максимальное (x равно 2) возвращает 7.
Функция учитывает, как число отображается на листе, а это означает, что имеет значение, как число отформатировано. Он удаляет все символы форматирования, такие как отрицательные знаки, круглые скобки и запятые.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (10975) применим к Microsoft Excel 97, 2000, 2002 и 2003.
Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Finding_the_Number_Significant_Digits [Поиск количества значащих цифр]
.