2016-09-16 68 views
0

對於VBA比我更熟練的人,此問題可能非常容易。我的問題是,我想要計算包含特定顏色的單元格,但前提是它符合相鄰單元格中的條件。我發現瞭如何做到這一點,如果我只希望根據顏色來算,這是什麼樣子:如果相鄰單元格符合條件,則根據顏色計算單元格

Function CountCcolor(range_data As Range, criteria As Range) As Long 
Dim datax As Range 
Dim xcolor As Long 

xcolor = criteria.Interior.ColorIndex 

For Each datax In range_data 
If datax.Interior.ColorIndex = xcolor Then 
    CountCcolor = CountCcolor + 1 
End If 
Next datax 
End Function 

所以在我的例子,現在我要計數細胞與綠顏色我B列如果相鄰的單元格列A等於Apple。 Example image

你能幫我嗎?我有點卡在這裏!謝謝大家,週日快樂!

回答

1

只需添加另一個條件你If聲明

If datax.Interior.ColorIndex = xcolor And LCase(datax.Offset(0,-1).Value) = "apple" Then 

我用LCase兩全Appleapple ...

當然,當您使用Offset負值,你必須確保您不會將其應用於靠近工作表末端的單元格(在本例中爲第一列),否則您會收到錯誤消息。

如果你想在同一行的單元作爲datax但列A,只是用datax.Row獲得的行號:

yoursheet.Cells(datax.Row, 1).Value 

哪裏yoursheet是您正在使用的(例如data_range.Sheet)的worksbeet。如果您願意,您可以用"A"替換列索引(我更喜歡使用數字)。

+0

大謝謝!嗯,我意識到,我沒有給我的問題,當我開始這個線程的全貌。我實際上有多個包含顏色的列,但我總是希望在A列中找到相鄰的單元格。有沒有辦法使用偏移量函數並始終使用列A而不是計數?我試着用上面的代碼,你提供了我,並把「A」而不是-1,但似乎並沒有工作:( – sjansen

+0

我編輯我的帖子 – arcadeprecinct

0

這裏有幾個途徑獲得同一行和第一列的單元格:

datax(, 2 - datax.Column)   ' no auto-complete 
datax.Offset(, 1 - datax.Column) ' auto-complete 
datax.EntireRow.Cells(1)   ' no auto-complete 
datax.EntireRow.Resize(, 1)  ' auto-complete 
+0

第一和第二將偏移到右側,所以它應該是負輸入。但是我認爲以任何形式得到一個固定的列偏移量是令人困惑的。在我看來,最後的選項是可取的,儘管調整大小的解決方案看起來有點過度。 – arcadeprecinct

+0

謝謝@arcadeprecinct。我在早上發佈它太早,沒有當我想在它們後面自動完成時,我通常使用.Offset和.Resize。 – Slai

相關問題