Cộng Số Theo Màu

Liên hệ QC

CATHY

Thành viên chính thức
Tham gia
13/9/07
Bài viết
52
Được thích
8
A. Tuấn giúp em với
Em cần cộng số theo màu xanh riêng màu đỏ riêng trên cùng một hàng trong excel , nhờ Anh chỉ em cách làm , em xin gửi file mẫu đính kèm
Cảm ơn anh trứớc nha !!!
CATHY
 

File đính kèm

  • bai tap.xls
    13.5 KB · Đọc: 494
Bạn xem thử đúng ko nha!
Nhớ thử thêm vài giá trị khác nữa cho chắc
Mến
 

File đính kèm

  • SumColor_Tuan.zip
    6.6 KB · Đọc: 1,116
CATHY đã viết:
A. Tuấn giúp em với
Em cần cộng số theo màu xanh riêng màu đỏ riêng trên cùng một hàng trong excel , nhờ Anh chỉ em cách làm , em xin gửi file mẫu đính kèm
Cảm ơn anh trứớc nha !!!
CATHY
Mình giới thiệu với bạn 2 hàm :
SumMau(Vung;Mau) : Chỉ tính cho 2 màu
PHP:
Function SumMau(Vung As Range, Mau As String) As Double
    Dim OKe As Range
    Dim SumDo, SumXanh As Double
    For Each OKe In Vung
        Select Case OKe.Font.ColorIndex
            Case 3
                SumDo = SumDo + OKe.Value
            Case 5
                SumXanh = SumXanh + OKe.Value
        End Select
    Next
    If UCase(Mau) = "DO" Then
        SumMau = SumDo
    ElseIf UCase(Mau) = "XANH" Then
        SumMau = SumXanh
    End If
    
    Set OKe = Nothing
End Function
Màu đỏ : =summau(A5:K5;"Do")
Màu xanh : =summau(A5:K5;"Xanh")


SumCol(Vung) : Tính cho bất cứ màu nào
PHP:
Function SumCol(Vung As Range) As Double
    Dim OKe As Range
    Dim i As Long
    i = ActiveCell.Font.ColorIndex
    For Each OKe In Vung
        If OKe.Font.ColorIndex = i Then SumCol = SumCol + OKe.Value
    Next
    Set OKe = Nothing
End Function
Khi bạn cần tính màu xanh, chỉ cần bạn cho ô tổng cộng là màu xanh
Các màu khác cũng tương tự

Màu đỏ : =SumCol(A5:K5)
Màu xanh : =SumCol(A5:K5)
Màu đen : =SumCol(A5:K5)
Màu hồng : =SumCol(A5:K5)

Bạn xem File VD nhé

Thân!
 

File đính kèm

  • bai tap-OB.xls
    26 KB · Đọc: 571
Nhận tiện có bạn hỏi về Color Function, tôi gữi file này nhờ Bắp nghiên cứu hộ... Trong file có 2 UDF, ColorBorder dùng đễ cộng và đếm mảu Border,.. và ColorFont dùng đễ cộng và đếm màu Font... Có mấy vẫn để tôi cần hỏi trong file này:
1> Về nguyên tắc 2 UDF này hoàn toàn giống nhau, vậy có cách nào kết hợp 2 thành 1 ko? Chẳng hạn 1 UDF nhưng làm 2 nhiệm vụ.. sẽ cho thêm 1 tham số nữa: 0 và 1... Nếu chọn 0 thì nó là ColorBorder, còn chọn 1 thì nó trở thành ColorFont...
2> Tại sao hàm ko cập nhật ngay lập tức khi màu thay đỗi? VD tôi đỗi màu border hoặc font của 1 cell nào đó trong vùng tính toán của nó thì cell chứa hàm vẫn chưa cập nhật dử liệu mới, tôi phải nháy vào công thức rồi Enter thì thay đỗi mới dc cập nhật
Vậy nhờ Bắp nghiên cứu giùm 2 câu hỏi tôi nêu ở trên!... Nếu dc thì tôi sẽ làm nó thành xla luôn cho tiện việc sử dụng
ANH TUẤN
 

File đính kèm

  • ColorSum&Count.zip
    7.5 KB · Đọc: 278
