



Nói chung bạn không một lời giải thích. Vậy bạn tự kiểm tra xem sao:Mình đang cần lấy giá từ 2 File với nhiều điều kiện. Đã làm suốt 1 ngày rồi mà không được. Nhờ mọi người giúp đỡ
=LOOKUP(2,1/(B2='[Bảng tham chiếu.xlsx]Sheet1'!B$2:B$24)/(C2='[Bảng tham chiếu.xlsx]Sheet1'!C$2:C$24)/(D2='[Bảng tham chiếu.xlsx]Sheet1'!D$2:D$24),'[Bảng tham chiếu.xlsx]Sheet1'!$E$2:$E$24)
để em thử xem. cảm ơn bácNói chung bạn không một lời giải thích. Vậy bạn tự kiểm tra xem sao:
Mã:=LOOKUP(2,1/(B2='[Bảng tham chiếu.xlsx]Sheet1'!B$2:B$24)/(C2='[Bảng tham chiếu.xlsx]Sheet1'!C$2:C$24)/(D2='[Bảng tham chiếu.xlsx]Sheet1'!D$2:D$24),'[Bảng tham chiếu.xlsx]Sheet1'!$E$2:$E$24)
Nói chung bạn không một lời giải thích. Vậy bạn tự kiểm tra xem sao:
Mã:=LOOKUP(2,1/(B2='[Bảng tham chiếu.xlsx]Sheet1'!B$2:B$24)/(C2='[Bảng tham chiếu.xlsx]Sheet1'!C$2:C$24)/(D2='[Bảng tham chiếu.xlsx]Sheet1'!D$2:D$24),'[Bảng tham chiếu.xlsx]Sheet1'!$E$2:$E$24)
Nói chung bạn không một lời giải thích. Vậy bạn tự kiểm tra xem sao:
Mã:=LOOKUP(2,1/(B2='[Bảng tham chiếu.xlsx]Sheet1'!B$2:B$24)/(C2='[Bảng tham chiếu.xlsx]Sheet1'!C$2:C$24)/(D2='[Bảng tham chiếu.xlsx]Sheet1'!D$2:D$24),'[Bảng tham chiếu.xlsx]Sheet1'!$E$2:$E$24)



Viết như bạn chỉ là dò tìm tương đối thôi, không đúng là phải rồi. Bạn thay dấu phẩy thành dấu chấm phẩy lại công thức trên xem. (nhìn công thức của bạn sử dụng dấu chấm phẩy)Mình đã sử dụng hàm Lookup, cấu trúc như sau :
=LOOKUP(B8&C8&D8;'[Bảng tham chiếu.xlsx]Sheet1'!$B$2:'[Bảng tham chiếu.xlsx]Sheet1'!$B$24&'[Bảng tham chiếu.xlsx]Sheet1'!$C$2:$C$24&'[Bảng tham chiếu.xlsx]Sheet1'!$D$2:$D$24;'[Bảng tham chiếu.xlsx]Sheet1'!$E$2:$E$24)
Nếu 2 bảng dữ liệu trùng khớp nhau thì ra dữ liệu chuẩn. Nhưng thay đổi bảng tham chiếu thì ở bảng kết quả lại chỉ cho giá trị gần đúng.
Viết như bạn chỉ là dò tìm tương đối thôi, không đúng là phải rồi. Bạn thay dấu phẩy thành dấu chấm phẩy lại công thức trên xem. (nhìn công thức của bạn sử dụng dấu chấm phẩy)
bảng tham chiếu với bảng kết quả cái nào cũng mấy chục nghìn dòng không à ,thân gái kéo công thức mệt mõi lắm anh , anh có giãi pháp nào khác chỉ cần bấm 1 nút ra luôn không , giúp em với . hic hicViết như bạn chỉ là dò tìm tương đối thôi, không đúng là phải rồi. Bạn thay dấu phẩy thành dấu chấm phẩy lại công thức trên xem. (nhìn công thức của bạn sử dụng dấu chấm phẩy)



