Noname > 26-02-20, 05:27 PM
=MultiLookup(chuỗi có bao gồm nhiều giá trị cách nhau dấu chấm phẩy ;Bảng tìm kiếm)
A;C;E;F
Thiếu máu;Viêm phế quản;Sâu răng;Cận
Function MultiLookup(s As String, R As Range)
' s bao gom nhieu chuoi cach nhau bang dau cham phay
'R laf bang can tim kiem
s1 = Split(s, ";")
For Each s2 In s1
s = WorksheetFunction.Substitute(s, s2, WorksheetFunction.VLookup(s2, R, 2, 0))
Next
MultiLookup = s
End Function
=MultiLookup(chuỗi có bao gồm nhiều giá trị cách nhau dấu chấm phẩy ;Bảng tìm kiếm)
=MultiLookup(G2;B2:C8)
Thiếu máu;Viêm phế quản;Sâu răng;Cận
thuyyeu99 > 26-02-20, 06:33 PM
Noname > 26-02-20, 09:52 PM
(26-02-20, 06:33 PM)thuyyeu99 Đã viết: Nếu vậy anh (bạn) đã làm udf tự tạo rồi dùng function excel làm chi.
thuyyeu99 > 27-02-20, 12:42 AM
(26-02-20, 09:52 PM)Noname Đã viết:Không ban diễn đạt mình hiểu hết, chắc do mình quen làm theo cách của mình là viết hàm tự tạo UDF mình ít khi sử dụng hàm của WorksheetFunction(26-02-20, 06:33 PM)thuyyeu99 Đã viết: Nếu vậy anh (bạn) đã làm udf tự tạo rồi dùng function excel làm chi.
Không hiểu ý bạn lắm.
Có thể cách diễn đạt mình chưa đúng hoặc tối nghĩa, nhưng mục tiêu của mình là ra đáp án cho đề bài một cách hiệu quả nhất.
Cái này mình viết cho 1 bạn đang làm bệnh viện. Sẵn chia sẻ cho mọi người.
Nếu bạn có thủ thuật gì hay nhớ chia sẻ nhé
Function MultiLookupthuy(s As String, R As Range)
Dim i As Integer, mypos As Integer
Dim s1 As String
Dim arrVung As Variant
arrVung = R.value
s1 = s
For i = LBound(arrVung, 1) To UBound(arrVung, 1)
mypos = InStr(1, s, arrVung(i, 1), 1)
If mypos > 0 Then
s1 = Replace(s1, arrVung(i, 1), arrVung(i, 2))
End If
Next
MultiLookupthuy = s1
End Function
ongke0711 > 27-02-20, 11:30 AM
(27-02-20, 12:42 AM)thuyyeu99 Đã viết:Mã:Function MultiLookupthuy(s As String, R As Range)
Dim i As Integer
Dim s1 As String
Dim arrVung As Variant
arrVung = R.value
s1 = s
For i = LBound(arrVung, 1) To UBound(arrVung, 1)
mypos = InStr(1, s, arrVung(i, 1), 1)
If mypos > 0 Then
s1 = Replace(s1, arrVung(i, 1), arrVung(i, 2))
End If
Next
MultiLookupthuy = s1
End Function
thuyyeu99 > 27-02-20, 11:33 AM
(27-02-20, 11:30 AM)ongke0711 Đã viết:Repale để cho nó nằm đúng cái thứ tự của mã đưa vào anh A,C,E,B,D(27-02-20, 12:42 AM)thuyyeu99 Đã viết:Mã:Function MultiLookupthuy(s As String, R As Range)
Dim i As Integer
Dim s1 As String
Dim arrVung As Variant
arrVung = R.value
s1 = s
For i = LBound(arrVung, 1) To UBound(arrVung, 1)
mypos = InStr(1, s, arrVung(i, 1), 1)
If mypos > 0 Then
s1 = Replace(s1, arrVung(i, 1), arrVung(i, 2))
End If
Next
MultiLookupthuy = s1
End Function
@thuyyeu99:
Đoạn code này đâu cần Replace em.
s1 = Replace(s1, arrVung(i, 1), arrVung(i, 2))
==> s1 = arrVung (i,2) là được rồi.
@Noname:
Trước đây trong Access, tôi và bạn MTNQ cũng có làm cái vụ tương tự: tìm triệu chứng bệnh và gán nối tiếp nhau.
Trong Excel thì chưa ngâm cứu chuyển qua Excel như thế nào
Bác xem cái hình demo bên dưới.
thuyyeu99 > 27-02-20, 11:41 AM
Xuân Thanh > 27-02-20, 11:48 AM