我有一张工作表“Employee_log”,其中包含A列中单个字符串中每日日志的详细信息。例如:
A1 : EMP1~EMP2~JOB1~JOB2... A2 : EMP1~EMP3~JOB1~JOB3... A3 : EMP2~EMP3~JOB2~JOB3...
现在,我希望此列中出现EMP1
和JOB1
的次数,并填入另一张“Ind_Detail”:
我正在使用,但它无法正常工作,
Set DSht = Worksheets("Employee_log")
Dsht. Activate
ThisWorkbook.Sheets("Ind_Detail").Cells(1, "A") =CountIfs(Range("A:A"), _
"EMP1", Range("A:A"), "JOB1")
Set DSht = Nothing
答案 0 :(得分:0)
如果字符串' 中出现'字符串,则需要将条件包装在通配符中以进行计数。
with Worksheets("Employee_log")
ThisWorkbook.Sheets("Ind_Detail").Cells(1, "A") = _
application.CountIfs(.columns(1), "*EMP1*", .columns(1), "*JOB1*")
end with
我还将工作表阻止为With ... End With statement,以便范围(例如示例中的.Columns(1)
)可以本地化到Employee_log工作表。您的Range("A:A")
示例使父工作表的定义不明确。
有关远离依赖选择和激活以实现目标的更多方法,请参阅How to avoid using Select in Excel VBA macros。
答案 1 :(得分:0)
CountIfs是一个WorkSheet函数,它不能直接在VBA中使用。直接在目标单元格中编写公式:
=CountIfs(Employee_log!A:A, "*EMP1*", Employee_log!A:A, "*JOB1*")
或者,在VBA中,使用WorksheetFunction对象访问Worksheet函数:
ThisWorkbook.Sheets("Ind_Detail").Cells(1, "A") =WorkSheetFunction.CountIfs(Range("A:A"), "*EMP1*", Range("A:A"), "*JOB1*")
编辑:在Jeeped的回答中添加了通配符