【问题标题】:Python/Excel: Compare the given value with the summed valuePython/Excel:将给定值与总和值进行比较
【发布时间】:2016-03-03 05:02:35
【问题描述】:

Excel Image 1

从“Excel Image 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

谢谢!

【问题讨论】:

  • C 列中的“变化”也是如此吗?而目标是改变后B列的总和减少到1500或更多,那么改变的算法是什么(对所有改变的单元格进行统一调整,使所有改变的单元格都达到相同的值以达到目标)?
  • 没有。 B3 中给出的 1500 只是告诉我们,这是我们将 B4 添加到 B8 时应该得到的总和。但是,当我们添加它们时,我们没有。我们只有700。所以,我们需要调整B6和B8,因为C6和C8有“变化”二字,这样当我们再次相加时,总和为1500或更多。我认为应该有 if-else 语句将总和与给定总和进行比较。
  • @ChrisFreeman 这有意义吗?
  • 应该如何调整?在所有change 元素之间均匀分布不同?还是与他们的价值观成正比?还是……?
  • @Austin Hastings 不管你怎么做,只要你改变它们的值是正的,我们只改变 B6 和 B8 中的值,因为我们只允许根据到单元格 C6 和 C8。此代码适用于任何具有相同格式的 Excel 文件。

标签: python excel if-statement for-loop sum


【解决方案1】:

您知道增量 - excel_sum - calc_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,所以我不知道你将如何更改值。你呢?

【讨论】:

  • SET_CELL_VALUE 未定义。一旦我改变它,我希望代码再次计算总和,这一次它将等于 1500。我认为我们需要使用 xlwt 将这些新的写入问号旁边的单元格中。
  • 正确。您必须弄清楚如何让 xlwt 和 xlrd 一起工作,并根据您的计划对 SET_CELL_VALUE 进行编码。根据我的阅读,xlrd 和 xlwt 的大多数用例都是作为过滤器,因此您将复制单元格值然后更改一些值。但可能还有其他用途。
  • 我不允许在 excel 文件中进行更改。我在这里所拥有的并不是我实际在做的。我自己做了一个例子并发布了它。我实际上使用了一个公式。因此,如果您能充分发挥作用,我将不胜感激。
  • 好的,我已经修改为直接更改colB。这是存储列值的唯一其他位置。
  • 新值加起来为 1500 的新数组在哪里?我的意思是什么以及如何打印您编码的内容?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 2021-04-24
  • 2017-04-22
  • 1970-01-01
相关资源
最近更新 更多