Rút gọn công thức excel bằng hàm VBA

Liên hệ QC

hongphuong1997

Thành viên tiêu biểu
Tham gia
12/11/17
Bài viết
727
Được thích
293
Giới tính
Nữ
Các Bác và anh chị viết giúp em hàm rút gọn như file đính kèm
Em xin cảm ơn ạ.
 

File đính kèm

  • Rút gọn hàm excell bằng hàm VBA.xlsb
    8.9 KB · Đọc: 15
Anh oi, dùng hàm len() để đếm số chữ số sau đó mới lấy kết quả cơ mà anh.
Anh viết cho em cái hàm với.
Em cảm ơn anh ạ.
Mã:
Function MySum(ByVal LenString As Integer, ParamArray sArr()) As Double
    Dim I As Long, Cll As Range, Total As Double
For I = LBound(sArr) To UBound(sArr)
    If TypeOf sArr(I) Is Range Then
        For Each Cll In sArr(I).Cells
            Total = Total + Cll.Value
        Next Cll
    Else
        Total = Total + sArr(I)
    End If
Next I
If Len(CStr(Total)) > LenString Then MySum = Total
End Function
I13 =MySum(4;I3:I9;K3:K9;M3:M9) Bạn xem thử
 
Upvote 0
Hàm nầy chạy nhanh hơn hàm MySum
Mã:
=IF(SUM(I3:I9,K3:K9,M3:M9)>999,SUM(I3:I9,K3:K9,M3:M9),"bỏ")
Cháu cảm ơn Bác @HieuCD Bác @VetMini anh @PacificPR đã giúp đỡ cháu ạ
Nhưng không phải là hàm như vậy.
Mục đích của cháu là lấy hàm len() đếm số ký tự của hàm bất kỳ nào đó. (Ở đây cháu lấy ví dụ là hàm Sum())
Nếu như dùng hàm Len() thì lại phải lồng thêm hàm if() vào thì nó hơi dài
Vì vậy cháu muốn các Bác viết rút gọn lại giúp cháu với ạ
 

File đính kèm

  • Rút gọn hàm excell bằng hàm VBA.xlsb
    9.1 KB · Đọc: 4
Upvote 0
Mã:
Function MySum(ByVal LenString As Integer, ParamArray sArr()) As Double
    Dim I As Long, Cll As Range, Total As Double
For I = LBound(sArr) To UBound(sArr)
    If TypeOf sArr(I) Is Range Then
        For Each Cll In sArr(I).Cells
            Total = Total + Cll.Value
        Next Cll
    Else
        Total = Total + sArr(I)
    End If
Next I
If Len(CStr(Total)) > LenString Then MySum = Total
End Function
I13 =MySum(4;I3:I9;K3:K9;M3:M9) Bạn xem thử
Anh @PacificPR oi hàm chuẩn quá rùi anh oi.
Có vấn đề này anh điều chỉnh giúp em tý tẹo nhé.
Hiện tại hàm "Nếu không thỏa mãn điều kiện thì nó trả về ="0"
Em muốn "Nếu không thỏa mãn điều kiện thì ="N0"
Em cảm ơn anh ạ.
 
Upvote 0
Thử xem:
PHP:
Function TTong(Rng1 As Range, Rng2 As Range, Rng3 As Range)
Dim WF As Object
Dim Sum1 As Double, Sum2 As Double, Sum3 As Double

Set WF = Application.WorksheetFunction
Sum1 = WF.Sum(Rng1)
Sum2 = WF.Sum(Rng2):           Sum3 = WF.Sum(Rng3)
TTong = Sum1 + Sum2 + Sum3
If TTong <= (10) ^ 3 Then
    TTong = "NO"
End If
End Function
 
Upvote 0
Web KT
Back
Top Bottom