求助:下列FOXTABLE文件中“课时变化”表中的“正课统计”按纽公式如何设置?
目的:为克服用FOXTABLE设计的畏难情绪和提高对FOXTABLE学习兴趣,用易表做了一个文件希望升级到FOXTABLE:一是为了比较易表、FOXTABLE设计文件的区别,二也是为了解决速度问题。
一、原易表文件:
表达式变量:%A1%
表达式为:If([正课_上午]=-1 And [正课_星期] > "",Eval("EvalFor(""表1"","""+Text([%B1%])+""",""[课程表!"+[正课_星期]+"_上午_1]"")") And SetVariable("%B1%",[%B1%]+1) And Eval("EvalFor(""表1"","""+Text([%B1%])+""",""[课程表!"+[正课_星期]+"_上午_2]"")") And SetVariable("%B1%",[%B1%]+1) And Eval("EvalFor(""表1"","""+Text([%B1%])+""",""[课程表!"+[正课_星期]+"_上午_3]"")") And SetVariable("%B1%",[%B1%]+1) And Eval("EvalFor(""表1"","""+Text([%B1%])+""",""[课程表!"+[正课_星期]+"_上午_4]"")") And SetVariable("%B1%",[%B1%]+1),"") And If([正课_下午]=-1 And [正课_星期] > "", Eval("EvalFor(""表1"","""+Text([%B1%])+""",""[课程表!"+[正课_星期]+"_下午_5]"")") And SetVariable("%B1%",[%B1%]+1) And Eval("EvalFor(""表1"","""+Text([%B1%])+""",""[课程表!"+[正课_星期]+"_下午_6]"")") And SetVariable("%B1%",[%B1%]+1) And Eval("EvalFor(""表1"","""+Text([%B1%])+""",""[课程表!"+[正课_星期]+"_下午_7]"")") And SetVariable("%B1%",[%B1%]+1) And Eval("EvalFor(""表1"","""+Text([%B1%])+""",""[课程表!"+[正课_星期]+"_下午_8]"")") And SetVariable("%B1%",[%B1%]+1),"") And If([正课_读报]=-1 And [正课_星期] > "",Eval("EvalFor(""表1"","""+Text([%B1%])+""",""[课程表!"+[正课_星期]+"_班主任]"")") And SetVariable("%B1%",[%B1%]+1),"")
数值型变量:%B1%
课时变化中“正课统计”按纽公式为:Eval("EvalFor(""表1"","""+Substitute(ListCols("表1"),"|",""","""") And EvalFor(""表1"",""")+""","""")") And AddCol("表1","k",1, False ) And EvalFor("表1","k","Row") And AddCol("课程表","k",1, False ) And EvalFor("课程表","k","Row") And AddRelation("表1","k","课程表","k") And SetVariable("%B1%",1) And First() And Loop("rowsel < Rows+1", "Eval([%A1%]) And Next()",Rows) And DeleteCol("课程表","k") And DeleteCol("表1","k") And ClearGrid("另表") And evalfor("另表",2,"eval(""AppendFor(""""表1"""",""""""+Substitute(ListCols(""表1""),""|"","""""",""""姓名"""") And AppendFor(""""表1"""","""""")+"""""",""""姓名"""")"")",1,1) And DelFor("另表","姓名","=","") And AddCol("另表","A",1,false) And evalfor("另表","A","if(Instr(""DU"",[姓名])>-1 Or Instr(""/"",[姓名])>-1,0.5,1)") And evalfor("另表","姓名","Substitute([姓名],""DU"","""")") And evalfor("另表","出现次数","SumFor(""另表"",""A"",""姓名"",""="",[姓名])") And DelReptRows("另表","姓名") And evalfor("另表","A","if(Instr(""/"",[姓名])>-1,Split([姓名],""/"",2),"""")") And eval("AddRow(""另表"",""姓名"","""+Substitute(ListFor("另表","A"),"|",""") And AddRow(""另表"",""姓名"",""")+""")") And evalfor("另表","出现次数","if([出现次数]>0,[出现次数],FindText(""另表"",""出现次数"",""A"",""="",[姓名]))") And evalfor("另表","姓名","if(Instr(""/"",[姓名])>-1,Split([姓名],""/"",1),[姓名])") And DeleteCol("另表","A") And ClearGrid("流水表") And AddRows("流水表",[另表!Rows]-1) And evalfor("流水表","正课_姓名","cell(row,1,""另表"")") And evalfor("流水表","正课_课时","cell(row,2,""另表"")") And msgbox("正课统计结束",0)
二、设计思路:根据“课时变化”中的情况,将“课程表”中相应的时段内容复制到“表1”中,再对“表1”中姓名计数(见“另表”),最后将“另表”中的数据过到“流水表”。
注意:1、“课程表”中的“班主任”姓名前均加“DU”,指班主任上“读报课”,读报课只能算0.5节正课。2、对“课程表”中两人名用“/”隔开的,如“蔡欣/唐黎”指两个人各上半节课,计算时拆分为“蔡欣”、“唐黎”两个人,出现次数均为“0.5“。
三、具体操作:可在易表文件的“课时变化”中进行设置,再点出“正课统计”按纽,计算完毕后,可详查其余各表数据。注:表1中的内容来源于“课程表”中相应时段。