Cut chuỗi kí tự có điều kiện!!!!!

Liên hệ QC

vuvietquang90

Thành viên chính thức
Tham gia
29/10/15
Bài viết
68
Được thích
0
E có 1 cột gồm 3 dòng khác nhau chứa chuỗi kí tự, ví dụ dòng a1 "ada sdas dasd (01.01.15-31.01.15) AB01-022asdasdasdasda" và dòng a2 "ada sdas dasd (01.01.15-31.01.15) CD01-02asdasdasdasda" và dòng a3 "ada sdas dasd (01.01.15-31.01.15) EF01-02asdasdasdasda"
Ở cột bên cạnh e muốn lấy ra kí tự AB01-022, CD01-02 và EF01-02
E có dùng hàm sau
=IF(COUNTIF(A1,"*AB*"),MID(A1,FIND("AB",A1),8),IF(COUNTIF(A1,"*CD*"),MID(A1,FIND("CD",A1),8),IF(COUNTIF(A1,"*EF*"),MID(A1,FIND("EF",A1),8),"")))
nhưng khi chạy ra thì nó sẽ lấy cả 8 kí tự ví dụ AB01-022 thì ok, còn 7 kí tự thì nó vẫn dính những kí tự đằng sau vào ví dụ CD01-02a và EF01-02a
Các cao thủ có cách nào chèn thêm công thức vào hàm phía trên để hoàn thiện nó k?, tính đc 7 kí tự và lấy đúng 7 kí tự, giúp e với
Các bác xem file đính kèm nhé
 

File đính kèm

Lần chỉnh sửa cuối:
Mã:
=mid(a1,find(" ",a1)+1,len(a1)-min(if(isnumber(--left(right(a1,row(indirect("1:"&len(a1)))),1)),len(right(a1,row(indirect("1:"&len(a1))))),""))+1-find(" ",a1))

Công thức mảng nên phải dùng Ctrl+Shift+Enter để kết thúc nha
 
E có thử áp công thức của bác vào mà nó k ra là tn nhỉ
 
Nó ra thiếu mất chữ cái đầu bác ah, ab01-022 thì nó nhảy ra thành b01-022
 
Nó ra thiếu mất chữ cái đầu bác ah, ab01-022 thì nó nhảy ra thành b01-022​



 
E có 1 cột gồm 3 dòng khác nhau chứa chuỗi kí tự, ví dụ dòng a1 "adasdasdasd AB01-022asdasdasdasda" và dòng a2 "adasdasdasd CD01-02asdasdasdasda" và dòng a3 "adasdasdasd EF01-02asdasdasdasda"
Ở cột bên cạnh e muốn lấy ra kí tự AB01-022, CD01-02 và EF01-02
E có dùng hàm sau
=IF(COUNTIF(A1,"*AB*"),MID(A1,FIND("AB",A1),8),IF(COUNTIF(A1,"*CD*"),MID(A1,FIND("CD",A1),8),IF(COUNTIF(A1,"*EF*"),MID(A1,FIND("EF",A1),8),"")))
nhưng khi chạy ra thì nó sẽ lấy cả 8 kí tự ví dụ AB01-022 thì ok, còn 7 kí tự thì nó vẫn dính những kí tự đằng sau vào ví dụ CD01-02a và EF01-02a
Các cao thủ có cách nào chèn thêm công thức vào hàm phía trên để hoàn thiện nó k?, tính đc 7 kí tự và lấy đúng 7 kí tự, giúp e với
Các bác xem file đính kèm nhé
Dùng công thức này xem sao:
Mã:
=MID(A1,FIND("-",A1)-4,5)&IF(ISNUMBER(MID(A1,FIND("-",A1)+3,1)*1),MID(A1,FIND("-",A1)+1,3),MID(A1,FIND("-",A1)+1,2))
Kết thúc bằng phím Enter
 
Lần chỉnh sửa cuối:
Dùng công thức này xem sao:
Mã:
=MID(A1,FIND("-",A1)-4,5)&IF(ISNUMBER(MID(A1,FIND("-",A1)+3,1)*1),MID(A1,FIND("-",A1)+1,3),MID(A1,FIND("-",A1)+1,2))
Kết thúc bằng phím Enter
rất cám ơn bác nhưng trong chuỗi của e có giai đoạn ngày tháng ví dụ 01.01.15 - 31.01.15 nên chạy công thức này vào nó lại lấy của period bác ah ví dụ 15-31
 
rất cám ơn bác nhưng trong chuỗi của e có giai đoạn ngày tháng ví dụ 01.01.15 - 31.01.15 nên chạy công thức này vào nó lại lấy của period bác ah ví dụ 15-31
Muốn không mất thời gian thì đưa File có dữ liệu gần giống File thật lên! Đưa dữ liệu 1 đằng mong muốn 1 kiểu thì có mà đợi đến .......:=\+:=\+:=\+:=\+:=\+:=\+:=\+
 
Nó ra thiếu mất chữ cái đầu bác ah, ab01-022 thì nó nhảy ra thành b01-022​


Công thức ở bài #3 áp dụng với File up lên ở bài #1 nếu thao tác đúng như mình nói sẽ cho ra kết quả chính xác - việc bạn áp dụng công

thức vào File nhưng không cho kết quả đúng là do bạn. Còn với File lúc sau này thì không có gì để nói cả- nó khác hoàn toàn so

với File bạn đưa lên lúc ban đầu. Bạn có thấy mất thời gian không....
 
Lần chỉnh sửa cuối:
Code dưới đây có lẽ đáp ứng yêu cầu của bạn:
PHP:
Option Explicit
Function TextAfterLastSpace(rCell As Range) As String
    TextAfterLastSpace = Trim(Mid(rCell, InStrRev(rCell, " ") + 1, 256))
End Function
Sub abc()
With ActiveSheet.UsedRange
   .Replace What:="| Management and operation charge for 8 months", Replacement:="", LookAt:=xlPart
   .Replace What:="(5,500VNÐ/m2/tháng)", Replacement:="", LookAt:=xlPart
   .Replace What:="(WHOLE)", Replacement:="", LookAt:=xlPart
   .Replace What:=" (7,000VN?/m2/tháng)", Replacement:="", LookAt:=xlPart
    End With
   Call LoaiBo
End Sub
Sub LoaiBo()
   Dim LR As Range, cell As Range
   Set LR = Range("A1:A" & Range("A1").End(xlDown).Row & "")
     For Each cell In LR
       cell.Value = WorksheetFunction.Trim(cell.Value)
     Next cell
End Sub
 
Lần chỉnh sửa cuối:
công thức ở bài #3 áp dụng với file up lên ở bài #1 nếu thao tác đúng như mình nói sẽ cho ra kết quả chính xác - việc bạn áp dụng công

thức vào file nhưng không cho kết quả đúng là do bạn. Còn với file lúc sau này thì không có gì để nói cả- nó khác hoàn toàn so

với file bạn đưa lên lúc ban đầu. Bạn có thấy mất thời gian không....
vâng so rry bác! E sẽ rút kinh nghiệm lần sau, công thức của bác khi áp vào file ban đầu là đúng rồi, bác có thể sửa lại cho e 1 chút để khớp với file lúc sau k? E muốn lấy ra ví dụ sl01-06 hoặc sl01-106 dính kí tự khác khi chuỗi cần lấy có 7 và 8 kí tự
cám ơn bác
 
Web KT

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

Back
Top Bottom