1. 小数显示成千分位样式编辑
在单元格属性>样式>格式里面,只有百分位的数据显示格式,没有千分位的,那么如果要将小数显示为千分位,则就需要通过公示来解决了。
千分位的数据时由一个千分位符号和小数数据乘以 1000 组成的,那么就可以在公式形态中将这个千分位符号和扩大 1000 倍之后的数据进行组合,如下:
选择单元格属性表>形态>公式形态,公式为:=$$$*1000+"‰",$$$ 表示获取当前单元格的值。
2. 显示当前季度数据编辑
在进行参数过滤的时候,希望只显示当前月份所在季度的数据。
在过滤界面选择公式,写入公式:=roundup(month(today())/3)即可只显示当前月份所在季度的数据。
示例:在单元格输入=roundup(month(today())/3)返回结果 4 。
注:roundup() 函数的意思是向上取整。
3. 获取月份或日期的时候显示2位编辑
在使用公式month()或者是day()的时候,如果月份或日期是一位数,则显示出来的也只有一位数,比如说 1 月 9 号,获取月份时显示的是 1,而不是 01,获取日期时,显示的是 9,而不是 09,如果需要获取到 01 或者是 09,这个该如何通过公式实现呢?
3.1 公式实现
1)right(),concatenate(),MONTH() 组合函数,如下所示:
月份公式:=right(concatenate('0',MONTH(today())),2)
日期公式:=right(concatenate('0',day(today())),2)
公式理解:通过 concatenate 将获取到的月份前面拼接一个 0,比如说 11 月,则显示 011,如果是 2 月,则显示 02,然后通过 right 方法,获取右边的 2 位数字,比如说 2 月,截取 2 位数字,则为 02,比如 12 月,截取右边的两位,则为 12。
2)通过 format() 来格式化字符串,如下所示:
月份公式:= FORMAT(MONTH(TODAY()), "00")
日期公式:= FORMAT(day(TODAY()), "00")
公式理解:返回 object 的 format 格式。object 需要被格式化对象,可以是 String,数字,Object(常用的有 Date, Time)。
3.2 自定义函数实现
如果觉得上面写的公式太麻烦,则可以通过自定义函数实现,代码如下:
package com.fr.function;
import com.fr.script.AbstractFunction;
public class Add0 extends AbstractFunction {
public Object run(Object[] args) {
String result = args[0].toString();
if(result.length() == 1)
result = '0' + result;
return result;
}
}
自定义函数的详细定义步骤请参照 自定义函数。
4. 利用日期函数生成特定编号编辑
通过 uuid() 函数可以生成一串随机字符串,但没有意义。有些情况下需要生成带【年月日时分秒】这样的字符串,类似 china20170726144516 这样的编号,可以直接利用时间公式和字符串拼接函数来实现。
在单元格中写入公式:="china" + FORMAT(now(), "yyyMMddhhmmss")结果为:china20180101124516,即字符串“china”后面加当前的【年月日时分秒】。
注:一般编号非必要的情况下,不要全用数字,因为在导入导出到EXCEL时数字有可能出错。