TEXT(A1*B1/C1,"0."&REPT("0",MIN(LEN(A1:C1)-FIND(".",A1:C1)))

问题描述:

TEXT(A1*B1/C1,"0."&REPT("0",MIN(LEN(A1:C1)-FIND(".",A1:C1))))这个公式能否定义成一个函数?
但是每次要得出结果都要输入这么长一串,能不能直接调用这个函数然后在()里直接输入运算式就可以的?
1个回答 分类:综合 2014-10-11

问题解答:

我来补答
将公式写在宏里面是可以的,但如果要换一个电脑,仍要将宏重新拷贝一下,操作仍比较麻烦.
这个公式虽然第一次输入比较麻烦,而且是数组公式,但仍然可以进行复制操作.
这个公式是按照向下复制进行设计的,不知是否符合你的要求.
最外层是一个TEXT函数,用于规定数值的格式.括号中包括两个参数,第一个参数是数值,即A1*B1/C1;第二个参数是数据的格式,0.000.由于小数点后的位数不能直接确定,所以用了字符连接运算公式"0."&Rept(),由Rept函数产生小数点后的0.
Rept函数也包括两个参数,用于返回若干重复的字符串.该函数也包括两个参数,第一个参数是重复的字符,即"0",第二个参数是重复的个数.由于重复的字符个数由前面参与运算的A1、B1、C1三个单元格中位数最小的来决定,因此用了Min函数进行运算,用于计算数组或单元格区域中的最小值.
Min函数的参数是用数组进行计算的,由于A1、B1、C1各单元格的小数点位数不确定,也不便于直接运算,就用了Len函数来计算各单元格数据的字符个数,用Find函数查找小数点在各单元格数值中的位置,两者之差就是小数点的位数.
再问: 这个公式貌似不能对整数形式应用,而EXCEL里单元格常规格式也不能把整数写成小数形式
再答: 能不能说的具体一点,你是要一个小数形式的整数,还是要把整数变成小数。 如果是前者,把整数写成保留一位小数点的形式,可以自定义格式:0"."0,这里用TEXT函数:=TEXT(A1,"0.0")是无效的,但可以用公式计算:=LEFT(A1,LEN(A1)-1)&"."&RIGHT(A1,1)。 比如123,就会显示为12.3,但Excel仍按123进行计算。 如果是后者,比如要把123变成12.3,直接用公式进行计算:=A1/10
再问: 是123变成123.0这样的形式
再答: 定义格式:0.0 Text函数:=Text(A1,"0.0")
 
 
展开全文阅读
剩余:2000