• Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được
  • Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được

    Noname > 26-02-20, 05:27 PM

    Tự Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được trong bảng

    Hàm : MultiLookup : thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được trong bảng
    Phát Biểu
    Mã:
    =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)
    Đề bài như sau
    Ta có 1 bảng tìm kiếm như sau:
    [Hình: qve1nAb.png]
    Và 1 chuỗi như sau
    Mã:
    A;C;E;F

    Mục tiêu của hàm là trả về kết quả sau:

    Mã:
    Thiếu máu;Viêm phế quản;Sâu răng;Cận


    Thực hiện:
    Nhấn alt+F11 tạo 1 module và dán đoạn code sau vào
    Mã PHP:
    Function MultiLookup(As StringAs 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(ss2WorksheetFunction.VLookup(s2R20))
    Next
    MultiLookup 
    s
    End 
    Function 

    Sử dụng hàm:
    Mã:
    =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)
    Ví dụ
    Mã:
    =MultiLookup(G2;B2:C8)

    Kết quả

    Mã:
    Thiếu máu;Viêm phế quản;Sâu răng;Cận

    Xem file mẫu

    https://www.dropbox.com/s/8gkmibgxwzntsx....xlsm?dl=0
  • RE: Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được

    thuyyeu99 > 26-02-20, 06:33 PM

    Nếu vậy anh (bạn) đã làm udf tự tạo rồi dùng function excel làm chi.
  • RE: Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được

    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.

    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é
  • RE: Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được

    thuyyeu99 > 27-02-20, 12:42 AM

    (26-02-20, 09:52 PM)Noname Đã viết:
    (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é
    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

    Mã:
    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
  • RE: Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được

    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:

    Đ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  007
    Bác xem cái hình demo bên dưới.
    Trong listbox khi gõ nó hiện tên tùm lum là tôi thêm 60.000 dòng dữ liệu vô để kiểm tra tốc độ tìm kiếm có chậm lắm không thôi và các bạn cũng thấy tốc độ khá tốt.


    [Hình: TimVaNoiChuoi.gif]
  • RE: Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được

    thuyyeu99 > 27-02-20, 11:33 AM

    (27-02-20, 11:30 AM)ongke0711 Đã viết:
    (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  007
    Bác xem cái hình demo bên dưới.


    [Hình: TimVaNoiChuoi.gif]
    Repale để cho nó nằm đúng cái thứ tự của mã đưa vào anh A,C,E,B,D
  • RE: Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được

    ongke0711 > 27-02-20, 11:38 AM

    (27-02-20, 11:33 AM)thuyyeu99 Đã viết: Repale để cho nó nằm đúng cái thứ tự của mã đưa vào anh A,C,E,B,D

    Ờ há...quên cái yêu cầu của đề bài. 014
  • RE: Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được

    thuyyeu99 > 27-02-20, 11:41 AM

    015  014
  • RE: Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được

    Xuân Thanh > 27-02-20, 11:48 AM

    Viết thành cái UDF là chính xác nhất
    Xem lại cái này : mypos = InStr(1, s, arrVung(i, 1), 1)
  • RE: Tạo hàm thay thế nhiều kết quả cách nhau bằng dấu chấm phẩy bằng chuỗi tìm kiếm được

    thuyyeu99 > 27-02-20, 12:33 PM

    (27-02-20, 11:48 AM)Xuân Thanh Đã viết: Xem lại cái này : mypos = InStr(1, s, arrVung(i, 1), 1)
    Là sao anh ?