Có thể tự động thay đổi Criteria trong các hàm D(Dmax, Dsum..) ?

  • Thread starter Thread starter WhoamI
  • Ngày gửi Ngày gửi
Liên hệ QC

WhoamI

Thành viên hoạt động
Thành viên danh dự
Tham gia
2/6/06
Bài viết
130
Được thích
200
Em có công thức : =Dmax(CSDL,"NGAY",$A$1:A2)
A1: là tên trường cần thỏa mãn điều kiện, A2: giá trị cần thỏa mãn (không cố định là một giá trị cụ thể nào đó, mà sẽ thay đổi khi em kéo công thức áp dụng cho các dòng khác, lúc đó Criteria sẽ thay đổi theo yêu cầu của dòng đó)
VD ở dòng 6 thì A2 nhận giá trị ở ô B6, dòng 7 thì A2 nhận giá trị ở ô B7
Em có đọc help nhưng không thấy đề cập trường hợp nào như thế, vậy có cách nào không ah? nhờ các bác chỉ giúp ! :;
 
Dùng Combobox để thay đổi Criteria

Như file nhỏ đính kèm, không biết trúng í bạn không!? Cho biết í kiến!
 

File đính kèm

HYen đã viết:
Như file nhỏ đính kèm, không biết trúng í bạn không!? Cho biết í kiến!
Em xem file của bác rồi, vẫn không phải là giải pháp mà em cần. Mai em sẽ up lại file cho rõ ý hơn, các bác lại giúp em với nhé!
Ah, mà đó đâu phải combobox mà là Drop Down đúng không ah?, hiii, mới đầu thấy lạ quá, em click chuột phải vào Format Control / Control thì mới hiểu ra.
 
Có lẽ cái macro bạn cần để gán trị thay đổi tại A2 là vầy:
Sub NhapA2()
Sheets("DLieu").Range("A2").Value = Sheets("DLieu").Range("B" & CStr(5 + Range("F4").Value))
End Sub
* Ở đây F4 là CellLink của Drop Down; Mà Input Range : $B$6:$B$99
 
Xin cải biên hàm của bạn một tẹo:

Function DCSDL(DLieu As Range, LooKupValue As Range, Criteria As Range, Optional Loai As String)
. . . .
End Function
Bạn có thể nhập vô biến Loai là 1 ô & nhờ 1 Combobox điều khiển để ô này nhận lần lượt các chữ cái "A", "C", "D", "T". . . mà hàm cần!
Mã:
[B]Function D_Database(DLieu As Range, LooKupValue As Range, Criteria As Range, Loai)[/B] 
Dim Temp As  Variant:                                                                                       Dim Chu As Variant
 
 If TypeOf Loai Is Range Then
        Temp = Loai.Value
 ElseIf TypeOf Application.Caller Is Range Then
        Temp = Left(Right(Application.Caller.FormulaArray, 3), 1)
  End If
    Select Case UCase$(Temp)
    Case "A"
        D_Database = Application.DAverage(DLieu, LooKupValue, Criteria)
    Case "C"
        D_Database = Application.DCount(DLieu, LooKupValue, Criteria)
    Case "D"
        D_Database = Application.DMax(DLieu, LooKupValue, Criteria)
    Case "T"
     D_Database = Application.DMin(DLieu, LooKupValue, Criteria)
    Case "S"
        D_CSDL = Application.DSum(DLieu, LooKupValue, Criteria)
    Case Else
        D_Database = "0"
    End Select
[B]End Function[/B]
Hàm này có í nghĩa khi cần kiểm tra nhanh các số liệu tổng hợp!
 
Lần chỉnh sửa cuối:
Criteria động trong Database Functions

Dear all,
-------
Đã lâu lắm rồi chúng ta mới thấy WhoamI thách đố kiểu khó chịu như thế! (NNN mà).Còn có thể nói là "oái oăm" hơn nữa khi mà cấm các các cao thủ không được sử dụng VBA (đưa vào chuyên mục Excel căn bản mà).
Quả là hóc cái búa!
Sau khi nghiên cứu các yêu cầu của bài toán, tôi mạnh dạn đưa giải pháp lên đây. Hi vọng qua bài toán này, chúng ta sẽ hiểu được khá nhiều về Database Functions - các criteria và việc vận dụng các hàm tham chiếu.
Bài học về Database Functions rút ra qua ví dụ này là:
1. Mặc dù MSE cho phép chúng ta định nghĩa Name với tham chiếu bao gồm các địa chỉ rời rạc, song chúng ta không thể áp dụng Name đó vào Criteria cho DBFunctions.
2. Chúng ta cũng không thể thay thế Criteria bởi một chuỗi biểu thức vì Microsoft định nghĩa tham số này như kiểu một "Range".

Tập tin đính kèm dưới đây chỉ là một giải pháp khi chúng ta muốn sử dụng nhiều điều kiện (Criteria) cho các hàm Dabase trong MSE.
- Điều kiện của phương pháp này là danh sách trong bảng List items (last date) phải trùng với danh sách trong bảng Criteria.
- Giải pháp sẽ bị giới hạn nếu số lượng Item khá lớn. Tuy nhiên, chúng ta có thể tạo ra các Criteria một cách dễ dàng vì chúng được tham chiếu từ bảng List items (last date) bởi name myCriteria với tham chiếu động.

Xin mời WhoamI cho ý kiến để anh còn ||\ !
 

File đính kèm

Lần chỉnh sửa cuối:
Thấy bài viết của anh Cường và ý tưởng của em Hằng mình muốn đưa ra một ví dụ cần dùng đến hàm DMAX nhờ anh Cường và các bạn chỉ giúp.Mình đã dùng hàm này và cũng có kết quả đúng nhưng không như mong muốn vì nó rất dài dòng.
 

File đính kèm

Web KT

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

Back
Top Bottom