想在程序中加一个条件,当value<0 并且其绝对值大于上一条同ID的value时,返回待拆分
from openpyxl import load_workbook
wb = load_workbook('test2.xlsx')
sheet1 = wb['Sheet1']
kv = {}
for i in range(2, sheet1.max_row + 1):
id = sheet1.cell(row=i, column=1).value
value = sheet1.cell(row=i, column=2).value
key = str(id)
if key in kv:
if value < 0:
sheet1.cell(row=i, column=3).value = kv[key]
else:
sheet1.cell(row=i, column=3).value = '复充'
kv[key] = '复充'
else:
if value < 0:
sheet1.cell(row=i, column=3).value = '异常值'
if value > 0 and value <= 50:
sheet1.cell(row=i, column=3).value = '测试值'
else:
sheet1.cell(row=i, column=3).value = '首充'
kv[key] = '首充'
wb.save("test2.xlsx")
运行结果
另外用一个字典记录上一次同id正常的值,abs比较下,第一条正常值判断有bug,应该用elif,大概下面这样
from openpyxl import load_workbook
wb = load_workbook('test2.xlsx')
sheet1 = wb['Sheet1']
kv = {}
kvlastValue={}
for i in range(2, sheet1.max_row + 1):
id = sheet1.cell(row=i, column=1).value
value = sheet1.cell(row=i, column=2).value
key = str(id)
if key in kv:
if value < 0:
if abs(value)>kvlastValue[key]:
sheet1.cell(row=i, column=3).value = "待拆分"
else:
sheet1.cell(row=i, column=3).value = kv[key]
else:
sheet1.cell(row=i, column=3).value = '复充'
kv[key] = '复充'
kvlastValue[key]=value#记录上一条的值
else:
if value < 0:
sheet1.cell(row=i, column=3).value = '异常值'
elif value > 0 and value <= 50:#这里应该是elif,要不<0的值会被填充成首冲
sheet1.cell(row=i, column=3).value = '测试值'
else:
sheet1.cell(row=i, column=3).value = '首充'
kv[key] = '首充'
kvlastValue[key]=value#记录上一条的值
wb.save("test2.xlsx")
用临时变量记录上一次value值,当本次value小于0时,判断其绝对值是否大于临时变量value值。