你的第一個語法錯誤的位置:
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 「.....' –