我有一个我在交叉表中显示的值表。原始数据如下所示:
| Row | Col | Value | Format |
--+-----+-----+-------+--------+
1 | A | X | 1.234 | 0 |
2 | A | Y | 3.456 | 0.0 |
3 | B | X | 5.678 | 0.00 |
4 | B | Y | 7.890 | 0.000 |
我在交叉表中(在报告标题中)显示它,使用平均摘要,如下所示:
| X | Y |
--+-------+-------+
A | 1.234 | 3.456 |
B | 5.678 | 7.890 |
(我已经压制了总数)
我想根据源数据的Format列更改每个单元格中的小数位数。输出应如下所示:
| X | Y |
--+-------+-------+
A | 1 | 3.4 |
B | 5.67 | 7.890 |
我创建了一个基于此字符串返回小数位数的公式:
Local NumberVar dotPosition;
dotPosition := InStr({Table.Format}, ".");
If dotPosition = 0 Then
// No dot, so no decimal places
0
Else
Length({Table.Format}) - dotPosition
包含摘要的单元格的Decimals属性设置为使用此公式(使用右键单击,格式字段...)。
问题是,它似乎只使用第一条记录的公式结果,即我得到输出(带有舍入)
| X | Y |
--+-------+-------+
A | 1 | 3 |
B | 6 | 8 |
有没有办法让它使用计算单元格的记录计算每个单元格的公式?
我尝试过,作为测试(在生产中不可能),在表中添加一个Decimals列,并将Decimals格式直接设置为此({Table.Decimals}),但我得到相同的结果。< / p>
如果重要的话,每个行/列对几乎总会有一个表记录。如果有多个,则Format列对于每个都是相同的。