Ms word Word表格公式的科学格式

Ms word Word表格公式的科学格式,ms-word,format,Ms Word,Format,我最近学习了Word表格上的公式,它非常有用,虽然没有Excel那么通用,但它可以处理我的大数据集。到目前为止,我唯一的问题是格式 我想用科学记数法格式化。我尝试了Excel中的格式,但没有成功: ##0.0E+00 有什么想法吗?Word的字段代码语言没有格式说明符,因此您必须采取另一种方法,例如 在Word文档中嵌入Excel表格,而不是使用Word 桌子 使用VBA而不是字段代码来计算表格值 使用字段代码计算设置数字格式 将数据库字段与Access数据库结合使用,以 设置数字格式 (1

我最近学习了Word表格上的公式,它非常有用,虽然没有Excel那么通用,但它可以处理我的大数据集。到目前为止,我唯一的问题是格式

我想用科学记数法格式化。我尝试了Excel中的格式,但没有成功:

  • ##0.0E+00

有什么想法吗?

Word的字段代码语言没有格式说明符,因此您必须采取另一种方法,例如

  • 在Word文档中嵌入Excel表格,而不是使用Word 桌子
  • 使用VBA而不是字段代码来计算表格值
  • 使用字段代码计算设置数字格式
  • 将数据库字段与Access数据库结合使用,以 设置数字格式
  • (1) 这可能是您的最佳选择,尤其是在计算复杂的情况下,因为Word表格公式与Excel相比确实有限

    (2) 这意味着您将失去Word字段代码的功能

    (3) 虽然很笨重,但我认为这是可以做到的。但是,最大的问题是,与Excel不同,Word不区分单元格的值和单元格的格式化值。例如,假设一个单元格计算出要显示的中间结果1234.5678,并且将结果显示为2DP。然后必须在单元格中进行计算,计算结果为1.23E+3。但当您现在在另一个计算中引用该单元格时,其值将为1230,而不是1234.5678。因此,如果你需要这样做,我认为你必须使用一个单元格来获得真正的中间结果,另一个单元格用于显示。此外,这里描述的方法不会正确处理可变精度

    (4) 它很笨重。它仅适用于Word的Windows版本。它实际上只适用于格式化表外的值,因为数据库字段不能在Word表内使用。这意味着您必须创建一个外部访问/Jet.mdb,并将其放在Word可以打开的地方。如果您想分发解决方案,这可能会很困难。然后使用Jet SQL format()函数格式化每个数字。每当您要格式化数字时,Word都会执行查询

    (3)的方法最初是由macropod创建的——你可以找到他的“单词场数学”教程(你可能需要注册才能获得)

    我实际上没有当前版本的教程,但我看到的版本只处理从1.E-9到1.0E+10的正数(和0)。它有如下字段:

    {QUOTE
    {SET a {SourceVal}}
    {SET
    b{=9-(a<10^9)-(a<10^8)-(a<10^7)-(a<10^6)-(a<10^5)-(a<10^4)-(a<10^3)-(a<10^2)
    -(a<10^1)-(a<10^0)-(a<10^-1)-(a<10^-2)-(a<10^-3)-(a<10^-4)-(a<10^-5)-(a<10^-
    6)-(a<10^-7)-(a<10^-8)}}
    {SET c{=int(a/10^b)+mod(a,10^b)/10^b}}
    {c \# 0.00}E{b \# +00;-00}}
    
    通过使用这些,我们可以避免计算10的幂

    然后使用以下字段执行格式设置:

    { QUOTE
    { SET w { SourceVal } }
    { SET x { =abs(w) }
    { SET y { =1+(x<p_1)+(x<p_2)+(x<p_3)+(x<p_4)+(x<p_5)+(x<p_6)+(x<p_7)+(x<p_8)+(x<p_9)+(x<p_10)+(x<p_11)+(x<p_12)+(x<p_13)+(x<p_14)+(x<p_15)+(x<p_16)+(x<p_17)+(x<p_18)+(x<p_19)+(x<p_20)+(x<p_21)+(x<p_22)+(x<p_23)+(x<p_24)+(x<p_25)+(x<p_26)+(x<p_27)+(x<p_28)+(x<p_29)+(x<p_30)+(x<p_31) +(x<p_32) +(x<p_33) +(x<p_34) }
    { IF w = 35 "0.00E+00" 
    "{ =w \#;- }{ SET z "p_{ y }" }{ IF { =x/{ z } \#0.00 } = 10 
    "{ SET y { =y-1 } }{ SET z "p_{ y }" }"
    }{ =x/{ z } \#0.00 }{ =18-w \#'+'00;00 }" } }
    

    但是如果你需要E2+(E3/E4),你可能需要类似的东西

    { =SUM(mytable E2,{=SUM(mytable E3)}/{=SUM(mytable E4)})}
    
    或者您可以在单元格(例如F4)中进行计算,然后使用以下字段代码在表外使用结果:

    { =SUM(mytable F4) }
    
    对于格式化,假设您在c:\a中有一个名为a.mdb的数据库。然后你可以使用(比如说)

    然后在E5中,您可以将

    { =result }
    

    您可以修改格式选项-请参见,例如

    执行此操作的工具肯定没有内置在Word中。但是你知道你的数字可以取值的范围吗?我这样问是因为在某种程度上,可以编写一些字域代码,从“普通”数字生成一个科学格式的数字,但我的怀疑是,对于大于(比如)1.0E+14小于1.0E-14的(正数)数字,可能很难可靠地处理字域算法可能引入的一些舍入问题。我相信它会上升到1.0E-16。感谢您的完整答案。我最终使用Excel,然后将表格复制到word文档中。没有你上面提到的那么痛苦。不过,这个答案确实很有帮助,特别是对其他来到这里的人。
    { =PRODUCT(mytable E2,mytable E3, mytable E4) }
    
    { =SUM(mytable E2,{=SUM(mytable E3)}/{=SUM(mytable E4)})}
    
    { =SUM(mytable F4) }
    
    { SET result { QUOTE { DATABASE \d "c:\\a\\a.mdb" \s "SELECT format({ =SUM(mytable F4) },'Scientific')" } } }
    
    { =result }