VBA SUMIF Sub不执行 –

第一次来 – 很好,)

什么即时尝试做:当button被按下 – 通过使用一个单元格区域的循环添加sumif公式。

Dim wbAdv As Workbook Sub TranferDataRawToAdv_Click() Set wbAdv = ThisWorkbook 'addHBL 'addOriginalHBLreq addSumIfToCells End Sub Sub addSumIfToCells() Dim Dept_Row As Long Dim Dept_Clm As Long Table1 = AdvData.range("L6:L20") 'Needs dynamic lookup Dept_Row = AdvData.range("Q6").Row Dept_Clm = AdvData.range("Q6").Column Dim wsFunc As WorksheetFunction: Set wsFunc = Application.WorksheetFunction For Each cl In Table1 wbAdv.Worksheets("Advisering").Cells(Dept_Row, Dept_Clm) = wsFunc.SumIf(range("L:L"), range("L" & Dept_Row), range("N:N")) wbAdv.Worksheets("Advisering").Cells(Dept_Row, Dept_Clm + 1) = wsFunc.SumIf(range("L:L"), range("L" & Dept_Row), range("O:O")) wbAdv.Worksheets("Advisering").Cells(Dept_Row, Dept_Clm + 2) = wsFunc.SumIf(range("L:L"), range("L" & Dept_Row), range("P:P")) Dept_Row = Dept_Row + 1 Next cl End Sub 

如果我按F5运行代码 – 它可以将公式添加到单元格中。 但是当点击它只增加一个0。

任何帮助的想法?

谢谢

您需要在wsFunc.SumIf函数中确定您要寻找哪个工作表。

 wsFunc.SumIf(sheets("????").range("L:L"), sheets("????").range("L" & Dept_Row), _ sheets("????").range("P:P")) 

更新:

我只是注意到@JEEPED已经给出的答复作为原帖的评论。 对不起,重复。

第一个:感谢ALOT快速回复

我做了以下几点:

 Dim wbAdv As Workbook Sub TranferDataRawToAdv_Click() Set wbAdv = ActiveWorkbook 'addHBL 'addOriginalHBLreq addSumIfToCells End Sub Sub addSumIfToCells() Dim Dept_Row As Long Dim Dept_Clm As Long Table1 = wbAdv.Worksheets("Advisering").range("L6:L1000") 'Needs dynamic lookup Dept_Row = wbAdv.Worksheets("Advisering").range("Q6").Row Dept_Clm = wbAdv.Worksheets("Advisering").range("Q6").Column Dim wsFunc As WorksheetFunction: Set wsFunc = Application.WorksheetFunction For Each cl In Table1 wbAdv.Worksheets("Advisering").Cells(Dept_Row, Dept_Clm) = wsFunc.SumIf(wbAdv.Worksheets("Advisering").range("L:L"), wbAdv.Worksheets("Advisering").range("L" & Dept_Row), wbAdv.Worksheets("Advisering").range("N:N")) wbAdv.Worksheets("Advisering").Cells(Dept_Row, Dept_Clm + 1) = wsFunc.SumIf(wbAdv.Worksheets("Advisering").range("L:L"), wbAdv.Worksheets("Advisering").range("L" & Dept_Row), wbAdv.Worksheets("Advisering").range("O:O")) wbAdv.Worksheets("Advisering").Cells(Dept_Row, Dept_Clm + 2) = wsFunc.SumIf(wbAdv.Worksheets("Advisering").range("L:L"), wbAdv.Worksheets("Advisering").range("L" & Dept_Row), wbAdv.Worksheets("Advisering").range("P:P")) Dept_Row = Dept_Row + 1 Next cl End Sub 

它的工作! ;)