反饋已提交

網絡繁忙

跨sheet或跨报表块使用条件过滤无效

1. 概述

1.1 问题描述

不论是普通报表、聚合报表还是决策报表,当涉及跨 sheet 页或跨报表块使用函数过滤时,若公式中包含了 {} 这种大括号的条件,则公式无效。

例如:跨 sheet 页计数时,使用公式:len(greparray('sheet2'!A7[!0],item=$A3)),正确效果如下:

Snag_4545f2a.png

而使用条件计数公式 count('sheet2'!A7{'sheet2'!A7=$A3}) 的效果如下:

Snag_439d920.png

1.2 原因分析

当前设计器中,跨 sheet 页和跨报表块不支持使用条件过滤。

2. 解决方案

不在公式内添加带有 {} 条件的句子,使用其他本身带有条件过滤格式的公式。

下面用示例进行详细介绍。 

2.1 新建内置数据集

新建「普通报表」,新建内置数据集  Embedded1 ,如下图所示:

1607320984318256.png

2.2 新建 sheet 页

新建一个 sheet2 ,将数据列 ColName1 拖入 A7 单元格,双击单元格,选择数据设置为「列表」,扩展方向为「纵向」,步骤如下图所示:

1607322092305952.png

2.3 设置公式

点击 sheet1 ,将数据列 ColName1 拖入 A3 单元格,双击单元格,选择数据设置为「分组」,扩展方向为「横向」。

选中 A4 单元格,插入公式:count('sheet2'!A7{'sheet2'!A7=$A3}) 。 步骤如下图所示:

1607322708952754.png

同理给 A5 单元格插入公式:len(greparray('sheet2'!A7[!0],item=$A3))

公式说明如下表:

公式
公式说明
count({})count 函数中加入条件来实现条件计数,{} 内为计数条件
'sheet2'!A7引用 sheet2 中 A7 单元格的数据
greparray(array,fn)
  • 通过 fn 条件过滤 array 数组,返回过滤后的新数组

  • fn 参数必须符合格式要求,否则过滤不生效,例如这里的 item 格式:根据数组值进行过滤

len()返回数组的长度

2.4 效果预览

保存报表,点击「分页预览」,效果如下图所示:

Snag_46a5d4a.png

2.5 模板下载

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\跨sheet页条件过滤公式.cpt

点击下载模板:跨sheet页条件过滤公式.cpt

附件列表


主題: 原简体文档
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