Python/Excel:将给定值与求和值进行比较

Python/Excel:将给定值与求和值进行比较,python,excel,if-statement,for-loop,sum,Python,Excel,If Statement,For Loop,Sum,从“Excel图像1”中,我将数据拉入A列和B列的python中。目标是对B列的值求和,看看它是否高于或低于给定的1500。如果大于或等于1500,则无需执行任何操作。但是,如果值较低,则调整旁边有“更改”字样的值,使计算的总和变为1500或更多。在我们的例子中,总数是700,低于1500 import xlrd excel = '/Users/Bob/Desktop/' wb1 = xlrd.open_workbook(excel + 'assignment2.xlsx') sh1 = wb

从“Excel图像1”中,我将数据拉入A列和B列的python中。目标是对B列的值求和,看看它是否高于或低于给定的1500。如果大于或等于1500,则无需执行任何操作。但是,如果值较低,则调整旁边有“更改”字样的值,使计算的总和变为1500或更多。在我们的例子中,总数是700,低于1500

import xlrd
excel = '/Users/Bob/Desktop/'

wb1 = xlrd.open_workbook(excel + 'assignment2.xlsx')
sh1 = wb1.sheet_by_index(0)

colA,colB = [],[]
for a in range(3,sh1.nrows):
    colA.append(int(sh1.cell(a,0).value))
    colB.append(int(sh1.cell(a,1).value))
print(colA)
print(colB)

excel_sum=(sh1.cell_value(2,1))
print("Given Sum:", excel_sum)

calc_sum = sum(colB)
print(calc_sum)

if calc_sum >= excel_sum:
    print("Good")
#else:
#Need to adjust the values that has the words "change" beside them
电流输出:

[0, 1, 2, 3, 4]
[900, -400, -200, 300, 100]
Given Sum: 1500.0
700

谢谢

你知道delta-
excel\u sum-calc\u sum
。因此,扫描C列以查找更改,并将其添加到B列

else:
    for row in range(3, sh1.nrows):
        if sh1.cell(row, 2) == 'change':
            colB[row] = int(sh1.cell(row, 1)) + excel_sum - calc_sum
            break

当然,我看到您使用的是
xlrd
,而不是
xlwt
,因此我不知道您将如何更改该值。是吗?

C列中的“更改”也是这样吗?目标是在更改后将B列的总数减少到1500或更多,那么更改的算法是什么(对所有更改的单元格进行统一调整,使所有更改单元格达到相同的值以达到目标)?否。B3中给出的1500只是告诉我们,这是我们在将B4添加到B8时应该得到的总和。但是,当我们添加它们时,我们没有这些。我们只有700人。因此,我们需要调整B6和B8,因为C6和C8有“更改”一词,因此当我们再次添加它们时,总和为1500或更多。我认为应该有if-else语句将总和与给定的总和进行比较。@ChrisFreeman这有意义吗?应该如何进行调整?在所有
change
元素之间均匀分布差异?还是与他们的价值观成比例?或者…?@Austin Hastings只要更改的值为正值,无论您如何更改,我们只更改B6和B8中的值,因为我们只允许根据单元格C6和C8更改它们。此代码适用于任何具有相同格式的excel文件。SET_CELL_值未定义。一旦我改变它,我希望代码再次计算总和,这次它将等于1500。我认为我们需要使用xlwt将这些新内容写入问号旁边的单元格中。正确。您必须找出如何让xlwt和xlrd一起工作,并根据您的计划对设置的单元格值进行编码。从我读到的内容来看,xlrd和xlwt的大多数用例都是作为一个过滤器,所以您可以复制单元格值,然后更改一些。但可能还有其他用法。不过,我不允许在excel文件中进行更改。我所拥有的并不是我真正在做的。我自己做了一个例子,并贴了出来。事实上我用的是一个公式。所以,如果你能让这一切顺利进行,我将不胜感激。好的,我已经对它进行了修改,直接更换了colB。这是存储列值的唯一其他位置。具有总计1500个新值的新数组在哪里?我是说我该怎么打印你的代码?