轻松搞定分组报表中的各种排序

在做分组报表统计时,我们经常会被要求按照数据升序或降序排序。在 group 函数的参数中,我们可以指定分组后对组的排序表达式,这样报表展现时能够直接根据该表达式进行排序了。我们先来看一个简单的例子,如下图所示:

imagepng

其中,A1 表达式为:=ds1.group(货主地区, 货主地区!=null; 货主地区;ds1.sum( 数量 * 单价))

意思是:在根数据集 ds1 中取出货主地区不为空的数据,并按照货主地区进行分组,分组后求出每组的总价 sum(数量 * 单价),然后按照这个汇总值对组进行升序排列。

分组排序后的效果如下图所示:

imagepng

但是有些时候,某些单元格的数据可能是通过其他单元格计算后的结果,这样就无法通过 group 函数的参数来指定了,例如下图这样:

imagepng

报表 D2 单元格的数据是根据前两个单元格相减计算后的结果,这时就无法通过 group 函数来完成排序控制操作了,那么有什么方法能够实现依据这样计算出来的单元格结果进行排序呢?

(苦思冥想中····)额,我可以做一个排名,但是排序要怎么做呢?

Bingo··答对了一半,就是需要先排名哦。

下面由我给大家详细讲解一下实现流程:

1)首先按照上图中展现的报表格式,在 A 列左边和下边分别插入行、列,并且给报表追加一列。形成如下如所示的样式:

imagepng

2)然后在 A3 中写表达式 =to(1,count(B2{}))。

    3)在 F2 单元格中按照 E2 单元格的数据计算排名, 写入表达 =count(E2[`0]{E2<$E2})+1。如下图所示:

imagepng

A3 中的表达式是为了控制该行进行纵向扩展,有几个地区就扩展几行,这样报表在展现时就会在下方增加一片数据区域,并且第一列是 1、2、3 这种编号形式。而 F2 单元格则是根据实际金额做了对应的排名,出来的值也是 1、2、3 的形式。这样,就可以根据排名对数据进行选择了。

4)在 B3 单元格中写入表达式:=B2{F2==$A3}。

这个表达式的意思是:从 B2 单元格中取数,但是取数时加上了限定条件:F2(排名)单元格的值等于这一行的 A3(序号)单元格的值,也就是从 B2 单元格中按照排名顺序取出对应的地区放在 B3 单元格中。预览的效果如下图所示:

imagepng

其余 C3、D3、E3 几个单元格的情况类似:

imagepng

然后再将没用的行列隐藏掉,就能够实现我们的的需求了,即按照单元格表达式的计算结果进行排序展现,结果如下:

imagepng

【总结一下:】

在上面的示例中,表达式:=B2{F2==$A3} 是【层次坐标】的用法。主要是在进行报表设计时,单元格尚未进行扩展,但是其它某些单元格的表达式往往需要对这个单元格扩展后的单元格进行精确定位并运算。

  【层次坐标】的具体使用方法可以看一下教程里面的 12.3.2 章节。

好啦,<( ̄▽ ̄)/> 按照上面操作步骤,根据计算后的结果排序就完成啦。


详情链接:http://c.raqsoft.com.cn/article/1533716965785?r=gxy
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Segmentation fault 是一种常见的编程错误,通常是由于程序访问了无效的内存地址导致的。要轻松搞定 Segmentation fault,你可以尝试以下几个步骤: 1. 检查代码:首先,仔细检查你的代码,看看是否有指针错误、数组越界等问题。确保你的代码没有访问无效内存地址的情况。 2. 调试工具:使用调试工具来帮助你找出 Segmentation fault 的原因。常用的调试工具包括gdb(GNU Debugger)和valgrind。这些工具可以帮助你跟踪程序执行过程的问题,并给出相关的错误信息和堆栈跟踪。 3. 打印调试信息:在代码添加一些调试输出语句来帮助你定位问题所在。可以输出变量的值、数组的长度等信息,以便更好地理解程序执行过程的状态。 4. 逐步调试:使用调试器逐步执行程序,观察在哪一步出现了 Segmentation fault。这样可以帮助你定位问题所在,并找出导致错误的具体操作。 5. 内存管理:检查你的内存管理是否正确。确保你在使用指针时正确分配和释放内存,避免内存泄漏和悬挂指针等问题。 6. 编译选项:尝试使用不同的编译选项来编译你的程序,例如添加 -Wall 和 -Wextra 选项可以启用更多的警告信息,帮助你发现潜在的问题。 记住,解决 Segmentation fault 是一个逐步调试的过程,需要耐心和细心地排查问题。通过仔细检查代码、使用调试工具和打印调试信息,你应该能够找到并解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值