HUYBOY
Thành viên chính thức
- Tham gia
- 5/4/20
- Bài viết
- 77
- Được thích
- 3
Hên sui nhé.Dạ. Em cảm ơn trước ạ
Function laygiatri(ByVal dk As String, mang As Range) As String
Dim arr, i As Long
arr = mang.Value
For i = 1 To UBound(arr)
If InStr(arr(i, 1), dk) Then
laygiatri = arr(i, 2)
Exit Function
End If
Next i
laygiatri = Empty
End Function
=laygiatri(A2,Sheet1!$A$2:$B$4)
Chắc cao nhân thiệt, chứ đọc dô không hiểu đầu bài muốn gìKính nhờ Anh Chị. Em có file excel muốn search theo Danh sách cột A ở sheet 2 vào cột A sheet 1, và trả kết quả tương ứng với bảng Danh sách đó. Kính nhờ các Cao nhân giúp em viết function với ạ
Em cảm ơn ạ
Function XXLookUp(ByVal Chuoi As String, Rng As Range) As String
Dim sArr(), i&, Dic As Object, Key
Set Dic = CreateObject("scripting.dictionary")
sArr = Rng.Value
For i = 1 To UBound(sArr)
Dic.Item(sArr(i, 1)) = i
Next
For Each Key In Dic.keys
If InStr(Chuoi, Key) > 0 Then
XXLookUp = sArr(Dic.Item(Key), 2)
Exit Function
End If
Next
Set Dic = Nothing
End Function
=XXLookUp(A2,Sheet2!$A$2:$B$4)
Không hiểu sao phải thêm Dictionary làm gì nhỉ.Cứ chạy 1 vòng lặp so sánh là được mà.Thử thêm cái này xem thế nào
Mã:Function XXLookUp(ByVal Chuoi As String, Rng As Range) As String Dim sArr(), i&, Dic As Object, Key Set Dic = CreateObject("scripting.dictionary") sArr = Rng.Value For i = 1 To UBound(sArr) Dic.Item(sArr(i, 1)) = i Next For Each Key In Dic.keys If InStr(Chuoi, Key) > 0 Then XXLookUp = sArr(Dic.Item(Key), 2) Exit Function End If Next Set Dic = Nothing End Function
Mã:=XXLookUp(A2,Sheet2!$A$2:$B$4)
Mới học anh ạ.Vẫn dư âm của kiểu viết code. hihi. Tác phẩm đầu tay. Có gì anh chỉ điểm vớiKhông hiểu sao phải thêm Dictionary làm gì nhỉ.Cứ chạy 1 vòng lặp so sánh là được mà.
Thấy đề bài giống, góp vui thêm 1 hàm của anh @ndu96081631 (1 siêu nhân về VBA)- viết đã lâu lắm rồi để chủ thớt và mọi người th1am khảo.Kính nhờ Anh Chị. Em có file excel muốn search theo Danh sách cột A ở sheet 2 vào cột A sheet 1, và trả kết quả tương ứng với bảng Danh sách đó. Kính nhờ các Cao nhân giúp em viết function với ạ
Em cảm ơn ạ
Function StLookup(LVal As String, LArray As Range, Optional ColIndex As Byte) As String
'By ndu96081631
Dim Clls As Range, PosSt As Long, Temp As Long
PosSt = Len(LVal) + 1
For Each Clls In LArray.Resize(, 1)
Temp = InStr(UCase$(LVal), UCase$(Clls))
If Temp > 0 And Temp < PosSt Then
PosSt = Temp
StLookup = Clls(, ColIndex)
End If
Next Clls
End Function
Đúng là nó ở cái tầm chú nhỉ?Thấy đề bài giống, góp vui thêm 1 hàm của anh @ndu96081631 (1 siêu nhân về VBA)- viết đã lâu lắm rồi để chủ thớt và mọi người th1am khảo.
Thì đã nói đúng là một siêu nhân của VBA. Hàm StLookup này anh ấy viết đã lâu rồi, chạy ổn định, và có tùy biến lấy kết quả ở cột thứ mấy (2,3,4...)trong vùng tham chiếuĐúng là nó ở cái tầm chú nhỉ?
Chú lại quá khen rồi. Cháu lần đầu tiên viết. Vẫn còn dư âm của việc viết sub, nên chẳng biết như thế nào là tối ưu, y chang kiểu nghĩ sao viết như vậy á chúHàm mà bạn viết cũng được đấy chứ. Mình không viết được hàm như bạn đâu, ngưỡng mộ.
Không qua khen đâu. Thật mà. Mình thi thoảng cũng vọc vạch viết UDF nhưng phải bò ra mới được (có cái không thành công), chủ yếu là viết Sub sau đó mò dần chuyển sang UDF. Đây có lẽ là tư duy của mình theo lối mòn rồi, khó chuyển. Hai nữa là không có cơ bản nên cứ mò dần, mò dần, thế nên mới nói là có cái thành công, có cái không thành công.Chú lại quá khen rồi. Cháu lần đầu tiên viết. Vẫn còn dư âm của việc viết sub, nên chẳng biết như thế nào là tối ưu, y chang kiểu nghĩ sao viết như vậy á chú
Cháu cũng y chang như chú thôi. Cũng học ngang chứ chú nói trình cao người ta cười chết, do tính chất công việc tiếp xúc với excell hàng ngày. Chứ thực ra cháu kiểu dạng mỗi chỗ biết 1 xíu. Như chú và nhiều thầy cô anh chị khác trên diễn đàn. Phải ghi nhận 1 điều. Họ nhảy số nhanh thật. Cũng muốn học rộng ra mà chẳng biết bắt đầu từ đâu, ai dạy, và phải học như thế nào. Chứ tích lũy kiểu như cháu bây giờ chắc hơi lâu.Theo dõi bạn thấy bạn có rất nhiều bài giải quyết được vấn đề thấu đáo, tối ưu ( muốn nói trình của bạn rất rất cao).
Ơ lạ nhỉ. Mỗi người đều có quyền ngưỡng mộ ai đó. Lý do không chính đáng, không thuyết phục thì không có quyền ngưỡng mộ? Ngưỡng mộ là ngưỡng mộ. Người ta ngưỡng mộ cô Hoa vì có hàm răng đều thẳng tắp. Tôi ngưỡng mộ cô Lan, chết mê chết mệt vì cái răng khểnh. Không được phép?Cháu cũng y chang như chú thôi. Cũng học ngang chứ chú nói trình cao người ta cười chết, do tính chất công việc tiếp xúc với excell hàng ngày. Chứ thực ra cháu kiểu dạng mỗi chỗ biết 1 xíu. Như chú và nhiều thầy cô anh chị khác trên diễn đàn. Phải ghi nhận 1 điều. Họ nhảy số nhanh thật. Cũng muốn học rộng ra mà chẳng biết bắt đầu từ đâu, ai dạy, và phải học như thế nào. Chứ tích lũy kiểu như cháu bây giờ chắc hơi lâu.
Được chứ chú. Cũng như cháu ngưỡng mộ 1 vài người trên này á.Ơ lạ nhỉ. Mỗi người đều có quyền ngưỡng mộ ai đó. Lý do không chính đáng, không thuyết phục thì không có quyền ngưỡng mộ? Ngưỡng mộ là ngưỡng mộ. Người ta ngưỡng mộ cô Hoa vì có hàm răng đều thẳng tắp. Tôi ngưỡng mộ cô Lan, chết mê chết mệt vì cái răng khểnh. Không được phép?