#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
Используется как: