Nhờ giúp tìm chuỗi và trả về chuỗi tương ứng theo danh sách

Liên hệ QC

tieugia35

Thành viên mới
Tham gia
8/1/16
Bài viết
19
Được thích
0
E có làm 1 file excel để tra mã nhằm dễ dàng hơn trong việc giải bài tập sếp giao, nhưng nếu là số công tác tầm vài chục thì e có thể làm tay nhưng bây giờ số công tác đã lên tới hơn 500 nên nhờ các a/c cao thủ trong đây giải dùm ạ.
E muốn lập 1 VBA nút bấm, hoặc hàm có trong excel cũng được miễn làm sao ở cột số 6 "Mã hạng mục" sẽ dựa vào chuỗi cột số 3 " Tên công việc nghiệm thu"
Nếu là "sàn" thì GF, "móng" thì BA, cột thì "CF", cầu thang thì "SF"
VD như "'sàn tầng trệt trục (A-->E/1-->3) căn A31g-C1-11" thì sẽ lấy chuỗi "sàn" và cho ra mã là GF
E đã xem 1 vài video hướng dẫn tách chuỗi nhưng ko áp dụng được do chuỗi của e ko có ký tự để nhận biết.
 

File đính kèm

  • Tractnt.xlsx
    24.6 KB · Đọc: 11
E có làm 1 file excel để tra mã nhằm dễ dàng hơn trong việc giải bài tập sếp giao, nhưng nếu là số công tác tầm vài chục thì e có thể làm tay nhưng bây giờ số công tác đã lên tới hơn 500 nên nhờ các a/c cao thủ trong đây giải dùm ạ.
E muốn lập 1 VBA nút bấm, hoặc hàm có trong excel cũng được miễn làm sao ở cột số 6 "Mã hạng mục" sẽ dựa vào chuỗi cột số 3 " Tên công việc nghiệm thu"
Nếu là "sàn" thì GF, "móng" thì BA, cột thì "CF", cầu thang thì "SF"
VD như "'sàn tầng trệt trục (A-->E/1-->3) căn A31g-C1-11" thì sẽ lấy chuỗi "sàn" và cho ra mã là GF
E đã xem 1 vài video hướng dẫn tách chuỗi nhưng ko áp dụng được do chuỗi của e ko có ký tự để nhận biết.
Bạn tạo 1 module rồi copy dưới đây vào:
Mã:
Public Function TRA_CUU(ByVal bangtra As Range, ByVal tukhoa As Range) As String
    Dim rng As Range, i As Integer
    If tukhoa.Value = "" Then
        TRA_CUU = Empty
        Exit Function
    End If
    For Each rng In bangtra
        i = InStr(UCase(tukhoa.Value), UCase(rng.Value))
        If i > 0 Then
            TRA_CUU = rng.Offset(, 1).Value
            Exit For
        End If
    Next rng
End Function

Tạo thêm 1 bảng tra cứu phụ giống H1:I5 như hình:
1646675711259.png
 

File đính kèm

  • Tractnt.xlsm
    26.4 KB · Đọc: 6
Upvote 0
hoặc hàm có trong excel cũng được
Mã:
=IFERROR(LOOKUP(1000,SEARCH({"sàn","móng","cột","cầu thang"},C9),{"GF","BA","CF","SF"}),"")
Lần sau hạn chế viết tắt nhé, "a/c", "E" chịu khó gõ thêm vài chữ cho đầy đủ thể hiện sự chỉn chu và tôn trọng người đọc nhé!
 
Upvote 0
Bạn tạo 1 module rồi copy dưới đây vào:
Mã:
Public Function TRA_CUU(ByVal bangtra As Range, ByVal tukhoa As Range) As String
    Dim rng As Range, i As Integer
    If tukhoa.Value = "" Then
        TRA_CUU = Empty
        Exit Function
    End If
    For Each rng In bangtra
        i = InStr(UCase(tukhoa.Value), UCase(rng.Value))
        If i > 0 Then
            TRA_CUU = rng.Offset(, 1).Value
            Exit For
        End If
    Next rng
End Function

Tạo thêm 1 bảng tra cứu phụ giống H1:I5 như hình:
View attachment 272852
Mã:
=IFERROR(LOOKUP(1000,SEARCH({"sàn","móng","cột","cầu thang"},C9),{"GF","BA","CF","SF"}),"")
Lần sau hạn chế viết tắt nhé, "a/c", "E" chịu khó gõ thêm vài chữ cho đầy đủ thể hiện sự chỉn chu và tôn trọng người đọc nhé!
Dạ em cảm ơn 2 anh. Em sẽ rút kinh nghiệm câu từ ạ.
 
