Tính tổng các ô có màu trong một bảng tính.

  • Thread starter Thread starter dai.long
  • Ngày gửi Ngày gửi
Liên hệ QC

dai.long

Thành viên mới
Tham gia
21/7/11
Bài viết
20
Được thích
0
Có nghĩa là trong một bảng tính có những ô được đính mầu.và em chỉ muốn tính tổng những ô có mầu đấy thôi.Bác nào giúp em với
 
Có nghĩa là trong một bảng tính có những ô được đính mầu.và em chỉ muốn tính tổng những ô có mầu đấy thôi.Bác nào giúp em với
Chỉ có cách lập trình bằng VBA hoặc dùng hàm macro 4 với 1 cột phụ
Nếu đồng ý thì đưa file lên đây. Còn không thì search tìm trên diễn đàn. Dạng bài này cũng có khá nhiều
 
Mong bác chỉ giúp em tường tận.Em gà về excel lắm ợ**~**
 

File đính kèm

Mong bác chỉ giúp em tường tận.Em gà về excel lắm ợ**~**
Màu cell trong file không phải bạn tự tô mà do Conditional Formating điều khiển (tô màu có điều kiện). Vậy không có phương pháp chung nào để làm đâu
Có chăng là xem Conditional Formating đang dùng điều kiện gì để tô màu, từ đó ta gán vào SUMIF
Chẳng hạn, trong file bạn, nếu:
- cột A = 1 thì cột B tô màu xanh
- Cột A = 2 thì cột B tô
màu cam
Vậy:
- Để tính tổng cột B theo màu xanh, ta dùng công thức: =SUMIF($A$1:$A$10,1,$B$1:$B$10)
- Để tính tổng cột B theo màu cam, ta dùng công thức: =SUMIF($A$1:$A$10,2,$B$1:$B$10)
 
Anh ndu nếu như mình muốn tính tổng những ô có màu thì phải làm sao, em biết có phương thức như thế này mà không biết làm
Selection.Interior.Pattern = xlNone
có nghĩa là những ô nào không tô màu thì tính tổng? anh có thể viết cho em đoạn code đó được không, cảm ơn anh nhiều
 
trong VD của em là em dung CF.Nếu không dùng CF thì mình có cách tính nào không ạ?Có nghĩa là mình dùng tay để tích mầu ấy ạ
 
trong VD của em là em dung CF.Nếu không dùng CF thì mình có cách tính nào không ạ?Có nghĩa là mình dùng tay để tích mầu ấy ạ
Căn cứ dữ liệu file bạn đưa thì Bác ndu không sử dụng tính tổng theo màu mà dự vào dữ liệu của cột A. Còn bạn muốn tính theo màu thì phải dùng VBA
 
Anh ndu nếu như mình muốn tính tổng những ô có màu thì phải làm sao, em biết có phương thức như thế này mà không biết làm
Selection.Interior.Pattern = xlNone
có nghĩa là những ô nào không tô màu thì tính tổng? anh có thể viết cho em đoạn code đó được không, cảm ơn anh nhiều
Anh tham khảo hàm Sumpower này nha :
PHP:
Public Function SumPower(TypeFunc As Byte, Source As Variant, _ 
              ParamArray AllRange() As Variant) As Double 
Dim Rng As Variant, Cell As Range, SumT As Double 
Application.Volatile 
With WorksheetFunction 
Select Case TypeFunc 
Case 1 'Cong các ô có hay không có chua Giá Tri Loi' 
    For Each Rng In AllRange() 
        For Each Cell In Union(Rng.SpecialCells(2, 19), Rng.SpecialCells(-4123, 19)) 
        If -IsError(Cell) = Source Then SumT = .Sum(SumT, Cell) 
        Next 
    Next 
    GoTo Finish 
Case 2 'Cong các ô có Giá Tri bang gia tri nguon "Source"' 
    For Each Rng In AllRange() 
        For Each Cell In Union(Rng.SpecialCells(2, 19), Rng.SpecialCells(-4123, 19)) 
            If Not IsError(Cell) Then 
                If Val(Cell) = Source Then 
                    SumT = .Sum(SumT, Val(Cell)) 
                End If 
            End If 
        Next 
    Next 
    GoTo Finish 
