Бренда интересуется количеством значащих цифр в значении. Она задается вопросом, есть ли функция или формула 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 [Поиск количества значащих цифр].