Chào bạn SA_DQCó ai hiểu bạn này muốn cái gì không vậy, các bạn?
=LOOKUP(2;1/($E$5:$H$8=$B$4:$C$4)/($E$10:$H$13=$B$9:$C$9)/($E$15:$H$18=$B$14:$C$14);$E$20:$H$23) |
Tức là tìm được kết quả thì nối chúng lại với nhau bạn nhé!Em cũng không hiểu cái gì luôn (Sau khi đã đọc #3) =))
Cảm ơn bạnLàm chơi ra kết quả đơn thôi không biết ghép thế nào.
Nó ra 4 kết quả đúng rồi mà, công thức này lấy kết quả bằng hàm indirect thì đâu cần chọn hết vùng tính có lẽ bạn nhầm hàm column. Với tất cả đều là hàm sẵn có từ excel 2007 trở lên.Cảm ơn bạn
dazkangel
Mình thấy công thức
=SUBSTITUTE(IF($A$1=1;" ";OFFSET($A$1;ROW()-1;COLUMN()-1)&IFERROR(";"&INDIRECT(TEXT(AGGREGATE(15;6;(ROW(E20:E23)*1000+COLUMN(E20:H20))/COUNTIFS(B4:C4;E5:H8;B9:C9;E10:H13;B14:C14;E15:H18);A1-1);"R0C000");0);""));" ;";"")
không chọn hết mảng (E20:H23)
Mà vẫn có 1 phần kết quả đúng
Mong bạn tìm xem phương án xử lý được bằng hàm sẵn có thì càng tốt.
Chúc bạn vui.
Một phần của bạn là phần nào, bạn phải chỉ ra cho rõ để mọi người hiểu?Mà vẫn có 1 phần kết quả đúng
Thật sự khi nhìn vào hàm đồ sộ và dài, tôi thấy ngại ngại. (Thực ra thì cũng không biết nó hoạt động như nào). Nhưng qua khảo sát thì thấy kết quả rất đúng, tuy nhiên nó không ghép được các dữ liệu với nhau.Một phần của bạn là phần nào, bạn phải chỉ ra cho rõ để mọi người hiểu?
Anh chị và các bác oi, cháu viết hàm cho bài trên, sao nó không ra kết quả, anh chị và các bác sửa giúp cháu với ạ.
Function Lookup_VD(Mang_KQ, Mang1_, Dk1 As String, Mang2_, Dk2 As String, Mang3_, Dk3 As String) As StringMã:
Dim Mang1, Mang2, Mang3
Dim i, j
Mang1 = Mang1_
Mang2 = Mang2_
Mang3 = Mang3_
Mang_KQ = Mang_KQ
For i = 1 To UBound(Mang1)
For j = 1 To UBound(Mang1, 2)
If Mang1(i, j) = Dk1 And Mang2(i, j) = Dk2 And Mang3(i, j) = Dk3 Then Mang_KQ = Join(i, j)
Next j
Next i
Lookup_VD = Mang_KQ
End Function
em muốn viết hàm như công thức em làm đó chị oibài này em muốn sửa thế nào !
Bạn thử dùng hàm của anh @ndu96081631 xemem muốn viết hàm như công thức em làm đó chị oi
Chị viết đơn giản thui đấy nhé
Để em còn hiểu được chị nhé
Em cảm ơn chị
Function LookUpArray(ByVal CriteriaArray, ByVal ReturnArray, ByVal ReturnType As Boolean)
'ReturnType = FALSE ---> Lay ket qua dau tien thoa d/k
'ReturnType = TRUE ---> Lay ket qua cuoi cùng thoa d/k
Dim aCrit, aRet, tmp, bChk As Boolean
Dim i As Long
On Error Resume Next
LookUpArray = vbNullString
aCrit = ArrayTo1DArray(CriteriaArray)
aRet = ArrayTo1DArray(ReturnArray)
For i = LBound(aCrit) To UBound(aCrit)
bChk = CBool(aCrit(i))
If bChk Then
tmp = aRet(i)
If ReturnType = False Then Exit For
End If
Next
If TypeName(tmp) <> "Error" Then LookUpArray = tmp
End Function
Function ArrayTo1DArray(ByVal SourceArray)
Dim aTmp, Item, arr()
Dim n As Long
aTmp = SourceArray
If Not IsArray(aTmp) Then aTmp = Array(aTmp)
For Each Item In aTmp
n = n + 1
ReDim Preserve arr(1 To n)
arr(n) = Item
Next
ArrayTo1DArray = arr
End Function
Chị oi, em muốn viết đơn giản thui, viết như kiểu công thức em làm đó chị,Bạn thử dùng hàm của anh @ndu96081631 xem
Mã:Function LookUpArray(ByVal CriteriaArray, ByVal ReturnArray, ByVal ReturnType As Boolean) 'ReturnType = FALSE ---> Lay ket qua dau tien thoa d/k 'ReturnType = TRUE ---> Lay ket qua cuoi cùng thoa d/k Dim aCrit, aRet, tmp, bChk As Boolean Dim i As Long On Error Resume Next LookUpArray = vbNullString aCrit = ArrayTo1DArray(CriteriaArray) aRet = ArrayTo1DArray(ReturnArray) For i = LBound(aCrit) To UBound(aCrit) bChk = CBool(aCrit(i)) If bChk Then tmp = aRet(i) If ReturnType = False Then Exit For End If Next If TypeName(tmp) <> "Error" Then LookUpArray = tmp End Function Function ArrayTo1DArray(ByVal SourceArray) Dim aTmp, Item, arr() Dim n As Long aTmp = SourceArray If Not IsArray(aTmp) Then aTmp = Array(aTmp) For Each Item In aTmp n = n + 1 ReDim Preserve arr(1 To n) arr(n) = Item Next ArrayTo1DArray = arr End Function