Case 3 'Cong các ô có Giá Tri nho hon gia tri nguon "Source"' 
    For Each Rng In AllRange() 
        For Each Cell In Union(Rng.SpecialCells(2, 19), Rng.SpecialCells(-4123, 19)) 
            If Not IsError(Cell) Then 
                If Val(Cell) < Source Then 
                    SumT = .Sum(SumT, Val(Cell)) 
                End If 
            End If 
        Next 
    Next 
    GoTo Finish 
Case 4 'Cong các ô có Giá Tri lon hon gia tri nguon "Source"' 
    For Each Rng In AllRange() 
        For Each Cell In Union(Rng.SpecialCells(2, 19), Rng.SpecialCells(-4123, 19)) 
            If Not IsError(Cell) Then 
                If Val(Cell) > Source Then 
                    SumT = .Sum(SumT, Val(Cell)) 
                End If 
            End If 
        Next 
    Next 
    GoTo Finish 
Case 5 'Cong các ô có hay không có chua Công Thuc' 
    For Each Rng In AllRange() 
        For Each Cell In Union(Rng.SpecialCells(2, 19), Rng.SpecialCells(-4123, 19)) 
            If Not IsError(Cell) Then 
                If -Cell.HasFormula = Source Then 
                    SumT = .Sum(SumT, Val(Cell)) 
                End If 
            End If 
        Next 
    Next 
    GoTo Finish 
Case 6 'Cong các ô có hay không có chua Font Chu In Dam' 
    For Each Rng In AllRange() 
       For Each Cell In Union(Rng.SpecialCells(2, 19), Rng.SpecialCells(-4123, 19)) 
            If Not IsError(Cell) Then 
                If -Cell.Font.Bold = Source Then 
                    SumT = .Sum(SumT, Val(Cell)) 
                End If 
            End If 
        Next 
    Next 
    GoTo Finish 
Case 7 'Cong các ô có hay không có chua Mau Font Chu' 
    For Each Rng In AllRange() 
        For Each Cell In Union(Rng.SpecialCells(2, 19), Rng.SpecialCells(-4123, 19)) 
            If Not IsError(Cell) Then 
                If -(Cell.Font.ColorIndex > 0) = Source Then 
                    SumT = .Sum(SumT, Val(Cell)) 
                End If 
            End If 
        Next 
    Next 
    GoTo Finish 
Case 8 'Cong các ô có chua Mau Font Chu tuong tu nhu ô goc "Source"' 
    For Each Rng In AllRange() 
        For Each Cell In Union(Rng.SpecialCells(2, 19), Rng.SpecialCells(-4123, 19)) 
            If Not IsError(Cell) Then 
                If Cell.Font.ColorIndex = Source.Font.ColorIndex Then 
                    SumT = .Sum(SumT, Val(Cell)) 
                End If 
            End If 
        Next 
    Next 
    GoTo Finish 
Case 9 'Cong các ô có hay không có chua Mau Nen' 
    For Each Rng In AllRange() 
        For Each Cell In Union(Rng.SpecialCells(2, 19), Rng.SpecialCells(-4123, 19)) 
            If Not IsError(Cell) Then 
                If -(Cell.Interior.ColorIndex > 0) = Source Then 
                    SumT = .Sum(SumT, Val(Cell)) 
                End If 
            End If 
        Next 
    Next 
    GoTo Finish 
Case 10 'Cong các ô có chua Mau Nen tuong tu nhu ô goc "Source"' 
    For Each Rng In AllRange() 
        For Each Cell In Union(Rng.SpecialCells(2, 19), Rng.SpecialCells(-4123, 19)) 
            If Not IsError(Cell) Then 
                If Cell.Interior.ColorIndex = Source.Interior.ColorIndex Then 
                    SumT = .Sum(SumT, Val(Cell)) 
                End If 
            End If 
        Next 
    Next 
End Select 
End With 
Finish: SumPower = SumT 
End Function
http://www.giaiphapexcel.com/forum/showthread.php?14706-Hàm-Sum-nhiều-tính-năng
 
Anh ndu nếu như mình muốn tính tổng những ô có màu thì phải làm sao, em biết có phương thức như thế này mà không biết làm
Selection.Interior.Pattern = xlNone
có nghĩa là những ô nào không tô màu thì tính tổng? anh có thể viết cho em đoạn code đó được không, cảm ơn anh nhiều
Không phải là Selection.Interior.Pattern = xlNone mà là Selection.Interior.ColorIndex = xlNone
 
