excel公式编写简化,Python生成公式

'''
    ===逻辑书写===
    涉及的单元格过多,不方便逻辑分析
    先用文字代替单元格,书写逻辑。
    再把文字替换掉。
'''
def wenzi_zhuan_gongshi():
    a = '''=IFS(指标>基准值,0,指标>=挑战值,权重*(0.5+(1-(指标-挑战值)/(基准值-挑战值))*0.5),指标<=挑战值,权重)
    '''
    a = a.replace('挑战值' ,'c2')
    a = a.replace('权重' ,'D2')
    a = a.replace('基准值' ,'B2')
    a = a.replace('指标' ,'汇总数据!O3')
    print(a)
# wenzi_zhuan_gongshi()


'''
    纵向数据,转至成横向。
'''
def shu_zhuan_heng_01():
    begin_index = 53#单元格开始的行号
    begin_zimu = "I"#单元格开始的列号
    xunhuan_cishu = 12#循环次数

    for i in range(begin_index ,xunhuan_cishu +begin_index):
        a = '=IF(数据!XXX01>0,8,0)'
        a = a.replace("XXX01" ,begin_zimu +str(i))
        #a = a.replace("XXX01", begin_zimu + str(i))#每一条替换一个参数,可以罗列
        print(a ,end='\t')

#shu_zhuan_heng_01()

'''
    线性得分,递增得分。
'''
def xianxing_defen_dizeng():
    a = '''=IFS(位置<=值_最低,分数_最低,位置<值_最高,(位置-值_最低)/(值_最高-值_最低)*(分数_最高-分数_最低),位置>=值_最高,分数_最高)'''
    a = a.replace('位置', "E38")
    a = a.replace('值_最低',"70%" )
    a = a.replace('值_最高', "100%")
    a = a.replace('分数_最低', "0")
    a = a.replace('分数_最高', "6")
    print(a)

# xianxing_defen_dizeng()

'''
    线性得分,递减得分。
'''
def xianxing_defen_dijian():
    a = '''=IFS(位置<=值_最低,分数_最高,位置<值_最高,(值_最高-位置)/(值_最高-值_最低)*(分数_最高-分数_最低),位置>=值_最高,分数_最低)'''
    a = a.replace('位置', "E38")
    a = a.replace('值_最低',"70%" )
    a = a.replace('值_最高', "100%")
    a = a.replace('分数_最低', "0")
    a = a.replace('分数_最高', "6")
    print(a)

# xianxing_defen_dijian()

'''
    超过80%,每超1%,得1分。
    
    最多得10分。MIN(得分公式,10)
    最多扣10分。MAX(得分公式,-10)
'''
def chaobiao_defen():
    #超过80%,每超1%,扣1分。
    a = '''=IF(真实_值>标准_值,舍入(ROUND((真实_值-标准_值)/每超_值,2),0)*(得分_值),0)'''
    #a = a.replace('舍入', "ROUNDUP")  # 向上舍入 ,1.3算2。
    a = a.replace('舍入', "ROUNDDOWN")#向下舍入 ,不足不处理,如1.3算1。
    a = a.replace('真实_值', "E3")
    a = a.replace('标准_值', "80%")
    a = a.replace('每超_值', "1%")
    a = a.replace('得分_值', "-5")
    print(a)

#chaobiao_defen()

'''
    低于80%,每低1%,得-2分。
    
    最多得10分。MIN(得分公式,10)
    最多扣10分。MAX(得分公式,-10)
'''
def dibiao_defen():
    #超过80%,每超1%,扣1分。
    a = '''=IF(真实_值<标准_值,舍入(ROUND((标准_值-真实_值)/每低_值,2),0)*(得分_值),0)'''
    # a = a.replace('舍入', "ROUNDUP")  # 向上舍入 ,1.3算2。
    a = a.replace('舍入', "ROUNDDOWN")#向下舍入 ,不足不处理,如1.3算1。
    a = a.replace('真实_值', "E3")
    a = a.replace('标准_值', "80%")
    a = a.replace('每低_值', "1%")
    a = a.replace('得分_值', "-2")
    print(a)

#dibiao_defen()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值