如何计算数字是否在数组中的每个组中出现一次

2020-08-31 18:41发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在运行一个报告,该报告需要计算整数是否出现在数组中; 但是,我每组只能计算一次。

因此,如果我要在以下几组中寻找3。

Tim
1,2
1,3,4
3
3,6,7

Beth
1,3
2
7,8

卢克
1
2,4
1

我会得到2的计数,因为尽管它在一个组中出现了不止一次,但它却在两个组中出现。

谢谢!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在运行一个报告,该报告需要计算整数是否出现在数组中; 但是,我每组只能计算一次。

因此,如果我要在以下几组中寻找3。

Tim
1,2
1,3,4
3
3,6,7

Beth
1,3
2
7,8

卢克
1
2,4
1

我会得到2的计数,因为尽管它在一个组中出现了不止一次,但它却在两个组中出现。

谢谢!

付费偷看设置
发送
3条回答
SKY徐
1楼-- · 2020-08-31 18:59

执行此操作的一种简单方法可能是添加一个标志,该标志指示是否已找到当前组的号码。

在组标题中,您将放置一个类似于此的公式以重置标志以指示尚未找到该值。

BooleanVar valueFound:= false;
""

然后,在进行计数的公式中,您将执行以下操作:

在公式顶部添加:

BooleanVar valueFound;

然后,在检查该值是否在数组中的部分中,您可以执行以下操作:

如果中的而不是valueFound,则为(
:= valueFound:= true;
);

这样,只有在尚未为该组找到计数时,计数才会增加。

-Dell

lukcy2020
2楼-- · 2020-08-31 19:07

排序。 再深入一点,将需要几个公式。 另外,您不会使用Crystal的"运行总计"字段,而是将使用第二个变量来模拟运行总计。 最后,请勿在公式名称中使用"#",因为"#"是为Crystal运行总计保留的。

1。 用于初始化变量的公式:

 WhileReadingRecords;
 BooleanVar valueFound:=否
 NumberVar runningCount;
 如果是OnFirstRecord,则runningCount:= 0;
 "" 

将此公式放在组标题部分,该公式将在报告开始时将计数初始化为0,并且还将要分组的每个人的valueFound初始化为false。 最后的""将确保其不显示任何内容。

2。 我认为Crystal无法识别数组数据类型,因此我将假定它实际上是一个字符串。 这意味着比较会有所变化:

 WhileReadingRecords;
 BooleanVar valueFound;
 NumberVar runningCount;
 本地StringVar数组值:= Split({table.JIF},",");
 如果值是'2'而不是valueFound,则(
   runningCount:= runningCount + 1;
   valueFound:= true;
 );
 "" 

将此公式放在详细信息部分中。 再次,末尾的""确保不显示任何内容。

3。 显示值的公式:

 WhileReadingRecords;
 NumberVar runningCount
 

这将在页脚部分显示最终值。 由于这是一个连续的总计,因此只有在所有数据都已读入报告后,它才具有值。

-Dell

jovirus
3楼-- · 2020-08-31 19:23

您好,Kurt,

这是另一种方法:

1。 使用以下代码创建一个公式:

如果'3'IN Split({table.JIF},",")然后
 {Group Name Field}(组名称字段)//用用作Group(组)的字段替换它

2。 插入运行总计字段。 将公式字段用作"要汇总的字段",并将摘要设置为"区分计数"。

在"评估"部分中,单击"使用公式"旁边的公式按钮,然后使用以下代码:

 {@ formula字段} <> 

在公式编辑器中,在顶部查找一个下拉菜单,其中显示"空值异常"; 将其更改为"空值的默认值"。

3。 将运行总计字段放在报表页脚上。

-Abhilash

一周热门 更多>