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

时间:2014-06-26 15:46:56

标签: excel vba count

您好我有一个代码在列上执行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

1 个答案:

答案 0 :(得分:1)

首先,不要使用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,因此您应该以这种方式定义变量。

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