本案例选取20家真实客户数据作为分析对象,涉及订单审核、绩效评级、客户分层、数据质检等多个业务场景。通过逐步构建这个评估系统,读者将深刻理解每种逻辑函数的特点、适用场景以及组合使用的方法。
客户信用评估是企业风控管理的核心环节。一个科学的信用评估系统需要综合考虑多个维度:交易规模体现客户价值,逾期次数反映信用历史,退货率说明交易质量,利润率展示合作效益。传统的评估方式往往依赖人工经验判断,效率低下且标准不统一。
本次案例的业务需求包括三个层次:第一,根据客户的多维指标自动判定客户等级(AAA、AA、A、B四个等级);第二,基于量化指标计算综合信用评分(满分100分);第三,根据评估结果决定是否授信并确定授信额度。这三个层次对应不同的函数应用场景,形成递进式的学习路径。
案例数据包含10个字段,前6个为原始指标,后3个为待填充的评估结果字段。各字段含义与业务逻辑如下:
年交易额(C列)反映客户规模,交易额50万以上为大规模客户,30万至50万为中等规模,10万至30万为小规模,10万以下为基础客户。逾期次数(D列)是最重要的信用指标,0次为最优,1至2次为良好,3至5次为一般,6次以上为高风险。退货率(E列)体现交易质量,低于3%为优秀,3%至8%为良好,8%至12%为一般,超过12%为较差。利润率(F列)反映合作效益,25%以上为高利润,20%至25%为中高利润,15%至20%为中等利润,15%以下为低利润。
本系统采用四维度加权评分模型,总分100分。逾期维度占25分,核心考量信用历史。退货维度占25分,评估交易质量。利润维度占25分,衡量合作效益。交易维度占25分,体现客户规模。各维度采用分段赋值方式,将连续的数值指标转化为离散的分数档位,便于逻辑判断。
IF函数是逻辑函数家族的基础,其语法结构为IF(条件, 条件为真时的返回值, 条件为假时的返回值)。IF函数支持嵌套使用,能够处理多层级的条件判断。在信用评估场景中,最常见的应用是单条件或简单组合条件的判断。
以客户C001(华强科技)为例,其年交易额85万、逾期0次、退货率2%、利润率28%,各项指标均表现优异。判断其是否满足大规模客户标准,只需使用=IF(C2>=500000,"大规模","其他")即可返回“大规模”。

AND函数用于同时满足多个条件的场景,语法为AND(条件1, 条件2, ...),所有条件同时为真时返回TRUE,否则返回FALSE。在信用评估中,AAA级客户的判定需要同时满足四个维度的较高标准。
以客户C001为例,判断其是否达到AAA级标准的公式为=IF(AND(C2>=500000, D2<=1, E2<=0.05, F2>=0.22), "AAA", "不满足")。

对于C004(龙腾实业),其年交易额18万、逾期5次、退货率15%、利润率15%。年交易额不满足≥50万,退货率不满足≤5%,即使其他条件勉强达标,AND函数也会返回FALSE,将其排除在AAA行列之外。
OR函数用于满足任一条件的场景,语法为OR(条件1, 条件2, ...),任一条件为真时返回TRUE,全部为假时返回FALSE。在业务场景中,OR函数常用于识别特殊豁免情况。
例如,对于退货率超过12%但利润率超过30%的高价值客户,可设置豁免条款:=IF(OR(E2>0.12, F2>0.30), "特殊评估", "正常评估")。C007(金桥集团)利润率27%虽未达到30%的豁免线,但其退货率4%处于正常范围,因此返回“正常评估”。

基于AND函数的组合条件判断,可构建完整的等级判定逻辑。完整的客户等级判定公式如下:
=IF(AND(C2>=500000,D2<=1,E2<=0.05,F2>=0.22),"AAA",IF(AND(C2>=300000,D2<=2,E2<=0.08,F2>=0.18),"AA",IF(AND(C2>=100000,D2<=5,E2<=0.12,F2>=0.15),"A","B")))以C002(明晨商贸)验证:年交易额32万满足≥30万,逾期2次满足≤2,退货率8%满足≤8%,利润率18%满足≥18%,四个条件同时满足,返回"AA"等级。
以C010(绿野农业)验证:年交易额9.5万不满足≥10万,第一个IF不成立。继续判断第二个IF(AA等级),年交易额9.5万不满足≥30万,条件不成立。继续判断第三个IF(A等级),年交易额9.5万不满足≥10万,条件不成立。最终返回"B"等级。

