你的第一个语法错误的位置:
Dim worksheetmaster As String = "Master"
Dim worksheettocheck As String = "New"
你不能做到这一点。相反,你需要使用:
Dim worksheetmaster As String
Dim worksheettocheck As String
worksheetmaster = "Master"
worksheettocheck = "New"
更妙的是给它们分配到工作表diectly点,但让我们与您的代码工作,尽可能地而不是完全重写它。
对于countif,你不能以这种方式加入范围。你甚至还没有分配一个值我,但假设我= 1,代码:
softcount = Evaluate("=COUNTIF(Range('" & worksheettocheck & "'!A:A'" & worksheetmaster & "'!A" & i & ")"Soft")")
计算为总废话在VBA:
softcount = Evaluate(=COUNTIF(Range('New'!A:A'Master'!A1)Soft))
现在,从我可以告诉你,什么你正在试图做的是计算在小区主多少次A值&我出现在范围内新答:!!!A,这取决于是否主角色A & I =“软”或主角色A & I =“辛苦了! ”。那么让我们看看我们是否可以找到能够做到的代码。
对于我们输入“Soft”到Master!A1和“Hard”进入Master!A2的数据。然后我们在列中的各个单元格中输入随机的“软”或“硬”新!A:A。
现在你的代码如下所示:
Dim worksheetmaster As String
Dim worksheettocheck As String
Dim softcount As Long, i As Long, hardcount As Long
worksheetmaster = "Master"
worksheettocheck = "New"
i = 1
softcount = Application.CountIf(Sheets(worksheettocheck).Range("A:A"), Sheets(worksheetmaster).Range("A" & i).Value)
i = 2
hardcount = Application.CountIf(Sheets(worksheettocheck).Range("A:A"), Sheets(worksheetmaster).Range("A" & i).Value)
这是低效的和有限的,但它保留尽可能多的原密码越好,它的工作原理。
编辑补充:如果“硬”是主设备B &我而不是A &我那么代码变为:
i = 1
softcount = Application.CountIf(Sheets(worksheettocheck).Range("A:A"), Sheets(worksheetmaster).Range("A" & i).Value)
hardcount = Application.CountIf(Sheets(worksheettocheck).Range("A:A"), Sheets(worksheetmaster).Range("B" & i).Value)
你不需要的范围内,这将是因为它会在一个工作表。 –
@Nathan_Sav - 仍然有错误:( - 请参阅我的编辑。 – BellHopByDayAmetuerCoderByNigh
不,在每个段之后像'= countif('“&w1&”'!A:A,''“&w2&”!A:A “.....' –