多条件IF AND逻辑的费用计算公式编写请求
多条件IF AND逻辑的费用计算公式编写请求
嘿,我来帮你搞定这个多条件费用计算的逻辑!不管你是要在Excel里写公式,还是用代码实现,我都给你整理好清晰的方案,先把所有规则明确下来,再上具体实现:
完整费用规则梳理
按照你提到的延续逻辑,我把从Class XI到XII、Arts到Science所有组合的费用规则整理如下(XII的费用是在XI同类型基础上增加了2000,你可以根据实际需求调整这个数值):
- 当Class为"XI"时
- Stream是"Arts":
- Computer="Yes" → 总费用
20000 - Computer="No" → 总费用
15000
- Computer="Yes" → 总费用
- Stream是"Science":
- Computer="Yes" → 总费用
25000 - Computer="No" → 总费用
20000
- Computer="Yes" → 总费用
- Stream是"Arts":
- 当Class为"XII"时
- Stream是"Arts":
- Computer="Yes" → 总费用
22000 - Computer="No" → 总费用
17000
- Computer="Yes" → 总费用
- Stream是"Science":
- Computer="Yes" → 总费用
27000 - Computer="No" → 总费用
22000
- Computer="Yes" → 总费用
- Stream是"Arts":
实现方案1:Excel公式(嵌套IF+AND)
如果是在Excel中使用,直接用嵌套的IF和AND函数就能实现,公式如下:
=IF(AND(A1="XI", B1="Arts", C1="Yes"), 20000, IF(AND(A1="XI", B1="Arts", C1="No"), 15000, IF(AND(A1="XI", B1="Science", C1="Yes"), 25000, IF(AND(A1="XI", B1="Science", C1="No"), 20000, IF(AND(A1="XII", B1="Arts", C1="Yes"), 22000, IF(AND(A1="XII", B1="Arts", C1="No"), 17000, IF(AND(A1="XII", B1="Science", C1="Yes"), 27000, IF(AND(A1="XII", B1="Science", C1="No"), 22000, "无效条件"))))))))
注:这里假设Class在A列,Stream在B列,Computer在C列,你可以根据实际单元格位置修改;最后返回的"无效条件"可以替换成你需要的默认提示或数值。
实现方案2:Python代码(字典映射,易维护)
如果是用代码实现,推荐用字典映射的方式,比嵌套IF更简洁,后续扩展新的Class/Stream也更方便:
def calculate_total_fee(class_level, stream, computer): # 构建费用映射表,键是(年级, 方向, 是否选计算机)的元组 fee_mapping = { ("XI", "Arts", "Yes"): 20000, ("XI", "Arts", "No"): 15000, ("XI", "Science", "Yes"): 25000, ("XI", "Science", "No"): 20000, ("XII", "Arts", "Yes"): 22000, ("XII", "Arts", "No"): 17000, ("XII", "Science", "Yes"): 27000, ("XII", "Science", "No"): 22000 } # 匹配对应费用,无匹配则返回提示 return fee_mapping.get((class_level, stream, computer), "无效条件") # 测试示例 print(calculate_total_fee("XI", "Arts", "Yes")) # 输出:20000 print(calculate_total_fee("XII", "Science", "No")) # 输出:22000
注:如果之后要加新的年级(比如XIII)或者新的Stream(比如Commerce),只需要在
fee_mapping里添加对应的键值对就行,不用改逻辑代码,非常灵活。
备注:内容来源于stack exchange,提问作者Richard Iawphniaw
相关产品推荐
相关产品推荐

