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
它的工作! ;)