Hướng dẫn công thức lấy chuỗi theo ý muốn

Liên hệ QC

dunghtgiga

Thành viên chính thức
Tham gia
31/1/15
Bài viết
60
Được thích
9
Giới tính
Nam
Chào ACE,

Mình có nội dung tại cột A và phải dùng hàm để lấy được các mã kế hoạch khác nhau tại các cột B, C, D. Mình nhờ ACE giúp mình tại cột E sử dụng công thức nào có thể lấy được một lúc các mã kế hoạch ?

Mình đính kèm file nhờ ACE hỗ trợ giúp mình ah.

1569842684336.png
 

File đính kèm

  • ham lay chuoi.xlsx
    11 KB · Đọc: 16
Chào ACE,

Mình có nội dung tại cột A và phải dùng hàm để lấy được các mã kế hoạch khác nhau tại các cột B, C, D. Mình nhờ ACE giúp mình tại cột E sử dụng công thức nào có thể lấy được một lúc các mã kế hoạch ?

Mình đính kèm file nhờ ACE hỗ trợ giúp mình ah.

View attachment 225907
Mã:
B2=IF(LEFT($A2,LEN(B$1))=B$1,LEFT($A2,FIND("-",$A2)-1),"")
copy sang B2 : D4
Mã:
E2=INDEX(B2:D2,MAX((B2:D2<>"")*COLUMN(B2:D2))-1)
Kết thúc bằng ctrl+shift+enter
 
Chào ACE,

Mình có nội dung tại cột A và phải dùng hàm để lấy được các mã kế hoạch khác nhau tại các cột B, C, D. Mình nhờ ACE giúp mình tại cột E sử dụng công thức nào có thể lấy được một lúc các mã kế hoạch ?

Mình đính kèm file nhờ ACE hỗ trợ giúp mình ah.

View attachment 225907
Bạn thử:
E2=LEFT(A2,FIND(" -",A2))
 
Mình cảm ơn rất nhiều đến tất cả các bạn đã hỗ trợ mình.
Mình xin phép được mở rộng vấn đề ra một chút với các trường hợp:
- các mã kế hoạch nằm bất kỳ đâu trong text không nhất thiết nằm ở đầu
- sau các mã kế hoạch không có dấu hiệu nhận biết là "-" mà có thể là ký tự bất kỳ (":" , "+" v.v...) hoặc không có ký tự

1569895809674.png
 
Mình cảm ơn rất nhiều đến tất cả các bạn đã hỗ trợ mình.
Mình xin phép được mở rộng vấn đề ra một chút với các trường hợp:
- các mã kế hoạch nằm bất kỳ đâu trong text không nhất thiết nằm ở đầu
- sau các mã kế hoạch không có dấu hiệu nhận biết là "-" mà có thể là ký tự bất kỳ (":" , "+" v.v...) hoặc không có ký tự

View attachment 225928
Bạn đang đưa ra 1 đầu bài khá củ hành.
Bạn muốn đạt được kết quả thì bạn cần đưa ra cho "mã kế hoạch 1 điểm chung gì đó", hoặc 1 đặc điểm đặc biệt nào đó khác với các text còn lại trong chuỗi thì mới chia tách lọc được.
Dữ liệu của bạn có 3 mã, số kỹ tự cũng ko đồng nhất, vị trí thay đổi như vậy thì không thể nào lọc được.
 
Mình cảm ơn rất nhiều đến tất cả các bạn đã hỗ trợ mình.
Mình xin phép được mở rộng vấn đề ra một chút với các trường hợp:
- các mã kế hoạch nằm bất kỳ đâu trong text không nhất thiết nằm ở đầu
- sau các mã kế hoạch không có dấu hiệu nhận biết là "-" mà có thể là ký tự bất kỳ (":" , "+" v.v...) hoặc không có ký tự

View attachment 225928
Bài này của bạn vẫn có thể tìm được. Nếu không dùng công thức thì dùng vba.
 
