我有一套6500个学校课程,我需要"正常化"如果该数字包含在一组定义严格的课程中,那么该过程就是采用确切的代码(例如:23.XX510XXX)"或者如果它是AP。所以算法是这样的:
if x is contained within X:
then x=x
else if PSO=0:
then x=23
else if (#Observed/PSO) >.5
then x=x
else x=23
但我不确定如何在excel中执行此操作。我试过这个:
= IF(ISERROR(VLOOKUP(C2,$ L $ 1:$ L $ 28,0,FALSE)),23,IF(F2 = 0,23,IF(G2 / F2&GT 0.5,C2,23)))
但每次只返回23。它的设置方式是,C列是我在列L上检查的非标准化数字。列F是PSO指标,列G是#observed。
PSO和#observed是因为我们愿意接受整个课程的严格要求,如果超过50%的时间被视为AP。
有谁看到我哪里出错了?
如果有人能解释如何在VBA中做到这一点(不只是给我代码),我永远爱你!
答案 0 :(得分:2)
看起来几乎正确,但VLOOKUP
将始终返回错误,因为您的"列索引"是零,它应该是1 - 尝试这样
=IF(ISERROR(VLOOKUP(C2,$L$1:$L$28,1,FALSE)),23,IF(F2=0,23,IF(G2/F2>0.5,C2,23)))
.....或者我喜欢这样的COUNTIF
=IF(COUNTIF($L$1:$L$28,C2)=0,23,IF(F2=0,23,IF(G2/F2>0.5,C2,23)))