返回列表 上一主題 發帖

[發問] 如何使用vba計算各列底色加總

[發問] 如何使用vba計算各列底色加總

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

成績單.zip (15.23 KB)
  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

回復 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
複製代碼
學海無涯_不恥下問

TOP

回復 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
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 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

TOP

回復 4# c_c_lai
樓主有說: 3.在J3 顯示I欄的所有計數加總 (答案需要是計9, 不是14)
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

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

真不好意思,是我老眼昏花了!
謝謝指教!

TOP

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

弱女子留

TOP

觀摩及練習
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
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題