Bạn đang đưa ra 1 đầu bài khá củ hành.
Bạn muốn đạt được kết quả thì bạn cần đưa ra cho "mã kế hoạch 1 điểm chung gì đó", hoặc 1 đặc điểm đặc biệt nào đó khác với các text còn lại trong chuỗi thì mới chia tách lọc được.
Dữ liệu của bạn có 3 mã, số kỹ tự cũng ko đồng nhất, vị trí thay đổi như vậy thì không thể nào lọc được.
Trước hết mình cảm ơn bạn đã đóng góp ý kiến, thứ nữa mình xin phép được nói rõ thêm: phần data được lấy ra từ hệ thống kế toán Oracle. Nội dung từ hệ thống kế toán Oracle thì mình ko kiểm soát được.

Nếu data do mình nhập liệu và quản lý mình sẽ cho "mã kế hoạch 1 điểm chung gì đó".

Một lần nữa cảm ơn bạn rất nhiều.
 
Bạn lập file mới theo ý bài 4 của bạn rồi gửi lên mới có cái mà test.
Với nội dung như bài 4 đặt ra & mẫu của bài 1, có lẽ vẫn giải quyết được
Mình có phát triển hàm trong file (3 dòng bôi vàng) để lấy mã kế hoạch tại bất kỳ vị trí nào, nhưng mình chưa giải quyết được phần điều kiện rỗng " ", bạn xem xét giúp mình nhé.
 

File đính kèm

  • ham lay chuoi new.xlsx
    11.7 KB · Đọc: 14
Mình có phát triển hàm trong file (3 dòng bôi vàng) để lấy mã kế hoạch tại bất kỳ vị trí nào, nhưng mình chưa giải quyết được phần điều kiện rỗng " ", bạn xem xét giúp mình nhé.
Tách chuỗi bằng dấu cách?
Lấy chuỗi con có những ký tự bắt đầu trong 1 vùng cho trước?
 

File đính kèm

  • ham lay chuoi new.xlsm
    18.1 KB · Đọc: 17
Mình có phát triển hàm trong file (3 dòng bôi vàng) để lấy mã kế hoạch tại bất kỳ vị trí nào, nhưng mình chưa giải quyết được phần điều kiện rỗng " ", bạn xem xét giúp mình nhé.
Dùng thử công thức này
Mã:
B2=IF(NOT(ISERROR(FIND(B$1,$A5))),MID(SUBSTITUTE($A5," ",REPT(" ",100)),FIND(B$1,SUBSTITUTE($A5," ",REPT(" ",100))),100),"")
---
Có thể thử hàm tự tạo dưới đây
Mã:
Function Tach(Nguon)
Dim Chuoi
Dim i, j, k
For Each Chuoi In Split(Nguon)
    If Len(Chuoi) > 5 Then
        If Left(Chuoi, 2) = UCase(Left(Chuoi, 2)) Then
            For j = Len(Chuoi) To 1 Step -1
                If IsNumeric(Mid(Chuoi, j, 1)) = True Then
                    k = k + 1
                Else
                    If k > 5 Then
                        Tach = Chuoi
                        Exit For
                    Else
                        k = 0
                    End If
                End If
            Next j
            If k > 5 Then Exit For
        End If
    End If
Next Chuoi
End Function
 
Lần chỉnh sửa cuối:
Dùng thử công thức này
Mã:
B2=IF(NOT(ISERROR(FIND(B$1,$A5))),MID(SUBSTITUTE($A5," ",REPT(" ",100)),FIND(B$1,SUBSTITUTE($A5," ",REPT(" ",100))),100),"")
---
Có thể thử hàm tự tạo dưới đây
Mã:
Function Tach(Nguon)
Dim Chuoi
Dim i, j, k
For Each Chuoi In Split(Nguon)
    If Len(Chuoi) > 5 Then
        If Left(Chuoi, 2) = UCase(Left(Chuoi, 2)) Then
            For j = Len(Chuoi) To 1 Step -1
                If IsNumeric(Mid(Chuoi, j, 1)) = True Then
                    k = k + 1
                Else
                    If k > 5 Then
                        Tach = Chuoi
                        Exit For
                    Else
                        k = 0
                    End If
                End If
            Next j
            If k > 5 Then Exit For
        End If
    End If
Next Chuoi
End Function
Mình đã thử data và nó hoạt động thật tuyệt vời, một lần nữa cảm ơn bạn rất nhiều.
Bài đã được tự động gộp:

Tách chuỗi bằng dấu cách?
Lấy chuỗi con có những ký tự bắt đầu trong 1 vùng cho trước?
Bạn vui lòng cho mình hỏi hàm GPE làm hàm gì vậy ? Vì mình tìm trong excel không thấy có hàm này, mình đang sử dụng MS Office Professional Plus 2013 x64
 
