我发现这很难解释,但最终我想要一个单元格值为12个字符长,包括+/-小数点和后面的零。
Examples are
1200 would become +1200.000000
-20 would become -20.00000000
99999999 would become +99999999.00
我尝试了FIXED
,LENGTH
和格式规则,没有任何乐趣。格式化规则仅更改显示的数字,而不是单元格的值。
有人可以帮我吗?是否可以仅使用公式而不编写脚本?
答案 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)
以下是显示格式化结果的屏幕截图:
说明:
我们需要将单元格包装在:
=TEXT(A1,"+"&REPT("0",12)&"."&REPT("0",12)&";-"&REPT("0",12)&"."&REPT("0",12))
这使我们得到+/-符号,数字前面最多12个0,数字末尾最多12个0。这是为了容纳最多12个字符长的整数,最多为纯十进制数,所有数字都超过小数点。
现在我们只需摆脱多余的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中的文字)
现在我们可以使用MID
来消除我们不想要的开头多余和尾随0:
=MID(MID(D1,1,1)&MID(D1,E1,LEN(D1)-E1),1,12)
(其中D1再次来自步骤1,E1来自步骤2)
结合所有这些产生了长公式,以及我展示的第一个公式,但输出是正确的。