Hàm mảng tư tạo & 1 số ứng dụng của chúng trên trang tính.

Liên hệ QC
Giả dụ ta có bảng dữ liệu như trong hình đính kèm;
Kết quả ta cần sẽ hiện ra trong vùng [A15: D20] với số dòng nhiều hay ít tùy thuộc vô người khách hàng & hàng của người này chứa trong kho đã được chọn.
Các dòng kết quả sẽ hiễn thị khi ta chọn 1 trong 2 ô Validation [C11:C12] do hàm người dùng có nội dung sau:
PHP:
Function DSTH(CSDL As Range, Kho As String, KH As String)
ReDim Arr(1 To CSDL.Rows.Count, 1 To 4)
Dim Cls As Range:                                      Dim W As Integer
Dim Cot As Byte
1
Cot = Switch(Kho = "A", 4, Kho = "B", 5, Kho = "C", 6, Kho = "GPE.COM", 9)
For Each Cls In CSDL(6).Resize(CSDL.Rows.Count)
3    If Cls.Value = KH Then
        If CSDL.Cells(Cls.Row, Cot) > 0 Then
5            W = W + 1:                                  Arr(W, 1) = W
            Arr(W, 2) = Cells(Cls.Row, 2).Value
7            Arr(W, 3) = Cells(Cls.Row, 3).Value
            Arr(W, 4) = Arr(W, 4) + Cells(Cls.Row, Cot).Value
9        End If
    End If
11 Next Cls
DSTH = Arr()
End Function

Ghi chú thêm:
(1) Nếu bạn nào quen với hàm CHOOSE() trong VBA ta có thể xài thay cho câu lệnh ngay dưới số 1 trong hàm tự tạo trên.
(2) Cách xài hàm:
Lấy chuột tô chọn vùng [A15: D20];
Nhập nội dung hàm như trên thanh công thức của hình;
Kết thúc bỡi tổ hợp 3 fím dành cho hàm mảng.
Chúc các bạn vui vẻ & nhiều hạnh phúc!
 

File đính kèm

  • UDF_7.JPG
    UDF_7.JPG
    57.2 KB · Đọc: 19
Upvote 0
GHI THÊM CHÚ THÍCH VÔ KẾT QUẢ HÀM TRẢ VỀ​
Vùng các ô có màu nền xanh nhạt là vùng kết quả trả về của hàm tự tạo;
Ta thấy 2 ô trên cùng là những ghi chú mà ta chủ tâm đưa vô để người dùng biết được những gợi í của hàm

Nội dung hàm như dưới đây:
PHP:
Function DSNV(CSDL As Range, Ten As String)
Dim Rws As Long, J As Long, W As Integer
Dim GPE As String

Rws = CSDL.Rows.Count:                 W = 1
ReDim Arr(1 To Rws, 1 To 2) As String
For J = 1 To Rws
    With CSDL(1).Offset(J)
        If InStr(.Value, Ten) Then
            W = W + 1:                  Arr(W, 1) = .Value
            Arr(W, 2) = .Offset(, 1).Value
        End If
    End With
Next J
If W > 1 Then
    GPE = "Có:" & Space(2) & Ten & " ?"
    Arr(1, 2) = "Trong Danh Sách"
Else
    GPE = "Không Có " & Space(2) & Ten & " Trong Danh Sách."
End If
    Arr(1, 1) = GPE
DSNV = Arr()
End Function
 

File đính kèm

  • UDF_8.JPG
    UDF_8.JPG
    57.7 KB · Đọc: 15
Upvote 0
Web KT
Back
Top Bottom