Bạn vui lòng cho mình hỏi hàm GPE làm hàm gì vậy ? Vì mình tìm trong excel không thấy có hàm này, mình đang sử dụng MS Office Professional Plus 2013 x64
Gpe() là hàm tự tạo, viết bằng VBA, khi mở file phải chọn Enable Macros, chỉ trong file đó, dữ liệu "y chang" như trong file đó là dùng được, các file khác "không có"
Muốn xem nội dung VBA viết thì bạn ấn 2 phím Alt và F11.
 
Mình có phát triển hàm trong file (3 dòng bôi vàng) để lấy mã kế hoạch tại bất kỳ vị trí nào, nhưng mình chưa giải quyết được phần điều kiện rỗng " ", bạn xem xét giúp mình nhé.
Góp thêm giải pháp: Không cần dùng các cột chi tiết B/C/D, trích lọc các mã cần lấy cho 1 cột duy nhất, bằng công thức:
Mã:
B2=IF(A2="","",TRIM(LEFT(SUBSTITUTE(MID(SUBSTITUTE(A2,"-"," "),LOOKUP(LEN(A2),FIND($C$1:$E$1,A2)),LEN(A2))," ",REPT(" ",100)),100)))
Enter, fill xuống.

Nếu chắc chắn sau mỗi mã hàng có 1 khoảng trắng thì công thức sẽ gọn hơn:
Mã:
B2=IF(A2="","",TRIM(LEFT(SUBSTITUTE(MID(A2,LOOKUP(LEN(A2),FIND($C$1:$E$1,A2)),LEN(A2))," ",REPT(" ",100)),100)))
Enter, fill xuống.

Thân
 

File đính kèm

  • ham lay chuoi new.xlsx
    11.9 KB · Đọc: 16
Góp thêm giải pháp: Không cần dùng các cột chi tiết B/C/D, trích lọc các mã cần lấy cho 1 cột duy nhất, bằng công thức:
Mã:
B2=IF(A2="","",TRIM(LEFT(SUBSTITUTE(MID(SUBSTITUTE(A2,"-"," "),LOOKUP(LEN(A2),FIND($C$1:$E$1,A2)),LEN(A2))," ",REPT(" ",100)),100)))
Enter, fill xuống.

Nếu chắc chắn sau mỗi mã hàng có 1 khoảng trắng thì công thức sẽ gọn hơn:
Mã:
B2=IF(A2="","",TRIM(LEFT(SUBSTITUTE(MID(A2,LOOKUP(LEN(A2),FIND($C$1:$E$1,A2)),LEN(A2))," ",REPT(" ",100)),100)))
Enter, fill xuống.

Thân
Trước hết cảm ơn bạn rất nhiều đã đóng góp ý kiến, mình xin trao đổi thêm chỗ: "Không cần dùng các cột chi tiết B/C/D" nhưng công thức mình lại thấy sử dụng $C$1:$E$1 => mình del 3 cột này đi, có cách nào thay thế chỗ này ko bạn ?
 
Trước hết cảm ơn bạn rất nhiều đã đóng góp ý kiến, mình xin trao đổi thêm chỗ: "Không cần dùng các cột chi tiết B/C/D" nhưng công thức mình lại thấy sử dụng $C$1:$E$1 => mình del 3 cột này đi, có cách nào thay thế chỗ này ko bạn ?
  • Muốn bỏ $C$1:$E$1 đi cũng được, nhưng bạn sẽ phiền vì phải thay bằng mảng chứa các mã yêu cầu lọc, như: {"SC","KH","VTU"} (Xem Sheet "GPE_Capnhat1"). Khi mã thay đổi hoặc có mã mới phải điều chỉnh bổ sung vào công thức.
  • Hoặc tạo 1 sheet khác liệt kê các Mã yêu cầu lọc, dù có bổ sung nhiều mã, nó cũng linh hoạt xử lý và cũng không ảnh hưởng đến công thức (Xem Sheet "GPE_Capnhat2")
Thân
 

File đính kèm

  • ham lay chuoi new.xlsx
    18.4 KB · Đọc: 11
Web KT
Back
Top Bottom