Search trên diễn đàn hoặc cụ "gồ" chỉnh trong Control Panel ấy.cái này m cũng ko hiểu. Nhưng các công thức khác cũng thế, sử dụng ở máy khác thì là dấu phẩy, nhưng ở máy mình thì dấu chấm phẩy mới chạy được.
Nếu có giải pháp nào tốt hơn thì chống "ế" được lâu rồi người đẹp ơi. (Cái nick xanh lá mới bấm nút bài trên làm vô tư ấy chứ)bảng tham chiếu với bảng kết quả cái nào cũng mấy chục nghìn dòng không à ,thân gái kéo công thức mệt mõi lắm anh , anh có giãi pháp nào khác chỉ cần bấm 1 nút ra luôn không , giúp em với . hic hic



-------Viết như bạn chỉ là dò tìm tương đối thôi, không đúng là phải rồi. Bạn thay dấu phẩy thành dấu chấm phẩy lại công thức trên xem. (nhìn công thức của bạn sử dụng dấu chấm phẩy)
Bạn là con gái mà mí anh trên diễn đàn hỏng có ga lăng gì hết, bắt còn gái mà kéo công thức 20 ngàn dòng thì thiệt là ác quá đi.Tại em mệt quá rồi, nói ko nổi nữa. bác thông cảm. thân con gái, xử lý đống dữ liệu quá lớn. mệt quá.
vẫn đang vật vã với 2 cái bảng. hixx



Sub GetPrice()
Dim Wb0 As Workbook
Dim Dic As Object, i As Long, Tmp
Dim sArr(), dArr()
Set Dic = CreateObject("Scripting.dictionary")
Set Wb0 = Workbooks("BangThamChieu.xlsx")
With Wb0.Worksheets("Sheet1")
sArr = .Range("B2:E" & .[E25000].End(xlUp).Row).Value
For i = 1 To UBound(sArr)
Tmp = sArr(i, 1) & "#" & sArr(i, 2) & "#" & sArr(i, 3)
Dic(Tmp) = sArr(i, 4)
Next
End With
sArr = Range("B2:D" & [D25000].End(xlUp).Row).Value
ReDim dArr(1 To UBound(sArr), 1 To 1)
For i = 1 To UBound(sArr)
dArr(i, 1) = Dic.Item(sArr(i, 1) & "#" & sArr(i, 2) & "#" & sArr(i, 3))
Next
[F2].Resize(i - 1, 1) = dArr
End Sub
Bạn nhõng nhẽo thay cho bạn ý hả hp khương dễ xương, bạn chịu khó thay cái avata nào quyến rũ chút coi, biết đâu tui xúc động đậy sẽ viết tiếpEm Ứ có chịu code vầy đâu. Thân em con gái dặm trường...Em muốn cái file tham chiếu gì đó không cần có mở lên mà vẫn lấy được dữ liệu cơ...![]()

Sub LayDuLieu_FileDong()
Dim lsSQL As String, cnn As Object, lrs As Object, sArr, i As Long, Dic As Object
Set cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
Set Dic = CreateObject("Scripting.dictionary")
With cnn
If Val(Application.Version) < 12 Then
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\BangThamChieu.xlsx" & ";Extended Properties=""Excel 8.0;IMEX=1;HDR=No"";"
Else
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\BangThamChieu.xlsx" & ";Extended Properties=""Excel 12.0;IMEX=1;HDR=No"";"
End If
.Open
End With
lsSQL = "SELECT * " & "FROM [Sheet1$A1:E65000] "
lrs.Open lsSQL, cnn, 3, 1
sArr = lrs.GetRows
sArr = TransArr(sArr)
'-----------------------Xu ly du lieu
For i = 1 To UBound(sArr)
Tmp = sArr(i, 1) & "#" & sArr(i, 2) & "#" & sArr(i, 3)
Dic(Tmp) = sArr(i, 4)
Next
sArr = Range("B2:D" & [D65000].End(xlUp).Row).Value
ReDim dArr(1 To UBound(sArr), 1 To 1)
For i = 1 To UBound(sArr)
dArr(i, 1) = Dic.Item(sArr(i, 1) & "#" & sArr(i, 2) & "#" & sArr(i, 3))
Next
[F2].Resize(i - 1, 1) = dArr
lrs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing
Set Dic = Nothing
End Sub
'----------------------Ham dao mang cua anh HaiLuaMienTay
Function TransArr(sArr As Variant) As Variant
Dim cllX As Long, cllY As Long, tmpX As Long, tmpY As Long, tmpArr As Variant
tmpX = UBound(sArr, 2): tmpY = UBound(sArr, 1)
ReDim tmpArr(tmpX, tmpY)
For cllX = 0 To tmpX
For cllY = 0 To tmpY
tmpArr(cllX, cllY) = sArr(cllY, cllX)
Next cllY
Next cllX
TransArr = tmpArr
End Function
Dẹp ngay ý định đó đi nàng , Hoamattroicoi mà làm thế thì Doveandrose cũng chả buồn sống nữa vì :Mình đi chết đây bạn doveandrose - giangleloi và hpkhuong ạ, mình thực sự không muốn sống nữa sau khi đọc xong comment của tác giả topic.
Vậy mà mình cứ đi thương bạn ý thân gái dặm trường =)))))))))))))))))))))))))))))))))))) òa òa
Mình đi chết đây bạn doveandrose - giangleloi và hpkhuong ạ, mình thực sự không muốn sống nữa sau khi đọc xong comment của tác giả topic.
Vậy mà mình cứ đi thương bạn ý thân gái dặm trường =)))))))))))))))))))))))))))))))))))) òa òa



