Board logo

標題: [發問] 如何使用vba計算各列底色加總 [打印本頁]

作者: sax868    時間: 2013-9-24 21:28     標題: 如何使用vba計算各列底色加總

本帖最後由 sax868 於 2013-9-24 21:32 編輯

[attach]16158[/attach][attach]16157[/attach]
  1. Sub YY()


  2. [J3] = 0

  3. For Each A In [A:G]

  4.   If A.Interior.ColorIndex = 6 Then   'If A.Font.ColorIndex = 6 Then


  5.      [J3] = [J3] + 1

  6.   End If

  7. Next

  8. End Sub
複製代碼
各位大大晚安!

請問要如何編寫vba使計算各列底色加總呢? 我的三腳貓功夫只會全部加而且跑很慢(快當了)但如果要每一列只要有出現黃底色不論次數即為1,我就不會了...能否煩請好心善良的大大們解救弱女子?
需求詳見如下:
1.計算C欄到G欄只要是出現黃色底色則在I欄顯示"1"
2.I欄的計算直到B欄位為空白為止
3.在J3 顯示I欄的所有計數加總 (答案需要是計9, 不是14)


感激不盡~

弱女子留:P
作者: Hsieh    時間: 2013-9-24 23:05

回復 1# sax868
  1. Sub ex()
  2. r = 3
  3. Do Until Cells(r, 3) = ""
  4.    For Each a In Cells(r, 3).Resize(, 5)
  5.       If a.Interior.ColorIndex = 6 Then Cells(r, "I") = 1: cnt = cnt + 1: Exit For
  6.    Next
  7.    r = r + 1
  8. Loop
  9. [J3] = cnt
  10. End Sub
複製代碼

作者: GBKEE    時間: 2013-9-25 07:19

回復 1# sax868
  1. FindFormat 屬性  設定或傳回要尋找之儲存格格式類型的搜尋準則。
複製代碼
  1. Sub Ex()
  2.     Dim E As Range, Cnt As Integer
  3.     Application.FindFormat.Clear
  4.     Application.FindFormat.Interior.ColorIndex = 6
  5.     With ActiveSheet
  6.         For Each E In .Range("C3", .Range("G3").End(xlDown)).Rows
  7.             If Not E.Find("", SearchFormat:=True) Is Nothing Then
  8.                 .Cells(E.Row, "I") = 1
  9.                 Cnt = Cnt + 1
  10.             End If
  11.         Next
  12.         .Range("J3") = Cnt
  13.     End With
  14.     Application.FindFormat.Clear
  15. End Sub
複製代碼

作者: c_c_lai    時間: 2013-9-25 07:25

回復 1# sax868
套用  Hsieh 版大的程式碼,稍稍修改如下:
  1. Sub ex()
  2.     Dim n As Long, cnt As Long
  3.    
  4.     r = 3
  5.     Do Until Cells(r, 3) = ""
  6.         For Each a In Cells(r, 3).Resize(, 5)
  7.             If a.Interior.ColorIndex = 6 Then Cells(r, "I") = 1: cnt = cnt + 1
  8.         Next
  9.         r = r + 1
  10.     Loop
  11.     [J3] = cnt
  12. End Sub
複製代碼
答案: [J3] = 14
作者: GBKEE    時間: 2013-9-25 07:49

回復 4# c_c_lai
樓主有說: 3.在J3 顯示I欄的所有計數加總 (答案需要是計9, 不是14)
作者: c_c_lai    時間: 2013-9-25 08:15

回復  c_c_lai
樓主有說: 3.在J3 顯示I欄的所有計數加總 (答案需要是計9, 不是14)
GBKEE 發表於 2013-9-25 07:49

真不好意思,是我老眼昏花了!
謝謝指教!
作者: sax868    時間: 2013-9-25 10:43

復活了、復活了!! 感謝超級版主們的鼎力相助!! 好好用喔~~~
祝各位大大們有個美好的一天! ^_^~

弱女子留
作者: ML089    時間: 2013-9-25 21:48

觀摩及練習
Sub Ex5()
    Range([G3], [G3].End(xlDown)).Offset(, 2).Resize(, 2).ClearContents
    For Each E In Range([C3], [G3].End(xlDown))
        If E.Interior.ColorIndex = 6 Then Cells(E.Row, "I") = 1
    Next
    [J3] = Application.Sum([I:I])
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)