Bài viết: Hàm Sum nhiều tính năng

Liên hệ QC

hoangdanh282vn

Nguyễn Cảnh Hoàng Danh
Thành viên danh dự
Tham gia
21/12/07
Bài viết
1,901
Được thích
5,297
Nghề nghiệp
Kinh doanh các mặt hàng văn phòng phẩm
Mình gửi đến các bạn vài hàm Sum tự tạo nhằm đa dạng hóa tính năng cộng của hàm Sum

1 : Cộng các ô có hay không có chứa giá trị lỗi
2 : Cộng các ô có giá trị bằng ("=") với Điều kiện
3 : Cộng các ô có giá trị nhỏ hơn ("<") Điều kiện
4 : Cộng các ô có giá trị lớn hơn (">") Điều kiện
5 : Cộng các ô có hay không có chứa công thức
6 : Cộng các ô có hay không có chứa font chữ in đậm
7 : Cộng các ô có hay không có chứa mầu font chữ
8 : Cộng các ô có chứa mầu font chữ tương tự như ô Điều kiện
9 : Cộng các ô có hay không có chứa mầu nền
10 : Cộng các ô có chứa mầu nền tương tự như ô Điều kiện

f1DQ0tiNYMXUU1MDLc2-wV82kULTy3MiPDxLpzVNQN9f2_Y6zk4Ki12vZywStA89RFgdZHZyZSlruhfgaiaqPDJnjxVYwnVBERrVdeGnse2Qw4vqaXHcT2vamFYX9KkkI8RqfBMLV5-brTv2XyTTSsWUOfOZzlkZkV0DU9mQMmvLpBfR4rVozNDi4S6lhM_NZEiCmlJ8DX0hHRmENma-QnTKAscHNh-JOq6zYut9UD07NErU2zU3Z7U-BgF0M5iOevEWhEyWCAXxHSV9Q8P9mk1jmoXETL-DdiwNE93MJFx10BXN9aZ990cMoTQXjfFzlVtErnm6LysRYB8AEf2W3YaY1N42acrkHQmzKmFSbRYgTeGok_uD0LkU9mU36TwL0azuCJO6eFwX0smLJ10VyQkglNcM6We5tseiS4Vf_8WpI7HpUdgqUodjcBfQov0kn8iJr3MbK_vnAnh5ZHE6EVlefjLWJl98xOnlAWEd06-od3ObA1m1ibgzzeIwInAynDvlVZnXsZCl2Ln2fCutuARa69uAK0OuhOh3N6hqO0YAHWd_ZIs2HFC8HmVO2NqEv7lVXJACWduSjRD4G4tBHeEsAxzq8CBq0V8ALUvy8tJtbNTzIFso=w705-h540-no


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

Một số bài viết có liên quan:
1/ Làm cách nào để ghi chú hiệu quả trong VBA?
2/ Conditional Formatting cho biểu đồ bằng VBA
3/ Khi nào nên sử dụng Msgbox, Inputbox và Userform?
4/ 8 thủ thuật trong VBE bạn nên biết
5/ Kích hoạt macro từ nút bấm ngoài bảng tính
6/ Làm thế nào để thay thế các chữ OK, CANCEL,... nhàm chán của Msgbox
7/ Giới thiệu VBA trong Excel
8/ Viết code để nhìn thấy ai là người cập nhật bảng tính của bạn lần gần đây nhất
9/ 4 cách sử dụng Immediate Window trong VBA hiệu quả hơn
10/ 3 gợi ý nhỏ mang lại thành công trong khai báo biến trong VBA
 

File đính kèm

  • Function SumPower.rar
    20 KB · Đọc: 2
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
mình không hiểu hàm này lắm chủ thớt có thể giải thích hơn được ko
 
mình không hiểu hàm này lắm chủ thớt có thể giải thích hơn được ko

Chào bạn,

Hàm này là hàm VBA, bạn cần chép đoạn code trên vào module trên VBA và xài như một hàm Excel bình thường nhé. Cách sử dụng bạn có thể đọc hướng dẫn.
 
-IsError(Cell) =
-Cell.HasFormula = Source

dấu trừ có ý nghĩa là gì vậy bạn. thanks
 
Bạn có ý tưởng rất hay. Nhưng tôi chưa hiểu lắm các ví dụ của bạn. Bạn có thể ví dụ với từng hàm 1, 2, 3....có 1 ví dụ dùng hàm Sumpower sang bên cạnh được không. Hy vọng tôi có thể áp dụng hàm này vào công việc của mình.Thanks U so much!
 
Hàm này có phần công theo mầu chữ/ màu nền thì bị làm tròn.
Anh sửa lại nhé.-\\/.
 
Web KT

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

Back
Top Bottom