我正在尝试编写代码,该代码从下表中的H列(相关工作流)中获取经过过滤的标准,然后根据C列(出站/入站)和I列(求和)对G列(Celkovávýševýnosuv EUR)求和。 ),然后按(Spustit)按钮将最终号码放入单元格K3。
我认为它应该像这样工作,我在H列中选择了Criterium,例如Jade&Fountain,它将仅显示包含Jade&Fountain的行,我将按下按钮,并且如果存在,则将仅对那些在I +列中具有Yes的行求和。 I在C列中,它将从总数中减去,如果有O,它将在总数中相加。然后它将在单元格K3中显示总数。
我添加了我编写的代码,它应该可以工作,但是我不确定Do While Cells(i,2).SpecialCells(xlCellTypeVisible).Value <> ""
部分中的代码。感谢您的答复。
Sub While_loop()
Dim i As Integer
Dim x As Integer
i = 3
x = 0
Do While Cells(i, 2).SpecialCells(xlCellTypeVisible).Value <> ""
If Cells(i, 9).Value = "Yes" Then
If Cells(i, 3).Value = "O" Then
x = x + Cells(i, 7).Value
End If
If Cells(i, 3).Value = "I" Then
x = x - Cells(i, 7).Value
End If
End If
i = i + 1
Loop
Cells(2, 12).Value = x
End Sub
我要参考的表
答案 0 :(得分:0)
如果需要,您可以在没有VBA的情况下执行此操作,请遵循本教程https://exceljet.net/formula/count-visible-rows-only-with-criteria
尝试使用此功能(假设第3-15行中的数据),关键是SUBTOTAL功能:
=SUMPRODUCT((C3:C15="O")*(I3:I15="Yes")*(SUBTOTAL(109,OFFSET(G3:G15,ROW(G3:G15)-MIN(ROW(G3:G15)),0,1))))
使用您的2条条件得出所有可见行的总和。如果要扣除I:
=SUMPRODUCT((C3:C15="O")*(I3:I15="Yes")*(SUBTOTAL(109,OFFSET(G3:G15,ROW(G3:G15)-MIN(ROW(G3:G15)),0,1))))-SUMPRODUCT((C3:C15="I")*(I3:I15="Yes")*(SUBTOTAL(109,OFFSET(G3:G15,ROW(G3:G15)-MIN(ROW(G3:G15)),0,1))))