巧用if判断缩小单元格字体

我们来看一下下面的报表

需求是:在第一行的横线上要显示某个字段内容,如果显示不下,就折返到第二行的横线上继续显示,如果第二行的横线上还是显示不下,就统一缩小两行横线上的字体让其能够显示。

这里举的例子中,两行横线的长度相等(可不相等,方法类似)。

首先,我们要判断一下每条横线上最多能放多少个字:

以上面提到的例子,我们测试能放下15个字。两行加起来一共能放下30个字(不缩小字体的情况下)。那么我们就要以此为条件来进行判断。

我们看一下表达式的写法:


其中,B1:=len(ds1.n) 计算字段内容的总长度

B2:=if(B1<=15,ds1.n,15<B1&& B1<=30,mid(ds1.n,0,15),B1>30&& B1%2 !=0,mid(ds1.n,0,15)+” “,mid(ds1.n,0,15))

当长度小于等于15时,正常显示,如果长度大于15且小于等于30时,截取前15位显示。如果长度大于30并且是奇数个字时,为了保持两遍长度一致,要加两个空格。

A3:=if(B1<=15,”",15<B1&&B1<=30,mid(ds1.n,15),B1>30&&B1%2 !=0,mid(ds1.n,B1/2))

同理,当长度小于15时,第二行无内容,当长度大于15小于等于30时,截取后面15位置的内容进行显示。如果长度大于30并且是奇数个字时,则截取剩余的内容显示。

在B2和A3单元格的尺寸调整方式中都设置表达式:if(B1<=30,49,51),即如果长度小于等于30,单元格按照设计尺寸不变,否则缩小字体填充。

下面来看一下效果,如果字数是14个时:


如果是22个字时:

如果是35个字时:



本文标签: