我一直在处理其他人使用 StDev 函数制作的报告。我认为这很简单,但是数据可以包含每个记录的多个值,因此有 if 语句用于确定从每个记录中获取哪个值。我已将一个表导出到 Excel,其中每条记录包含一个值(应在 StDev 中使用的值),然后计算那里的 SD 以提供检查。
报告和 Excel 给了我非常不同的价值:(
因此,我将返回报告并使用一些额外的公式字段来计算 SD 速记以作为一种决定性的投票(手指交叉它不会产生第三组值......)。
我已经解决了语法错误,但仍然出现运行时错误 - “除以零”,然后突出显示下面指示的代码部分......
我的公式字段是:
{@StDevArrayPopulate} - 在详细信息部分
NumberVar Array varStDevArray;
NumberVar varStDevArrayCount;
varStDevArray [varStDevArrayCount] := {ValueToSummarise};
varStDevArrayCount := varStDevArrayCount + 1;
{@StDevArrayCalculate} - 在组页脚中
NumberVar Array varStDevArray;
NumberVar varCounter :=1;
NumberVar varMean := 0;
NumberVar varStDev := 0;
NumberVar varStDevArrayCount;
// START OF MEAN
// Sum of all of the values in the array
for varCounter:= 1 to varStDevArrayCount step 1 do
(
varMean := varMean + varStDevArray [varStDevArrayCount];
);
// Divide by the total number of values in the array
varMean := varMean / varStDevArrayCount; // !! This is the line that highlights after the error message !!
// END OF MEAN
// START OF STANDARD DEVIATION
// Subtract the mean from each value in the array and square the result
for varCounter := 1 to varStDevArrayCount step 1 do
(
varStDevArray[varStDevArrayCount] := (varStDevArray [varStDevArrayCount] - varMean) * (varStDevArray [varStDevArrayCount] - varMean);
);
// Sum of all of the values in the array
for varCounter:= 1 to varStDevArrayCount step 1 do
(
varStDev := varStDev + varStDevArray [varStDevArrayCount];
);
// Divide by the total number of values in the array
varStDev := varStDev / varStDevArrayCount;
// Square root of mean of differences
varStDev := Sqr(varStDev)
// END OF STANDARD DEVIATION
{@StDevArrayCalculate} - 在组页脚中
NumberVar varMean;
NumberVar varStDev;
"The mean is " & varMean & ", and the standard deviation is " & varStDev & "."
我尝试使用 Running Total 字段,但这会产生错误,因为它需要在 Populate formula 字段运行之前计算第一条记录。我还尝试在标题中添加第四个字段,它将 varStDevArrayCount 初始化为 1。
有没有人有什么建议?