历史版本17 :日期函数应用 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 小数显示成千分位样式编辑

单元格属性>样式>格式里面,只有百分位的数据显示格式,没有千分位的,那么如果要将小数显示为千分位,则就需要通过公示来解决了。

千分位的数据时由一个千分位符号和小数数据乘以 1000 组成的,那么就可以在公式形态中将这个千分位符号和扩大 1000 倍之后的数据进行组合,如下:

选择单元格属性表>形态>公式形态,公式为:$$$*1000+"‰",$$$ 表示获取当前单元格的值。


2. 显示当前季度数据编辑

在进行参数过滤的时候,希望只显示当前月份所在季度的数据。

在过滤界面选择公式,写入公式:=roundup(month(today())/3)即可只显示当前月份所在季度的数据。

注:roundup() 函数的意思是向上取整。


3. 获取月份或日期的时候显示2位编辑

在使用公式month()或者是day()的时候,如果月份或日期是一位数,则显示出来的也只有一位数,比如说 1 月 9 号,获取月份时显示的是 1,而不是 01,获取日期时,显示的是 9,而不是 09,如果需要获取到 01 或者是 09,这个该如何通过公式实现呢?


3.1 公式实现

月份公式:=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。

或者还可以通过 format 来格式化字符串,如下:

月份公式:= FORMAT(MONTH(TODAY()), "00")

日期公式:= FORMAT(day(TODAY()), "00")


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时数字有可能出错。