您好我有一个代码在列上执行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
答案 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")。激活