anhtuan1066 đã viết:
Nhận tiện có bạn hỏi về Color Function, tôi gữi file này nhờ Bắp nghiên cứu hộ... Trong file có 2 UDF, ColorBorder dùng đễ cộng và đếm mảu Border,.. và ColorFont dùng đễ cộng và đếm màu Font... Có mấy vẫn để tôi cần hỏi trong file này:
1> Về nguyên tắc 2 UDF này hoàn toàn giống nhau, vậy có cách nào kết hợp 2 thành 1 ko? Chẳng hạn 1 UDF nhưng làm 2 nhiệm vụ.. sẽ cho thêm 1 tham số nữa: 0 và 1... Nếu chọn 0 thì nó là ColorBorder, còn chọn 1 thì nó trở thành ColorFont...
ANH TUẤN

Em gửi bác hàm OB này, nó không chọn tham số là 0,1 mà chọn tham số FO & BO (Font & Bold)

PHP:
Function OB(TC As Range, Vung As Range, Ham As String) As Double
    Dim F, B, i1, i2 As Long
    Dim OKe As Range
    i1 = TC.Font.ColorIndex
    i2 = TC.Interior.ColorIndex
    Select Case UCase(Ham)
    Case "FO"
        For Each OKe In Vung
            If OKe.Font.ColorIndex = i1 Then OB = OB + OKe.Value
        Next
    Case "BO"
        For Each OKe In Vung
            If OKe.Interior.ColorIndex = i2 Then OB = OB + 1
        Next
    Case Else
        OB = 0
    End Select
    Set OKe = Nothing
End Function



anhtuan1066 đã viết:
2> Tại sao hàm ko cập nhật ngay lập tức khi màu thay đỗi? VD tôi đỗi màu border hoặc font của 1 cell nào đó trong vùng tính toán của nó thì cell chứa hàm vẫn chưa cập nhật dử liệu mới, tôi phải nháy vào công thức rồi Enter thì thay đỗi mới dc cập nhật
ANH TUẤN

Thực ra tất cả các hàm số trong Excel (theo em biết) đều lấy sự kiện Sheet_Change hoặc Enter làm căn cứ để ReCalculate.
Tuy nhiên khi ta thay đổi màu sắc thì lại không thuộc sự kiện này, nên nó không tính lại.

Thân!
 

File đính kèm

  • ColorSum&Count-OB.xls
    31 KB · Đọc: 241
Cám ơn Bắp đã có hàm rất hay.. nhưng hình như Bắp chưa hiểu ý tôi thì phải... Bạn đễ ý xem file cùa tôi nhé, tham số cuối cùng là TRUE hoặc FALSE... Nếu chọn TRUE thì hàm trở thành SUM, và chọn FALSE thì hàm trở thành COUNT... Còn cái của Bắp hình như chọn "FO" thì là SUM, "Bo" thì COUNT...
Thật ra ý tôi là vầy nè: (Tôi nói theo hàm của Bắp nhé), nếu đúng ý tôi thì phải có thêm 1 tham số nữa:
=OB(L4,A5:K5,TRUE,"Fo") là SUM các cell có cùng font color với L4
=OB(L4,A5:K5,TRUE,"Bo") là SUM các cell có cùng border color với L4
=OB(L4,A5:K5,FALSE,"Fo") là COUNT các cell có cùng font color với L4
=OB(L4,A5:K5,FALSE,"Bo") là COUNT các cell có cùng fborder color với L4
Bạn hiểu tôi nói ko? Trong file tôi có 2 hàm UDF, 1 cái liên quan đến Font, 1 cái liên quan đến Border... nhưng mỗi hàm đều có 2 chức năng là SUM và COUNT... Giờ tôi muốn kết hợp 2 hàm ấy lại với nhau thành 1... nên làm gì thì làm tôi nghĩ chúng phải có ít nhất 4 tham số...
Bắp nghiên cứu giùm đi nha!
Mến
ANH TUẤN
 
Bac Tuan ơi cái bác up lên công thức em sử dụng trang newbook sao ko được hả bác? em cũng đang cần cái cộng theo mầu đó, bác giúp em! cảm ơn bác nhiều, chúc bác cuối tuần vui.
 
anhtuan1066 đã viết:
Cám ơn Bắp đã có hàm rất hay.. nhưng hình như Bắp chưa hiểu ý tôi thì phải... Bạn đễ ý xem file cùa tôi nhé, tham số cuối cùng là TRUE hoặc FALSE... Nếu chọn TRUE thì hàm trở thành SUM, và chọn FALSE thì hàm trở thành COUNT... Còn cái của Bắp hình như chọn "FO" thì là SUM, "Bo" thì COUNT...
Thật ra ý tôi là vầy nè: (Tôi nói theo hàm của Bắp nhé), nếu đúng ý tôi thì phải có thêm 1 tham số nữa:
=OB(L4,A5:K5,TRUE,"Fo") là SUM các cell có cùng font color với L4
=OB(L4,A5:K5,TRUE,"Bo") là SUM các cell có cùng border color với L4
=OB(L4,A5:K5,FALSE,"Fo") là COUNT các cell có cùng font color với L4
=OB(L4,A5:K5,FALSE,"Bo") là COUNT các cell có cùng fborder color với L4
Bạn hiểu tôi nói ko? Trong file tôi có 2 hàm UDF, 1 cái liên quan đến Font, 1 cái liên quan đến Border... nhưng mỗi hàm đều có 2 chức năng là SUM và COUNT... Giờ tôi muốn kết hợp 2 hàm ấy lại với nhau thành 1... nên làm gì thì làm tôi nghĩ chúng phải có ít nhất 4 tham số...
Bắp nghiên cứu giùm đi nha!
Mến
ANH TUẤN
Bác xem qua nhé :
PHP:
Option Explicit
Function OB(TC As Range, Vung As Range, Ham As String, Choo As String) As Double
    Dim F, B, i1, i2 As Long
    Dim OKe As Range
    i1 = TC.Font.ColorIndex
    i2 = TC.Interior.ColorIndex
    
    If UCase(Ham) = "SU" And UCase(Choo) = "FO" Then
        For Each OKe In Vung
            If OKe.Font.ColorIndex = i1 Then OB = OB + OKe.Value
        Next
    ElseIf UCase(Ham) = "CO" And UCase(Choo) = "FO" Then
        For Each OKe In Vung
            If OKe.Font.ColorIndex = i1 Then OB = OB + 1
        Next
    ElseIf UCase(Ham) = "SU" And UCase(Choo) = "PA" Then
        For Each OKe In Vung
            If OKe.Interior.ColorIndex = i2 Then OB = OB + OKe.Value
        Next
    ElseIf UCase(Ham) = "CO" And UCase(Choo) = "PA" Then
        For Each OKe In Vung
            If OKe.Interior.ColorIndex = i2 Then OB = OB + 1
        Next
    Else
        OB = 0
    End If
    Set OKe = Nothing
End Function

SU : Sum
CO : Count
FO : Font
PA : Patterns

(các chỉ số không phân biệt viết thường - hoa)
Thân!
 

File đính kèm

  • ColorSum&Count-OB2.xls
    33 KB · Đọc: 273
Với Bắp: Nhanh thật, chưa đầy 15p đã hoàn tất... Cám ơn Bắp... Cái này là đúng ý tôi nhất đây!
Hỏi ngoài lề 1 tí: Mấy tham số như: SU, CO, FO thì tôi còn đoán dc nó là gi.. còn PA thì chả đoán dc là quái gì cả... hi.. hi.. Có thể "diển nôm" dc ko? Vì đôi khi biết dc ý nghĩa của tên các tham số mình cũng sẽ dễ nhớ và dễ sử dụng hơn!
Mến
ANH TUẤN
 
anhtuan1066 đã viết:
Với Bắp: Nhanh thật, chưa đầy 15p đã hoàn tất... Cám ơn Bắp... Cái này là đúng ý tôi nhất đây!
Hỏi ngoài lề 1 tí: Mấy tham số như: SU, CO, FO thì tôi còn đoán dc nó là gi.. còn PA thì chả đoán dc là quái gì cả... hi.. hi.. Có thể "diển nôm" dc ko? Vì đôi khi biết dc ý nghĩa của tên các tham số mình cũng sẽ dễ nhớ và dễ sử dụng hơn!
Mến
ANH TUẤN
Bác này, trêu em :

SU : Sum
CO : Count
FO : Font
PA : Patterns : Màu nền

Thân!
 
