12个字符包括前导和后跟零

时间:2015-06-22 14:05:47

标签: excel

我发现这很难解释,但最终我想要一个单元格值为12个字符长,包括+/-小数点和后面的零。

Examples are
1200 would become +1200.000000
-20 would become -20.00000000
99999999 would become +99999999.00

我尝试了FIXEDLENGTH和格式规则,没有任何乐趣。格式化规则仅更改显示的数字,而不是单元格的值。

有人可以帮我吗?是否可以仅使用公式而不编写脚本?

2 个答案:

答案 0 :(得分:2)

使用公式

=LEFT(TEXT(A1,"+0.000000000;-0.000000000"),12)

其中A1包含您的号码。这将是一个文本单元格类型,但会根据您的需要格式化单元格。

答案 1 :(得分:0)

这是整个公式,如果有点长:

=MID(MID(TEXT(A1,"+"&REPT("0",12)&"."&REPT("0",12)&";-"&REPT("0",12)&"."&REPT("0",12)),1,1)&MID(TEXT(A1,"+"&REPT("0",12)&"."&REPT("0",12)&";-"&REPT("0",12)&"."&REPT("0",12)),SMALL(IF(ISNUMBER(FIND({".",1,2,3,4,5,6,7,8,9},TEXT(A1,"+"&REPT("0",12)&"."&REPT("0",12)&";-"&REPT("0",12)&"."&REPT("0",12)))),FIND({".",1,2,3,4,5,6,7,8,9},TEXT(A1,"+"&REPT("0",12)&"."&REPT("0",12)&";-"&REPT("0",12)&"."&REPT("0",12)))),1),LEN(TEXT(A1,"+"&REPT("0",12)&"."&REPT("0",12)&";-"&REPT("0",12)&"."&REPT("0",12)))-SMALL(IF(ISNUMBER(FIND({".",1,2,3,4,5,6,7,8,9},TEXT(A1,"+"&REPT("0",12)&"."&REPT("0",12)&";-"&REPT("0",12)&"."&REPT("0",12)))),FIND({".",1,2,3,4,5,6,7,8,9},TEXT(A1,"+"&REPT("0",12)&"."&REPT("0",12)&";-"&REPT("0",12)&"."&REPT("0",12)))),1)),1,12)

以下是显示格式化结果的屏幕截图:

enter image description here

说明:

  1. 我们需要将单元格包装在:

    =TEXT(A1,"+"&REPT("0",12)&"."&REPT("0",12)&";-"&REPT("0",12)&"."&REPT("0",12))
    

    这使我们得到+/-符号,数字前面最多12个0,数字末尾最多12个0。这是为了容纳最多12个字符长的整数,最多为纯十进制数,所有数字都超过小数点。

  2. 现在我们只需摆脱多余的0;要做到这一点,我们需要找到1,2,3,4,5,6,7,9 or "."的第一次出现,我们可以用这个来实现这个目的:

    =SMALL(IF(ISNUMBER(FIND({".",1,2,3,4,5,6,7,8,9},D1)),FIND({".",1,2,3,4,5,6,7,8,9},D1)),1)
    

    (其中D1是步骤1中的文字)

  3. 现在我们可以使用MID来消除我们不想要的开头多余和尾随0:

    =MID(MID(D1,1,1)&MID(D1,E1,LEN(D1)-E1),1,12)
    

    (其中D1再次来自步骤1,E1来自步骤2)

  4. 结合所有这些产生了长公式,以及我展示的第一个公式,但输出是正确的。

相关问题