Vụ này là vụ gì đây. Có đột biến gen ở GPE à.Dẹp ngay ý định đó đi nàng , Hoamattroicoi mà làm thế thì Doveandrose cũng chả buồn sống nữa vì :
chỉ có phụ nữ mới đem lại hạnh phúc cho nhau =))




Mình đi chết đây bạn doveandrose - giangleloi và hpkhuong ạ, mình thực sự không muốn sống nữa sau khi đọc xong comment của tác giả topic.
Vậy mà mình cứ đi thương bạn ý thân gái dặm trường =)))))))))))))))))))))))))))))))))))) òa òa
thực sự mình cũng ko biết mình làm đúng hay ko nữa.Cái ở bài #22, #23 không phải là comment.
Gọi cho đúng từ thì nó là statement, declaration, hoặc explanation.
Không, bạn làm như thế là OK nnpc ạ, thêm 1 cột phụ bên sheet File bảng tham chiếu nối 3 điều kiện lại, rồi dùng Vlookup() tại Bảng kết quả. Tại lúc đầu bạn nói hơn 20 ngàn dòng nên mấy ảnh cũng hơi ái ngại chuyện bạn kéo công thức, hihihi. Tuy nhiên nếu không biết code VBA thì xài công thức bạn đang làm đó đi, vừa dễ hiểu, vừa thông dụng bạn à.Mình làm như vậy bị sai hay sao bạn.
Sai thì ko sai. Chẳng qua với số liệu lên 90.000 dòng như bạn nói thì quả thực máy bạn không có cấu hình mạnh thì chạy chắc cũng đủ treo máy đấythực sự mình cũng ko biết mình làm đúng hay ko nữa.
Không, bạn làm như thế là OK nnpc ạ, thêm 1 cột phụ bên sheet File bảng tham chiếu nối 3 điều kiện lại, rồi dùng Vlookup() tại Bảng kết quả. Tại lúc đầu bạn nói hơn 20 ngàn dòng nên mấy ảnh cũng hơi ái ngại chuyện bạn kéo công thức, hihihi. Tuy nhiên nếu không biết code VBA thì xài công thức bạn đang làm đó đi, vừa dễ hiểu, vừa thông dụng bạn à.
Những câu mình viết bên trên là mấy anh em mình chọc nhau thôi, không có gì cả và cũng không có ý phê phán bạn làm sai.
Chúc bạn cuối tuần vui và học được nhiều kiến thức hay trên diễn đàn.
HMT.
Nhập liệu thừa khoảng trắng thì bạn dùng hàm Trim để loại khoảng trắngMệt quá các bác ạ. Sếp đưa cho file dữ liệu, dùng hàm chỉ lấy đc 1000 mã còn 19.000 mã phải dò thủ công. Mờ mắt luôn.
Người trước làm ko chuẩn. người sau chỉnh sửa đúng là ác mộng đêm đông.