2013-10-08 251 views
-2

我嘗試和測試了很多方法,但從來沒有能夠得到我所需要的。Excel VBA中比較細胞

我有一個包含這個數據的Excel工作表:(這是一個概要,我有更多然後150條000線)

A   B  C 

30170 38,08 553299 
30170 -12  553299 
30170 -0,8  553299 
30172 38,08 553299 
30172 -12  553299 
30172 -0,8  553299 
30173 19,04 553299 
30173 -6  553299 
30173 -0,4  553299 
30174 19,04 553299 
30174 -6  553299 
30174 -0,4  553299 
90221 197,29 553299 
90221 -5,92 553299 

我需要做的:

  1. 測試每細胞在列A和列C

  2. 選擇(行),其具有匹配

  3. 刪除匹配

  4. 循環的最後一行到excel工作表的末尾。

更確切地說,我需要計算B列中的每一行,並與選擇的最後一行進行比較。例如:

例如:前三行是相同的,先取兩行然後*乘以3%,如果最後一行相等,則刪除最後一行。

不知道如果我再清楚不過,如果你需要更多的信息讓我知道。

+3

WTF我剛讀?你的問題非常模糊。你能清理它嗎? – CustomX

+3

確實是WTF。無論如何,這是毫無意義的。另外:詢問代碼的問題必須證明對所解決問題的最小理解。包括嘗試解決方案,爲什麼他們沒有工作,以及預期的結果。參見:[堆棧溢出的問題清單(http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) –

+1

感謝您的WTF傢伙!並不總是很容易把我們心裏有話...... 我會盡量不夠清楚...... 列A是商品代碼,B列是價格,列C是發票號碼。 我需要將物品代碼與物品代碼和發票編號與發票編號進行匹配(第1行到第3行是匹配)和(第4行到第6行是匹配)等... 找到匹配項後,我需要採取價格列(B)中,添加第一線一起(不是最後),這將給我一個結果,那麼我3%乘該結果如果公式結果等於最後一行(第三線或任何最後一行是)刪除行... – user2844413

回答

0

這可能會實現,並跳過環路(相當於更快的執行)

Sub Sample() 

    Range("D2").FormulaR1C1 = _ 
     "=IF(RC[-3]&RC[-1] = R[1]C[-3]&R[1]C[-1],"""",IF(ABS(CEILING(SUMIFS(R[-1]C2:R2C2,R[-1]C1:R2C1,RC1,R[-1]C3:R2C3,RC3)*0.03,0.1))=ABS(RC[-2]),""Delete"",""""))" 
    Range("D2").AutoFill Destination:=Range("D2:D15"), Type:=xlFillDefault 
    Range("D1").AutoFilter Field:=4, Criteria1:="<>" 
    Range("D2", Range("D" & Rows.Count)).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
    Columns("D").Delete 
    ActiveSheet.AutoFilterMode = False 

End Sub 

警告:還就COPY測試代碼數據的,直到你是100%肯定它是正確的

注:這個答案假設你有你的數據頭文件,如果你不這樣做了幾個行會ñ需要添加完整的功能。