IFS函数是IF函数的升级版,专门用于处理多分支判断场景。语法为IFS(条件1, 值1, 条件2, 值2, ..., 条件N, 值N)。与嵌套IF相比,IFS函数结构更清晰,便于阅读和维护。当判断条件超过3层时,IFS函数的编写效率和可读性明显优于嵌套IF。
基于四维度评分模型,使用IFS函数实现逾期维度的评分逻辑:
=IFS(D2=0,25,D2<=2,20,D2<=5,10,D2>5,0)3.3 退货率评分应用
退货率维度的IFS评分公式根据退货率区间分配不同分数:
=IFS(E2<=0.03,25,E2<=0.08,20,E2<=0.12,10,E2>0.12,0)
利润率维度采用类似逻辑:
=IFS(F2>=0.25,25,F2>=0.20,20,F2>=0.15,10,F2<0.15,0)年交易额维度同样适用:
=IFS(C2>=500000,25,C2>=300000,20,C2>=100000,10,C2<100000,5)
在实际业务场景中,数据来源多样,可能存在缺失值、格式错误或非数值输入。当公式引用包含错误值的单元格时,会导致整列数据异常。IFERROR函数提供了优雅的错误处理机制,其语法为IFERROR(公式或值, 错误时的返回值)。
在构建综合评分公式时,即使原始数据完整,公式本身也可能因逻辑问题产生错误。完整评分公式如下:
=IFERROR(IFS(D2=0,25,D2<=2,20,D2<=5,10,D2>5,0)+IFS(E2<=0.03,25,E2<=0.08,20,E2<=0.12,10,E2>0.12,0)+IFS(F2>=0.25,25,F2>=0.20,20,F2>=0.15,10,F2<0.15,0)+IFS(C2>=500000,25,C2>=300000,20,C2>=100000,10,C2<100000,5),0)该公式将四个维度的评分相加,并使用IFERROR包裹,确保任何环节出错时返回0而非错误值。以C001为例,各维度评分分别为25、25、25、25,总分100分,无错误返回。
IFERROR专门捕获错误值(#DIV/0!、#N/A、#VALUE!等),而IF用于条件判断。两者可结合使用:=IFERROR(IF(A1>0, 1/A1, "无效"), "计算失败")。在信用评估场景中,IFERROR主要作为公式安全网使用,确保数据处理的稳定性。
LET函数是Office 365引入的新函数,允许在公式中定义中间变量,简化复杂公式并提升计算性能。语法为LET(名称1, 值1, 名称2, 值2, ..., 最终表达式)。当公式中存在重复表达式时,LET函数可显著提升效率和可读性。
使用LET函数重构综合评分公式,首先定义各维度评分变量:
=LET(逾期分,IF(D2=0,25,IF(D2<=2,20,IF(D2<=5,10,0))),退货分,IF(E2<=0.03,25,IF(E2<=0.08,20,IF(E2<=0.12,10,0))),利润分,IF(F2>=0.25,25,IF(F2>=0.20,20,IF(F2>=0.15,10,0))),交易分,IF(C2>=500000,25,IF(C2>=300000,20,IF(C2>=100000,10,5))),逾期分+退货分+利润分+交易分)以C002为例验证:逾期次数2次,逾期分=20;退货率8%,退货分=20;利润率18%,利润分=10;年交易额32万,交易分=20;总分=70分。
LET函数的核心价值在于避免重复计算。假设原始公式中IF(D2=0,25,IF(D2<=2,20,IF(D2<=5,10,0)))出现多次,使用LET定义后只计算一次。在包含成百上千行数据的评估表中,这种优化可显著提升公式计算速度。
使用LET函数后,公式结构层次分明。逾期分、退货分、利润分、交易分四个变量名称直观表达业务含义,即使是非公式编写人员也能理解计算逻辑。同时,公式的调试也更加便捷,可单独检查各变量的计算结果。
LAMBDA函数允许用户创建自定义函数,无需VBA编程即可实现复杂的自定义逻辑。语法为LAMBDA(参数1, 参数2, ..., 表达式)。参数在调用时传入,表达式为函数返回值。LAMBDA函数本身不直接执行,需配合其他函数使用。
BYROW函数是动态数组函数家族成员,其语法为BYROW(数组, LAMBDA(行变量, 表达式))。BYROW对数组的每一行执行LAMBDA函数,返回各行计算结果组成的数组。在信用评估场景中,BYROW可实现批量计算,避免逐行复制公式。
使用BYROW+LAMBDA实现批量综合评分:
=BYROW(C2:F21,LAMBDA(row,LET(交易分,IF(INDEX(row,1)>=500000,25,IF(INDEX(row,1)>=300000,20,IF(INDEX(row,1)>=100000,10,0))),逾期分,IF(INDEX(row,2)=0,25,IF(INDEX(row,2)<=2,20,IF(INDEX(row,2)<=5,10,0))),退货分,IF(INDEX(row,3)<=0.03,25,IF(INDEX(row,3)<=0.08,20,IF(INDEX(row,3)<=0.12,10,0))),利润分,IF(INDEX(row,4)>=0.25,25,IF(INDEX(row,4)>=0.2,20,IF(INDEX(row,4)>=0.15,10,0))),逾期分+退货分+利润分+交易分)))该公式对C2:G21区域的每一行执行相同的评分逻辑。
INDEX(row,1)引用当前行的第一列(即C列年交易额),
INDEX(row,2)引用当前行的第二列(即D列逾期次数),
INDEX(row,3)引用当前行的第三列(即E列退货率),
INDEX(row,4)引用当前行的第四列(即F列利润率)。

SCAN函数用于累计计算,语法为SCAN(初始值, 数组, LAMBDA(累计变量, 当前值, 表达式))。REDUCE函数用于汇总计算,语法为REDUCE(初始值, 数组, LAMBDA(累计变量, 当前值, 表达式))。两者都可与LAMBDA配合实现复杂的数据处理逻辑。例如,使用REDUCE统计各等级客户数量,或使用SCAN计算信用评分的移动平均值。
往期推荐
| AND | BYCOL | BYROW | FALSE |
| IFERROR | IFNA | IFS | LAMBDA |
| NOT | OR | REDUCE | SCAN |
| TRUE | XOR | MAP | MAKEARRAY |
| IF | LET | SWITCH |