dunghtgiga
Thành viên chính thức


- Tham gia
- 31/1/15
- Bài viết
- 81
- Được thích
- 11
- 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.
View attachment 225907
B2=IF(LEFT($A2,LEN(B$1))=B$1,LEFT($A2,FIND("-",$A2)-1),"")
E2=INDEX(B2:D2,MAX((B2:D2<>"")*COLUMN(B2:D2))-1)
Bạn thử: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 đang đưa ra 1 đầu bài khá củ hành.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.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
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.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.
Nhờ bạn hướng dẫn giúp mình với, mình cảm ơn.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 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.Nhờ bạn hướng dẫn giúp mình với, mình cảm ơn.
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é.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
Tách chuỗi bằng dấu cách?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àyMì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é.
B2=IF(NOT(ISERROR(FIND(B$1,$A5))),MID(SUBSTITUTE($A5," ",REPT(" ",100)),FIND(B$1,SUBSTITUTE($A5," ",REPT(" ",100))),100),"")
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.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
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 x64Tá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?
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ó"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
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ì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é.
B2=IF(A2="","",TRIM(LEFT(SUBSTITUTE(MID(SUBSTITUTE(A2,"-"," "),LOOKUP(LEN(A2),FIND($C$1:$E$1,A2)),LEN(A2))," ",REPT(" ",100)),100)))
B2=IF(A2="","",TRIM(LEFT(SUBSTITUTE(MID(A2,LOOKUP(LEN(A2),FIND($C$1:$E$1,A2)),LEN(A2))," ",REPT(" ",100)),100)))
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 ?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:
Enter, fill xuống.Mã:B2=IF(A2="","",TRIM(LEFT(SUBSTITUTE(MID(SUBSTITUTE(A2,"-"," "),LOOKUP(LEN(A2),FIND($C$1:$E$1,A2)),LEN(A2))," ",REPT(" ",100)),100)))
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:
Enter, fill xuống.Mã:B2=IF(A2="","",TRIM(LEFT(SUBSTITUTE(MID(A2,LOOKUP(LEN(A2),FIND($C$1:$E$1,A2)),LEN(A2))," ",REPT(" ",100)),100)))
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 ?