Как я могу добавить два очень больших числа в Excel?

#excel

#excel

Вопрос:

Я хочу сохранить два очень больших числа в Excel, а затем добавить их. мои цифры такие:

324930313630311035156280330632053510851055146511

когда я ввожу это число в ячейку, оно отображается только из 15 цифр. конечно, я знаю, что могу изменить формат ячейки на текст, но когда я меняю его на текст, он не поддается вычислению.

большое спасибо

Комментарии:

1. @Mech: когда я делаю это, добавление преобразуется в 2.43091E 46. как преобразовать это научное число в исходное число? извините, я новичок в Excel. большое спасибо

2. Если вам нужно выполнить математические вычисления с числами такого размера, вам нужно будет написать математическую процедуру VBA для ее обработки. Старый, который все еще работает (хотя и с некоторыми сбоями), называется xNumbers . Это существует уже давно, но не поддерживается. Тем не менее, он будет работать с более новыми версиями Excel, хотя из-за способа, которым он был закодирован, доступ к файлу справки для функций немного затруднен.

Ответ №1:

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

 Public Function superadd(s1 As String, s2 As String) As String
    Dim L1 As Long, L2 As Long, L3 As Long, Carry As Long
    Dim v1 As Long, v2 As Long, zum As Long
    L1 = Len(s1)
    L2 = Len(s2)
    L3 = Application.Max(L1, L2)
    If L1 > L2 Then
        For i = 1 To L1 - L2
            s2 = "0" amp; s2
        Next i
    Else
        For i = 1 To L2 - L1
            s1 = "0" amp; s1
        Next i
    End If
    
    Carry = 0
    For i = L3 To 1 Step -1
        v1 = CLng(Mid(s1, i, 1))
        v2 = CLng(Mid(s2, i, 1))
        zum = v1   v2   Carry
        If i = 1 Then
            superadd = CStr(zum) amp; superadd
            Exit For
        Else
            If zum > 9 Then
                superadd = Right(CStr(zum), 1) amp; superadd
                Carry = CLng(Left(CStr(zum), 1))
            Else
                superadd = CStr(zum) amp; superadd
                Carry = 0
            End If
        End If
    Next i
End Function
  

Используется как:

введите описание изображения здесь