vâng!đúng rồi.thế lên em mới hỏi là nếu không dựa vào cột A thì chỉ là dùng tay để tích mầu thì có cách nào để tính tổng các ô có mầu mà không cần dùng đến CF ko ấy ạ?-0-/.
 
vâng!đúng rồi.thế lên em mới hỏi là nếu không dựa vào cột A thì chỉ là dùng tay để tích mầu thì có cách nào để tính tổng các ô có mầu mà không cần dùng đến CF ko ấy ạ?-0-/.
Bạn có thể dùng hàm tự tạo
PHP:
Function TongMau(ByVal Rng As Range) As Variant
Application.Volatile
Dim Cls As Range
Dim Tam As Variant
For Each Cls In Rng  
  If Cls.Interior.ColorIndex <> -4142 Then     
   Tam = Tam + Cls.Value  
  End If
Next
   TongMau = Tam
End Function
Bạn có thể thay
PHP:
   If Cls.Interior.ColorIndex <> -4142 Then
Thành
PHP:
  If Not Cls.Interior.ColorIndex = xlNone Then
Xin hỏi các anh chị: tôi có dùng Application.Volatile nhưng sao khi đổi màu hàm không cập nhật giá trị? Xin cảm ơn các anh chị
 
Lần chỉnh sửa cuối:
Xin hỏi các anh chị: tôi có dùng Application.Volatile nhưng sao khi đổi màu hàm không cập nhật giá trị? Xin cảm ơn các anh chị
Vì Excel không xem việc tô màu là 1 sự kiện, tuy nhiên nếu đã có dòng Application.Volatile ở đầu code thì có thể bấm F9 để hàm cập nhật kết quả
 
Cảm ơn viethoai nhiều, nhưng có trường hợp này, trên cột A có những ô có màu và những ô không có màu, thì mình có thể trích loc ra những ô có màu được không
 
Cảm ơn viethoai nhiều, nhưng có trường hợp này, trên cột A có những ô có màu và những ô không có màu, thì mình có thể trích loc ra những ô có màu được không
Nếu là TRÍCH LỌC thì trong Excel 2007 trở lên có Filter by Color rồi, cần gì đến code
 
Cảm ơn viethoai nhiều, nhưng có trường hợp này, trên cột A có những ô có màu và những ô không có màu, thì mình có thể trích loc ra những ô có màu được không
Không hiểu bạn muốn lấy dữ liệu hay địa chỉ. Mình lấy giá trị thì bạn xem file
 

File đính kèm

Lần chỉnh sửa cuối:
Vì Excel không xem việc tô màu là 1 sự kiện, tuy nhiên nếu đã có dòng Application.Volatile ở đầu code thì có thể bấm F9 để hàm cập nhật kết quả
Sư Phụ cho em hỏi vì sao tô màu theo CF code trên của em không nhận được màu?
Vậy muốn nhận được màu theo CF thì làm như thế nào?
Và em không dùng Application.Volatile nếu nhấn F9 hàm vẫn cập nhật mà ?
Em cảm ơn
 
Lần chỉnh sửa cuối:
Sư Phụ cho em hỏi vì sao tô màu theo CF code trên của em không nhận được màu?
Vậy muốn nhận được màu theo CF thì làm như thế nào? Em cảm ơn
Có thể tưởng tượng màu của CF như là vật thể bị ánh đèn màu chiếu vào, không phải màu thật của vật thể
Để biết được màu hiện hành do CF tạo ra, buộc phải truy cập vào Conditional Formating xem nó đang dùng điều kiện gì, hiện tại cell đang thỏa mản điều kiện gì và màu nó sẽ tô là màu gì... vân vân...
Tóm lại: Vô cùng khó khăn.
Vì vậy, thay vì truy tìm HẬU QUẢ ta nên tìm NGUYÊN NHÂN. Tức lấy điều kiện đã ghi trong CF ra làm điều kiện tìm kiếm (thay vì tìm theo màu)
 
Xin hỏi trong trường hợp này nếu ta count theo màu thì như thế nào ạ ?
 
Web KT

Bài viết mới nhất

Back
Top Bottom