反馈已提交

网络繁忙

双向扩展层次坐标

  • 文档创建者:Leo.Tsai
  • 历史版本:12
  • 最近更新:Catqiu 于 2023-03-24
  • 1. 概述

    1.1 问题描述

    当数据同时由纵向扩展和横向扩展而来,也就是 交叉表 的情况下,层次坐标该怎么写呢?

    • 相对层次坐标

    Snag_5a07478.png

    • 绝对层次坐标

    Snag_5a07c57.png

    • 只获取某一列或某一行:也是绝对层次坐标应用的一种

    1617766619446197.png

    1.2 实现思路

    双向扩展场景下,不管是相对层次坐标还是绝对层次坐标,都要使用纵向和横向的组合写法,且要遵循先纵向后横向的原则。

    层次坐标类型公式写法计算结果参数解释
    相对层次坐标
    Cellx[Celly:-k ;Cellz:p]
    第 p 列相对偏移 -k

    Cellx:横纵向同时扩展出来的交叉数据单元格

    Celly:纵向扩展单元格,Cellx 的左父格

    Cellz:横向扩展单元格,Cellx 的上父格

    k:数字

    p:数字

    Cellx[Celly:+k ;Cellz:p]第 p 列相对偏移 +k
    Cellx[Celly:p ;Cellz:-k]第 p 行相对偏移 -k
    Cellx[Celly:p ;Cellz:+k]
    第 p 行相对偏移 +k
    绝对层次坐标Cellx[Celly:k ;Cellz:p]第 k 行第 p 列交叉处的值
    Cellx[Celly:k ;Cellz:!-p]第 k 行倒数第 p 列交叉处的值
    Cellx[Celly ;Cellz:k]
    获取第 k 列所有值
    Cellx[Celly:k ;Cellz]
    获取第 k 行所有值

    2. 新建示例模板

    此处我们新建一个交叉报表,用于下面演示双向扩展时相对层次坐标和绝对层次坐标的写法。

    2.1 准备数据

    新建数据集 ds1,SQL 语句为:SELECT * FROM 销量,如下图所示:

    1617759916588420.png

    2.2 设计表格

    产品字段拖到 B1 单元格,设置为横向扩展。

    销售员字段拖到 A2 单元格,设置为纵向扩展。

    销量字段拖到 B2 单元格,设置为不扩展,此时 B2 单元格就是根据 B1 和 A2 双向扩展出来的数据。

    2.3 效果预览

    交叉表设计好后,分页预览看下效果:

    Snag_1e23db27.png

    3. 相对层次坐标写法

    按照下图所示在相应单元格中填写相对层次坐标的公式:

    1617760681951054.png

    实际计算结果如下图所示:

    1617760756436412.png

    下面给出每个层次坐标的解释:

    所在单元格公式公式解析最终效果
    C2B2[A2:-1 ;B1:1]

    ;B1:1:横向绝对层次坐标,是为了锁定第一列

    A2:-1:纵向相对层次坐标,是为了实现纵向负偏移

    第一列相对偏移 -1
    D2B2[A2:+1 ;B1:2]

    ;B1:2:横向绝对层次坐标,是为了锁定第二列

    A2:+1:纵向相对层次坐标,是为了实现纵向正偏移

    第二列相对偏移 +1
    B3B2[A2:1 ;B1:-1]

    A2:1:纵向绝对层次坐标,是为了锁定第一行

    ;B1:-1:横向相对层次坐标,是为了实现横向负偏移

    第一行相对偏移 -1
    B4B2[A2:2 ;B1:+1]

    A2:2:纵向绝对层次坐标,是为了锁定第二行

    ;B1:+1:横向相对层次坐标,是为了实现横向正偏移

    第二行相对偏移 +1

    4. 绝对层次坐标写法

    按照下图所示在相应单元格中填写绝对层次坐标的公式,其中 B4~B6 都设置为不扩展,且左父格和上父格都设置为无。

    1617761829891426.png

    实际计算结果如下图所示:

    1617761996318453.png

    下面给出每个层次坐标的解释:

    所在单元格公式公式解析最终效果
    B4B2[A2:4 ;B1:2]

    A2:4:纵向绝对层次坐标,锁定第四行

    ;B1:2:横向绝对层次坐标,锁定第二列

    返回第四行和第二列交叉处的值
    B5B2[A2:6 ;B1:4]

    A2:6:纵向绝对层次坐标,锁定第六行

    ;B1:4:横向绝对层次坐标,锁定第四列

    返回第六行和第四列交叉处的值
    B6B2[A2:!-1 ;B1:!-1]

    A2:!-1:纵向绝对层次坐标,锁定倒数第一行

    ;B1:!-1:横向绝对层次坐标,锁定倒数第一列

    返回倒数第一行和倒数第一列交叉处的值

    5. 只获取某一列或某一行

    按照下图所示在相应单元格中填写层次坐标公式:

    实际计算结果如下图所示:

    1617766749370033.png

    下面给出公式解析:

    所在单元格公式公式解析最终效果
    C2B2[A2 ;B1:1]

    A2:返回 A2 单元格纵向扩展的所有值

    ;B1:1:横向绝对层次坐标,锁定第一列

    返回第一列所有值
    B3B2[A2:1 ;B1]

    A2:1:纵向绝对层次坐标,锁定第一行

    ;B1:返回 B1 单元格横向扩展的所有值

    返回第一行所有值

    6. 模板下载

    已完成模板可参见:

    %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\Coordinate\交叉表相对层次坐标.cpt

    %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\Coordinate\交叉表绝对层次坐标.cpt

    %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\Coordinate\获取交叉表某一列或某一行的值.cpt

    点击下载模板:

    交叉表相对层次坐标.cpt

    交叉表绝对层次坐标.cpt

    获取交叉表某一列或某一行的值.cpt

    附件列表


    主题: 报表专题
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持