2017-04-21 48 views
0

我正在隨機抽取每個市場每份報告3%的報告點擊率..不要問。無論如何 - 我已經完成了所有設置和完成的代碼,市場和報告設置爲Excel for VBA error in'For'statement

ex:market = Array(「market1」,「market2」,「market3」...) report = Array(「report1」,「report2」,「report3」。 ..)

我的問題是,當我運行代碼即可獲得3%,當沒有命中報告對於市場 - 我得到的上次報告的副本

的數據是這樣的:

market1 | report1 | #點擊率

market1 | report2 | #點擊率

Market1 | report3 | #點擊率

market2 | report1 |#點擊次數

market2 | report1 | #點擊率

market2 | report3 | #of hits

如何消除以前數據的重複?

這裏是我的代碼:

For i = 0 To UBound(market) 
For z = 0 To UBound(report) 


    reporthits = Application.CountIfs(ws2.Range("B:B"), market(i), ws2.Range("L:L"), report(z)) 

    If reporthits * 0.03 < 1 Then 
    samplecount = 1 
    Else 
    samplecount = Round(reporthits * 0.03, 0) 
    End If 

    rownumber = ws2.Evaluate("IFERROR(Match(""" & market(i) & report(z) & """,B:B & L:L, 0),""Not Found"")") 


    If IsNumeric(rownumber) Then 

ws2.Range("$A" & rownumber & ":$L" & (rownumber + (samplecount - 1))).Copy 
lrow3 = ws3.Range("A" & Rows.Count).End(xlUp).Row + 1 
ws3.Range("A" & lrow3).PasteSpecial xlPasteAll 

Else: Resume Next 

的感謝!

+0

這是因爲沒有匹配被發現和行號是'「未找到」'這將拋出一個錯誤,但你的'上的錯誤恢復next'強制它到下一行,並粘貼最後被複制的單元格。你需要測試一下rownumber是一個數字還是一個字符串。只有在rownumber是數字的情況下才能進行復制和粘貼。 –

回答

0

替換:

on error resume next 
ws2.Range("$A" & rownumber & ":$L" & (rownumber + (samplecount - 1))).Copy 

lrow3 = ws3.Range("A" & Rows.Count).End(xlUp).Row + 1 
ws3.Range("A" & lrow3).PasteSpecial xlPasteAll 

If Isnumeric(rownumber) Then 
    ws2.Range("$A" & rownumber & ":$L" & (rownumber + (samplecount - 1))).Copy 

    lrow3 = ws3.Range("A" & Rows.Count).End(xlUp).Row + 1 
    ws3.Range("A" & lrow3).PasteSpecial xlPasteAll 
End If 
+0

斯科特,再次感謝你 - 真正的拯救生命 – messi1335