Upvote 0
Bạn tạo 1 module rồi copy dưới đây vào:
Mã:
Public Function TRA_CUU(ByVal bangtra As Range, ByVal tukhoa As Range) As String
    Dim rng As Range, i As Integer
    If tukhoa.Value = "" Then
        TRA_CUU = Empty
        Exit Function
    End If
    For Each rng In bangtra
        i = InStr(UCase(tukhoa.Value), UCase(rng.Value))
        If i > 0 Then
            TRA_CUU = rng.Offset(, 1).Value
            Exit For
        End If
    Next rng
End Function

Tạo thêm 1 bảng tra cứu phụ giống H1:I5 như hình:
View attachment 272852

Ví dụ như ở sheet 1 chứa bảng trên, em tạo sheet 2, ở ô A1 em gõ "1" và gõ công thức ở ô A5: =TRA_CUU('Sheet1'!$H$2:$H$5, vlookup(A1,'Sheet1'$9:$100,3,0) thì xuất hiện lỗi #value. Còn nếu em xóa hàm vlookup thay hẳn "C9" thì ko vấn đề gì. Vậy hàm mình ở đây ko thể lồng ghép thêm 1 chuỗi hàm khác vào hay sao a ?

E có tạo thêm 1 cột mã khác với mã trên, rồi tạo 1 bản phụ khác nhưng khi dùng lại hàm cho cột mã khác thì hàm lại chạy cái có cái ko. A xem lại thử file e gửi
 

File đính kèm

  • Tractnt.xlsm
    32.4 KB · Đọc: 2
Upvote 0
Ví dụ như ở sheet 1 chứa bảng trên, em tạo sheet 2, ở ô A1 em gõ "1" và gõ công thức ở ô A5: =TRA_CUU('Sheet1'!$H$2:$H$5, vlookup(A1,'Sheet1'$9:$100,3,0) thì xuất hiện lỗi #value. Còn nếu em xóa hàm vlookup thay hẳn "C9" thì ko vấn đề gì. Vậy hàm mình ở đây ko thể lồng ghép thêm 1 chuỗi hàm khác vào hay sao a ?

E có tạo thêm 1 cột mã khác với mã trên, rồi tạo 1 bản phụ khác nhưng khi dùng lại hàm cho cột mã khác thì hàm lại chạy cái có cái ko. A xem lại thử file e gửi
Đâu dữ liệu bạn tạo sheet 2 đâu bạn, mình thấy có chỉ có một sheet.
 
Upvote 0
Eo ôi khiếp:
Mã:
{=TRA_CUU(Sheet1!$I$2:$J$5,VLOOKUP(A1,Sheet1!$23:$9999,3,0))}
Công thức có 2 cái móc này thì mình chưa đụng đến, hàm mình viết 2 tham số truyền vào là đối tượng range.
Theo ý mình hiểu bạn đang truyền vào giá trị nghĩa là dạng chuỗi nên nó bị lỗi vậy là đúng rồi.
 
Upvote 0
Eo ôi khiếp:
Mã:
{=TRA_CUU(Sheet1!$I$2:$J$5,VLOOKUP(A1,Sheet1!$23:$9999,3,0))}
Công thức có 2 cái móc này thì mình chưa đụng đến, hàm mình viết 2 tham số truyền vào là đối tượng range.
Theo ý mình hiểu bạn đang truyền vào giá trị nghĩa là dạng chuỗi nên nó bị lỗi vậy là đúng rồi.
Còn 1 vấn đề nữa anh, trong cái file em gửi em có tạo thêm 1 cột mã khác với mã trên, rồi tạo 1 bản phụ khác nhưng khi dùng lại hàm cho cột mã khác thì hàm lại chạy cái có cái ko. Vậy tức là hàm chỉ dùng cho 1 bảng phụ chứ ko thể dùng nhiều lần
 
Upvote 0
Eo ôi khiếp:
Mã:
{=TRA_CUU(Sheet1!$I$2:$J$5,VLOOKUP(A1,Sheet1!$23:$9999,3,0))}
Công thức có 2 cái móc này thì mình chưa đụng đến, hàm mình viết 2 tham số truyền vào là đối tượng range.
Theo ý mình hiểu bạn đang truyền vào giá trị nghĩa là dạng chuỗi nên nó bị lỗi vậy là đúng rồi.
Thay vì Vlookup, đổi sang Index thì nó trả về đối tượng range.
(tôi chỉ mách cho bạn thôi. Tôi có lệ là không giao tiếp với người hay viết tắt. Tôi mang thành kiến với dân viết tắt rằng họ có tật cẩu thả)
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom