Tổng theo màu - Ví dụ về mã VBA

Hàm sau tính toán tổng giá trị của tất cả các ô trong một phạm vi cụ thể có màu cụ thể:

Rất tiếc, không có Hàm SUMIF để tính tổng dựa trên màu ô. Nếu bạn muốn tính tổng theo màu, bạn sẽ cần tạo một hàm trong VBA.
Để sử dụng mã này: Mở Visual Basic Editor (Alt + F11), Chèn mô-đun mới (Chèn> Mô-đun) và sao chép & dán mã mong muốn vào mô-đun.

Hàm tính tổng theo màu

1234567891011121314151617181920 Hàm Color_By_Numbers (Color_Range As Range, Color_Index As Integer) As Double'Dim Color_By_Numbers As DoubleLàm mờ ô'Sẽ xem xét các ô nằm trong phạm vi và nếu'thuộc tính màu bên trong khớp với màu ô được yêu cầu'sau đó nó sẽ tổng hợp'Loop Through rangeCho mỗi ô trong Color_RangeIf (Cell.Interior.ColorIndex = Color_Index) ThìColor_By_Numbers = Color_By_Numbers + Cell.ValueKết thúc nếuÔ tiếp theoChức năng kết thúc

Điều này có hiệu lực là "tổng theo màu" - vì vậy nếu bạn biết bảng màu 56 của Excel và bạn biết ví dụ rằng màu 4 là màu xanh lá cây nhạt thì cuộc gọi sau:

Color_By_Numbers (“A1: P20”, 4)

sẽ tính tổng các giá trị cho tất cả các ô trong phạm vi A1: P20 có màu xanh lục nhạt.

Để giúp việc sử dụng hàm dễ dàng hơn, chương trình con sau đây sẽ tính ra tổng giá trị cho mỗi màu trong số 56 màu của excel. Nó cũng cung cấp cho toàn bộ bảng màu để có thể dễ dàng nhìn thấy số chỉ mục của mỗi màu.

Chương trình con được gọi trên trang tính 1 và xem xét phạm vi

12345678910111213141516171819202122 Private Sub CommandButton1_Click ()'Sẽ xem xét từng màu và tạo ra bảng tóm tắt các giá trị'trên trang tính 1 trong ô A1 trở xuốngDim Current_Color_Number As IntegerDim Color_Total tăng gấp đôiĐối với Current_Color_Number = 1 đến 56Color_Total = Color_By_Numbers (Trang tính ("Trang tính2"). Phạm vi ("a11: aa64"), Số_màu_ Hiện tại)Worksheets ("Sheet1"). Range ("A1"). Offset (Current_Color_Number, 0) = Current_Color_NumberWorksheets ("Sheet1"). Range ("A1"). Offset (Current_Color_Number, 0) .Interior.ColorIndex = Current_Color_NumberIf Color_Total 0 # ThenWorksheets ("Sheet1"). Range ("a1"). Offset (Current_Color_Number, 1) .Value = Color_TotalKết thúc nếuTiếp theo Hiện tại_Color_NumberKết thúc Sub

Để tải xuống tệp XLS, vui lòng nhấp vào đây

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave