【问题标题】:How Can I add two very large numbers in excel?如何在excel中添加两个非常大的数字?
【发布时间】:2020-09-19 18:44:00
【问题描述】:

我想在 excel 中存储两个非常大的数字,然后将它们相加。我的号码是这样的:

324930313630311035156280330632053510851055146511

当我在单元格中键入此数字时,它仅显示 15 位数字。我当然知道我可以把格式单元格改成文本,但是当我改成文本的时候,就无法计算了。

非常感谢

【问题讨论】:

  • @Mech:当我这样做时,加法转换为 2.43091E+46。如何将此科学数字转换为原始数字?对不起,我是excel的初学者。非常感谢
  • 如果您需要对该大小的数字进行数学运算,则需要编写一个 VBA 数学例程来处理它。一个旧的,仍然有效(尽管有一些小故障)被称为xNumbers。它已经存在了很长时间,但不受支持。但是,它可以与较新版本的 excel 一起使用,尽管由于它的编码方式,访问函数的 HELP 文件有点困难。

标签: 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" & s2
        Next i
    Else
        For i = 1 To L2 - L1
            s1 = "0" & 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) & superadd
            Exit For
        Else
            If zum > 9 Then
                superadd = Right(CStr(zum), 1) & superadd
                Carry = CLng(Left(CStr(zum), 1))
            Else
                superadd = CStr(zum) & superadd
                Carry = 0
            End If
        End If
    Next i
End Function

像这样使用:

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多