Python 有没有办法将这些公式组合到一个单元格中?

Python 有没有办法将这些公式组合到一个单元格中?,python,excel-formula,Python,Excel Formula,我正在检查电子表格中某个列的某个模式。我有一个公式来检查模式,它将被标记或很好,然后另一个公式来检查是否有标记。 我使用2个公式,因为电子表格将使用Python进行提取和编辑,这似乎是目前最简单的方法。我也在研究如何使用Python来更有效地实现这一点 我试图在A、B或C列中匹配五个0的模式。它检查哪一列并不重要 A B C D E 379 400 51 fine Flagged 404 460 18 fine 379 365 65 fine 0

我正在检查电子表格中某个列的某个模式。我有一个公式来检查模式,它将被标记或很好,然后另一个公式来检查是否有标记。 我使用2个公式,因为电子表格将使用Python进行提取和编辑,这似乎是目前最简单的方法。我也在研究如何使用Python来更有效地实现这一点

我试图在A、B或C列中匹配五个0的模式。它检查哪一列并不重要

A   B   C   D     E
379 400 51  fine  Flagged
404 460 18  fine    
379 365 65  fine    
0   0   0   fine    
0   0   0   Flag    
0   0   0   fine    
0   0   0   fine    
0   0   0   fine    
399 480 94  fine    
390 420 55  fine    
399 435 121 fine    
在D列中,我使用以下公式来查找模式:

=IF((AND(A5=0, A6=0, A7=0, A8=0, A9=0 )), "Flag", "Fine")
然后使用此公式检查D中是否有标记:

=IFERROR(IF(MATCH("Flag",W:W,0), "Flagged"), "Fine")
这样Python就可以只检查1个单元格(我的Python技能还在发展中)

如果有一个公式可以粘贴到一个单元格中,为电子表格提供标志或良好的结果,那就太完美了。 谢谢

编辑/回答4.9.19 最后,我找不到可以在单个细胞中使用的公式。解决方法是使用python迭代单元格,根据需要粘贴公式:

    for i in range(3,max_row+1):
          cell_obj=sheet.cell(row=i,column=24)
          # print cell value     
          print(cell_obj.value)
          #5-in a row fault
          formula = "=IF((AND(O%d=0, O%d=0, O%d=0, O%d=0, O%d=0)), A1, A2)" % (i-2, i-1, i, i+1, i+2)
          #3-in a row fault
          formula = "=IF((AND(O%d=0, O%d=0, O%d=0)), A1, A2)" % (i-1, i, i+1)
          cell_obj.value = formula
          print(cell_obj.value)
    sheet["Y2"] = "=IFERROR(IF(MATCH(A1,X:X,0), A3), A4)"

用熊猫阅读你的电子表格。如果要分析很多行,最好使用
read_csv
而不是
read_excel
,因为csv文件比xlxs小

df = pd.read_csv('your_filename.csv', header = 0)
然后使用
np.where()
方法将所需的标记放置在D列中

df['D'] = np.where((df['A'] == 0) & (df['B'] == 0) & (df['C'] == 0), ['Flag'], ['Fine'])
要获取列
F
,您必须引用列
D
,对吗?为此,请使用
loc

df.loc[df['D'] == 'Flag', 'F'] = 'Flagged'

我不确定在
F
上标记
'Flagged'
哪个值,如果列
D
值等于
'Fine'
?在上面的示例中,您将列
F
标记为
'Flagged'
,列
D
值为
'Fine'
。在这种情况下,只需将上述条件中的值更改为所需值。

只需确认,如果A、B和C列中的任何一列连续有五个
0
,是否要在D列中返回
标志
?你把帖子中提供的IF公式放在哪里了?您在单元格D1中输入的公式是什么?基本上,您是否要在要返回标记的三列范围内找到五个连续的
0
?您需要一个数组公式才能在一个单元格中获得结果。您是用Excel还是Python输入公式?可以在Python中输入数组公式吗?Terry W-谢谢Terry。5在一列的一行中似乎做了这项工作。5x3在技术上是理想的,但实际上在这个阶段似乎并不重要-谢谢teylyn。现在我正在手动测试,然后一直到python。我看过一个数组公式,但不确定在这种情况下如何使用它。如果您有任何想法,我们将不胜感激,thanks@GlennDavies“Python只需检查1个单元格”*:您的问题和尝试。