Mr Okebab đã viết:
Mình giới thiệu với bạn 2 hàm :
SumMau(Vung;Mau) : Chỉ tính cho 2 màu
PHP:
Function SumMau(Vung As Range, Mau As String) As Double
    Dim OKe As Range
    Dim SumDo, SumXanh As Double
    For Each OKe In Vung
        Select Case OKe.Font.ColorIndex
            Case 3
                SumDo = SumDo + OKe.Value
            Case 5
                SumXanh = SumXanh + OKe.Value
        End Select
    Next
    If UCase(Mau) = "DO" Then
        SumMau = SumDo
    ElseIf UCase(Mau) = "XANH" Then
        SumMau = SumXanh
    End If
    
    Set OKe = Nothing
End Function
Màu đỏ : =summau(A5:K5;"Do")
Màu xanh : =summau(A5:K5;"Xanh")


SumCol(Vung) : Tính cho bất cứ màu nào
PHP:
Function SumCol(Vung As Range) As Double
    Dim OKe As Range
    Dim i As Long
    i = ActiveCell.Font.ColorIndex
    For Each OKe In Vung
        If OKe.Font.ColorIndex = i Then SumCol = SumCol + OKe.Value
    Next
    Set OKe = Nothing
End Function
Khi bạn cần tính màu xanh, chỉ cần bạn cho ô tổng cộng là màu xanh
Các màu khác cũng tương tự

Màu đỏ : =SumCol(A5:K5)
Màu xanh : =SumCol(A5:K5)
Màu đen : =SumCol(A5:K5)
Màu hồng : =SumCol(A5:K5)

Bạn xem File VD nhé

Thân!

Cảm ơn bạn , cách làm của ban rất hay nhưng mình không hiểu mã lệnh trên(MÌNH HƠI BỊ " KÉM") , cách làm như thế nào bạn có thể chỉ cho mình được ko

CATHY
 
CATHY đã viết:
Cảm ơn bạn , cách làm của ban rất hay nhưng mình không hiểu mã lệnh trên(MÌNH HƠI BỊ " KÉM") , cách làm như thế nào bạn có thể chỉ cho mình được ko
CATHY
Bạn xem kỹ lại bài viết + file ví dụ cụ thể, bạn sẽ hiểu được mà. Mr.Hiếu đã hướng dẫn quá chi tiết rồi, nếu thắc mắc chỗ nào thì hỏi ngay chỗ ấy.

TDN
 
Với Cathy: Với hàm UDF thì hiểu dc cũng tốt, còn ko thì cũng đâu có sao? Bạn cứ tưởng tượng mấy hàm của Microsoft tạo ra, có mấy ai biết dc code nó thế nào đâu, nhưng vẫn biết cách sử dụng đấy thôi...
Vậy nên, bạn muốn sử dụng lâu dài những UDF này thì cứ Save as nó thành file .XLA vào trong thư mục Add-Ins... nhưng vậy bất cứ khi nào mở Workbook lên bạn cũng có thể dùng nó.. Vì khi ấy nó đã nằm trong danh sách hàm rồi...
Một cái tiện lợi nữa thì ko phải Enable macro...
Bạn hiểu ko?
Có gì ko hiểu.. cứ hỏi tiếp.. hi... hi... (vì thật ra cũng ko biết bạn hiểu tới đâu)
ANH TUẤN
 
anhtuan1066 đã viết:
Bạn xem thử đúng ko nha!
Nhớ thử thêm vài giá trị khác nữa cho chắc
Mến
Anh Tuấn ơi sao em làm thử trong file anh gửi thì được nhưng khi em làm trong một file mới thì nó cứ bảo là " #NAME? " ko à ? anh còn " bí kíp " nào nữa ko ?
(em gõ đúng như công thức của anh không sai 1 tí nào)
CATHY
 
