突出显示excel列中的总和大于一个值

时间:2020-08-29 22:16:33

标签: python excel pandas conditional-formatting xlsxwriter

我有一个已排序的列,我想突出显示那些总和小于阈值(在这种情况下为0.8)的行。如果您在下面运行此代码,它将高亮显示0.294和0.202,但这总和为0.496;我希望它也突出显示0.171,而不是0.157,因为它将超过0.8

我是否以我的条件格式使用了正确的条件?

import pandas as pd
import numpy as np
import xlsxwriter


df = pd.DataFrame(np.array([.294, .202, .171, .157, .103, .082, .045, .023, .021, .018, .016]))
writer = pd.ExcelWriter('results.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='sheet1', index=False)
wb = writer.book
yellow_format = wb.add_format({'bg_color':'#F7FE2E'})

ws = writer.sheets['sheet1']
ws.conditional_format('A2:A20' , {'type': 'formula', 'criteria': '=SUM(A2:A20) >= 0.8', 'format':  yellow_format})

wb.close()

1 个答案:

答案 0 :(得分:1)

好吧,首先,这个答案只是Excel,因为我不知道Pythong编码,但是我希望,如果您知道如何在Excel中做到这一点,也许可以对它进行编码:)

您几乎拥有了它。您需要总和范围是动态的。您的实际公式只是检查A2:A20的总和是否大于0.8。因为您使用的是相对引用,所以在咀嚼A2时,公式将总结为A2:A20,但是在检查A3时,公式将为A3:A21,依此类推。

使用提供的值,SUM(A2:A20) = 1.132,由于您键入了 >= 0.8,因此突出显示了0.294SUM(A3:A21)=0.838,因此.202也被突出显示。但是其余的总和不会高于0.8。

因此,您需要条件格式规则才能使用此公式:

=SUM($A$2:A2)<=0.8,从第2行开始,如果第2行的总和直到实际位置低于低于0.8,它将突出显示单元格。因此,第一个值的总和为A2:A2,第二个值的总和为A2:A3,依此类推。请注意,我使用绝对引用,但仅在第一个单元格上使用,而不是在整个范围上,因此向下拖动时的范围是动态的。

Switch between relative, absolute, and mixed references

基于此公式应用此条件格式规则将突出显示您在帖子中所说的值。

enter image description here

相关问题