过滤一列,并获得另一列的总和

你好,我有一个代码,在列上做一个vlookup,但我有一个问题,编辑代码的最后一部分做一个计数。 基本上,它应该筛选列D中的两个选项,从列I中获得总和,并将总数计入同一工作簿中的另一个工作表中。 以下是更好理解的代码:

Option Explicit Sub Calculate() Dim count_DL As Integer, count_IDL As Integer, wbMetrics As Workbook Sheets("PS").Select Range("D2").Select ActiveCell.FormulaR1C1 = _ "=IFERROR(VLOOKUP(RC[-3],Regulares!C[6]:C[8],3,0),IFERROR(VLOOKUP(RC[-3],'Temp Activos'!C[3]:C[5],3,0),IFERROR(VLOOKUP(RC[-3],'Temp JA'!C[3]:C[5],3,0),VLOOKUP(RC[-3],'Temp Fit'!C[3]:C[5],3))))" Range("D2").Select Selection.AutoFill Destination:=Range("D:D") Range("D:D").Select Columns("I:I").Select Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("J2").Select Selection.FormulaR1C1 = "=" ActiveWindow.WindowState = xlMaximized Range("J2").Select ActiveCell.FormulaR1C1 = "=SUM(C[-1])" Range("J3").Select 'count_DL = Application.WorksheetFunction.CountIf(ActiveSheet.Range("D:D"), "DL") 'count_IDL = Application.WorksheetFunction.CountIf(ActiveSheet.Range("D:D"), "IDL") 'Worksheets("Resultados").Range("B13") = count_DL 'Worksheets("Resultados").Range("C14") = count_IDL Sheets("Resultados").Select End Sub 

首先,不要使用Select。 使用:

  With Sheets("PS").Range("D2") .FormulaR1C1= _ =IFERROR(VLOOKUP(RC[-3],Regulares!C[6]:C[8],3,0),IFERROR(VLOOKUP(RC[-3],'Temp Activos'!C[3]:C[5],3,0),IFERROR(VLOOKUP(RC[-3],'Temp JA'!C[3]:C[5],3,0),VLOOKUP(RC[-3],'Temp Fit'!C[3]:C[5],3))))" .AutoFill Destination:=Range("D:D") End With 

并为你的代码的其余部分啾啾。 你几乎不想用Select做任何事情。

其次,你的问题是你正在将count_IDL和count_DL定义为整数。 CountIf返回一个Double,所以你应该这样定义你的variables。

此外,如果您希望Resultados在完成后成为活动工作表,则应使用表格(“Resultados”)。