Do hàm này là hàm tự tạo... Nên nếu bạn muốn sang file mới nó vẫn chạy dc thì có 2 cách:
1> Bạn vào file củ, bấm Alt + F11, copy code trong file này... sang file mới, cũng Alt + F11 paste code mà bạn vừa copy vào.. như vậy nó mới ko báo lỗi
2> Bạn save file của tôi thành file .XLA... lưu vào thư mục AddIns (hay thư mục nào đó tùy bạn... Mở file mới lên, vào menu tools\Add-Ins.. bấm nút Browse duyệt tới file .XLA mà bạn vừa lưu, OK... Ra bảng tính là có thể sử dụng hàm dc rồi
Lưu ý cách 2 chỉ cần làm 1 lần là có thể áp dụng cho toàn bộ file trên máy tính của bạn
Mến
ANH TUÂN
 
Bác Tuấn ơi em dùng office 2007 vào xem copy code trong file của bác nhưng ko có, hoặc lưu theo cách Bác hướng dẫn em chưa biết lưu vì nó là office 2007 em chưa sd hết, bác hướng dẫn em với nhé!
Cảm ơn bác nhiều
 
Có mà... nó nằm trong Module ấy.. Nếu vẫn ko dc thì tôi làm sẳn add in cho bạn luôn ne... Và làm theo các bước sau nha:
1> Đầu tiên bạn tải file xla của tôi về, (nhớ giải nén ra nhé).. rổi mang nó bỏ vào thư mục này đây:
C:\Documents and Settings\User Profile\Application Data\Microsoft\AddIns
Với User Profile chính là tên mà bạn đăng nhập vào máy tính ấy (mỗi máy sẽ khác nhau)..
2> Mở Excel lên, vào menu Tools\Add-Ins.. bấm nút Browse, duyệt đến thư mục ở trên, chọn vào file xla vừa bỏ vào, OK 2 lần..
Vậy là máy tính của bạn đã tích hợp thêm hàm SUM và COUNT COLOR rồi đây
3> Đễ gọi hàm thì bấm vào menu Insert\Function... chọn vào mục Or select a Category, bạn sẽ thấy có mục User Define nằm dưới cùng... Chọn mục này, sẽ thấy xuất hiện tiếp tục 2 hàm... ColorBorder và ColorFont.. bạn xài cái nào thì bấm vào cái ấy.. Cú pháp cả 2 giống nhau hoàn toàn

Lưu ý...
a> Bước 1 bạn có thể lưu file ờ đâu tùy ý chứ ko nhất thiết là đúng thư mục như tôi vừa nói... có điều lưu ở đâu thì nhớ đễ vào bước 2 duyệt đến cho đúng thư mục này...
b> Ở bước 2, nếu bạn sử dụng Excel2007 thì có lẽ tìm mục Add-Ins hơi bị căng (tôi cũng ko biết tìm thế nào là nhanh nhất) tuy nhiên gợi ý với bạn 1 cách tìm như sau:
Click phải chuột trên thanh Ribbon, chọn Customize Quick Access Toolbar.. trong khung Choose Command From, bạn bấm mũi tên xổ xuống và chọn All Commands.. kéo thanh trượt phía dưới tìm mục Add-ins, chọn vào nó và bấm nút Add ở giữa, OK.. Sau khi làm xong thao tác này, bạn nhìn bên trái phía trên sẽ thấy biểu tượng màu xanh lá, rà chuột vào nó hiện ra chử Add-In... Bấm vào mục này đễ thực hiện bước 2 như tôi nói ở trên (vì tôi đang hướng dẩn dựa trên bộ Excel2002)
c> Bước 3 có thể thao tác nhanh bằng cách bấm vào chử F(x) ngay thanh công thức
Chúc thành công... Ko hiểu lại hỏi tiếp... xin cứ tự nhiên
ANH TUẤN
 

File đính kèm

  • ColorSum&Count.zip
    8.4 KB · Đọc: 238
Các bác ơi, em cũng muốn xem nhưng khi tải về mở ra, máy báo contains macros, macros may contain virus. Vậy là em không dám mở nữa luôn. Làm sao xem được file này bây giờ các bác nhỉ!
 
lolem822000 đã viết:
Các bác ơi, em cũng muốn xem nhưng khi tải về mở ra, máy báo contains macros, macros may contain virus. Vậy là em không dám mở nữa luôn. Làm sao xem được file này bây giờ các bác nhỉ!
Bạn làm thế là hoàn toàn đúng... Cái nào ko dám chắc thì đừng mở... Phải hỏi lại tác giả cho chắc... hi... hi... Nếu tác giả khẳng định rằng file ko có virus thì bạn cứ vô tư "Enable macro" và chạy thôi...
ANH TUẤN
 
Bác anhtuan1066 ơi
em vẫn chưa làm được
em đã copy file rồi nhưng khi vào Menu Tools\Addins, bấm Browse thì file không hiện thị
Bác giúp em với
 
Web KT
Back
Top Bottom