"Count if" 在 Crystal 报告中(水平)
"Count if" in Crystal Reports (horizontally)
我正在使用 Crystal 报告。
我想计算每行具有 "Yes" 的所有单元格和具有 "No" 的所有单元格,如下图所示:
您需要使用自定义公式来计算它。在报表设计中创建公式字段,即 ff_Evaluate
、ff_Yes
、ff_No
并在公式编辑器中设置它们的值,如下所示:
ff_Evaluate(检查每一列并添加到 yes 或 no var)
WhilePrintingRecords;
numberVar YesCount := 0;
numberVar NoCount := 0;
if {table.T0} = "Yes" then
YesCount := YesCount + 1
else if {table.T0} = "No" then
NoCount := NoCount + 1;
if {table.T1} = "Yes" then
YesCount := YesCount + 1
else if {table.T1} = "No" then
NoCount := NoCount + 1;
...
...
if {table.Tn} = "Yes" then
YesCount := YesCount + 1
else if {table.Tn} = "No" then
NoCount := NoCount + 1;
ff_Yes
WhilePrintingRecords;
EvaluateAfter ({@ff_Evaluate});
numberVar YesCount;
ff_No
WhilePrintingRecords;
EvaluateAfter ({@ff_Evaluate});
numberVar NoCount;
现在将这些公式字段放在 Details 部分,然后 Suppress ff_Evaluate
by Right Click
在上面,指向 Format Field
,然后在 Common
选项卡中 select Suppress
假设列名为 T0
、T1
、T2
、T3
、T4
。根据需要增加。
创建一个公式 (TOTAL
),将其放入“详细信息”部分(如果需要,请隐藏它):
// create an array to contain the fields' values
Local Stringvar Array values := [{Command.T0},{Command.T1},{Command.T2},{Command.T3},{Command.T4}];
// global variables to contain tallies
Numbervar Y:=0;
Numbervar N:=0;
// generate tallies
Local Numbervar i;
For i:=1 To Ubound(values) Do (
select values[i]
case 'Y': Y:=Y+1
case 'N': N:=N+1
)
;
创建一个公式 (Y
),将其放在详细信息部分:
// display Y after tallies have been generated
EvaluateAfter({@TOTAL});
Numbervar Y;
创建一个公式 (N
),将其放在详细信息部分:
// display N after tallies have been generated
EvaluateAfter({@TOTAL});
Numbervar N;
如有必要,您可以使用合计字段来计算每个值的总和。
我正在使用 Crystal 报告。 我想计算每行具有 "Yes" 的所有单元格和具有 "No" 的所有单元格,如下图所示:
您需要使用自定义公式来计算它。在报表设计中创建公式字段,即 ff_Evaluate
、ff_Yes
、ff_No
并在公式编辑器中设置它们的值,如下所示:
ff_Evaluate(检查每一列并添加到 yes 或 no var)
WhilePrintingRecords; numberVar YesCount := 0; numberVar NoCount := 0; if {table.T0} = "Yes" then YesCount := YesCount + 1 else if {table.T0} = "No" then NoCount := NoCount + 1; if {table.T1} = "Yes" then YesCount := YesCount + 1 else if {table.T1} = "No" then NoCount := NoCount + 1; ... ... if {table.Tn} = "Yes" then YesCount := YesCount + 1 else if {table.Tn} = "No" then NoCount := NoCount + 1;
ff_Yes
WhilePrintingRecords; EvaluateAfter ({@ff_Evaluate}); numberVar YesCount;
ff_No
WhilePrintingRecords; EvaluateAfter ({@ff_Evaluate}); numberVar NoCount;
现在将这些公式字段放在 Details 部分,然后 Suppress ff_Evaluate
by Right Click
在上面,指向 Format Field
,然后在 Common
选项卡中 select Suppress
假设列名为 T0
、T1
、T2
、T3
、T4
。根据需要增加。
创建一个公式 (TOTAL
),将其放入“详细信息”部分(如果需要,请隐藏它):
// create an array to contain the fields' values
Local Stringvar Array values := [{Command.T0},{Command.T1},{Command.T2},{Command.T3},{Command.T4}];
// global variables to contain tallies
Numbervar Y:=0;
Numbervar N:=0;
// generate tallies
Local Numbervar i;
For i:=1 To Ubound(values) Do (
select values[i]
case 'Y': Y:=Y+1
case 'N': N:=N+1
)
;
创建一个公式 (Y
),将其放在详细信息部分:
// display Y after tallies have been generated
EvaluateAfter({@TOTAL});
Numbervar Y;
创建一个公式 (N
),将其放在详细信息部分:
// display N after tallies have been generated
EvaluateAfter({@TOTAL});
Numbervar N;
如有必要,您可以使用合计字段来计算每个值的总和。