代码之家  ›  专栏  ›  技术社区  ›  Andrew Lauer Barinov

美国国债报价的Excel自定义数字格式

  •  1
  • Andrew Lauer Barinov  · 技术社区  · 14 年前

    我在使用Excel中的自定义数字格式功能来显示美国国债期货报价时遇到了一些问题。

    它们的显示格式为:

    121'167年

    相当于121+16.75/32

    如果最后一个数字是5,如121'165,那么它等于

    121+16.5/32分

    如果最后一个数字是2,如121'162,那么它等于

    121+16.25/32分

    最后,如果最后一个数字是0,如121'160,那么它等于

    121+16/32年

    有没有办法使用自定义数字格式功能来实现这个定义,或者它超出了它的能力?

    4 回复  |  直到 14 年前
        1
  •  3
  •   Martin    14 年前

    这是一种疯狂的格式:加上分数,然后在红利中使用小数,然后 然后 截短那些小数。。。

    但是够了。如果我正确理解了您的规范,这应该可以完成工作:

    =TRUNC(A1)&"'"&INT(MOD(A1,1)*320)
    

    数字格式本身不能做到这一点,因为它们不能进行数字的实际转换(除了诸如日期/时间之类的内置格式)。

        2
  •  0
  •   MikeD    14 年前

    可以将TEXT()函数应用于这两个值,并将它们连接到单个字符串中。

    example (A1 = 121, B1 = 16.75)
    
    C1: =TEXT(A1,"###") & "'" & TEXT(B1*10-1,"###") & "/32"
    

    你需要计算四舍五入(我在第二项中加入一个常数*10-1)以及如何获得“/32”。。。我从你的问题中看不出来

    希望能帮上忙

    祝你好运

        3
  •  0
  •   Mike Pennington ThiefMaster    12 年前
    =TRUNC(A1)&"'"&ROUND((MOD(A1,1)*32),1)
    
    Where A1 = 109.6406
    

    这是对我最有效的方法。我只需要以109'20.5为例,引用一个2年期的票据报价,然后在excel中复制。我将报价转换为109.6406(109+20.5/32),并应用了上述公式。

        4
  •  0
  •   North    10 年前

    我知道这有点过时,但今天偶然发现了这一点,需要同样的信息。这是我使用的,替换公式中的单元格以获取引用。

    5年: =左(J22,3)+(右(J22,3)/320)+IF(INT(右(J22,1))=2,0.0015625,IF(INT(右(J22,1))=7,0.0015625,0)

    10年:=左(B28,3)+(右(B28,3)/320)