Trợ giúp cách tách chuỗi theo điều kiện

Liên hệ QC

yolocongtan

Thành viên mới
Tham gia
4/10/13
Bài viết
42
Được thích
1
Mong các Pro trợ giúp. Do phần mềm nhập liệu học sinh bị hư nên không xài nữa giờ chuyển qua phần mêm mới. phải nhập liệu lại nhưng cấu trúc nó khác nhau. nên phải xử lý file excel rùi mới up lên được.hixxx

Mình có dữ liệu như trong file đính kèm. Giờ mình muốn tách dữ liệu ở A1 sao cho ra kết quả như B1.
Mong được giúp đỡ. Thanks nhìu
 

File đính kèm

  • Chuoi-Excel.xlsx
    9.2 KB · Đọc: 28
Mong các Pro trợ giúp. Do phần mềm nhập liệu học sinh bị hư nên không xài nữa giờ chuyển qua phần mêm mới. phải nhập liệu lại nhưng cấu trúc nó khác nhau. nên phải xử lý file excel rùi mới up lên được.hixxx

Mình có dữ liệu như trong file đính kèm. Giờ mình muốn tách dữ liệu ở A1 sao cho ra kết quả như B1.
Mong được giúp đỡ. Thanks nhìu
Lọ mọ thử cách này xem thế nào nhé bạn!!
 

File đính kèm

  • Chuoi-Excel.xlsx
    9.8 KB · Đọc: 14
Thank bác, nhưng mình muốn lồng IF vào C1 thì chạy không ra đúng kết quả:
=IF(ISERROR(FIND("<Học Sinh",A1)),MID(A1,FIND(CHAR(34)&">",A1)+2,FIND("</Học Sinh>",A1)-FIND(CHAR(34)&">",A1)-2),"")
.Tức là nếu tìm thấy <Học Sinh thì chạy mid nếu không tìm thấy thì không làm gì cả.
Xem giúp mình
 
Thank bác, nhưng mình muốn lồng IF vào C1 thì chạy không ra đúng kết quả:
=IF(ISERROR(FIND("<Học Sinh",A1)),MID(A1,FIND(CHAR(34)&">",A1)+2,FIND("</Học Sinh>",A1)-FIND(CHAR(34)&">",A1)-2),"")
.Tức là nếu tìm thấy <Học Sinh thì chạy mid nếu không tìm thấy thì không làm gì cả.
Xem giúp mình

thử như vầy xem:
Mã:
 =IF(IFERROR(SEARCH("<Học Sinh";A1;1);0)>0;IFERROR((MID(A1;FIND(CHAR(34)&">";A1)+2;FIND("</Học Sinh>";A1)-FIND(CHAR(34)&">";A1)-2));"");"")
 
Lần chỉnh sửa cuối:
Bạn dùng công thức này xem


=TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1,">",REPT(" ",1000)),"<",REPT(" ",1000)),4000,1000))
 
Mong các Pro trợ giúp. Do phần mềm nhập liệu học sinh bị hư nên không xài nữa giờ chuyển qua phần mêm mới. phải nhập liệu lại nhưng cấu trúc nó khác nhau. nên phải xử lý file excel rùi mới up lên được.hixxx

Mình có dữ liệu như trong file đính kèm. Giờ mình muốn tách dữ liệu ở A1 sao cho ra kết quả như B1.
Mong được giúp đỡ. Thanks nhìu
Tham gia một hàm tự tạo

Cú pháp :=Chuoi( Ô cần tách )
Mã:
Public Function Chuoi(DL)
Dim Tam, Tam1
Tam = Replace(DL, Chr(10), "")

With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "Link" & "[^>]+"
Tam1 = .Execute(Tam)(0)
.Pattern = ".+>([^<]+)<.+>([^<]+)<.+"
Chuoi = .Replace(Tam, "$1" & Chr(10) & Tam1 & ">" & Chr(10) & "$2")
End With

ActiveCell.WrapText = True
ActiveCell.EntireRow.AutoFit
End Function
 
thử như vầy xem:
Mã:
 =IF(IFERROR(SEARCH("<Học Sinh";A1;1);0)>0;IFERROR((MID(A1;FIND(CHAR(34)&">";A1)+2;FIND("</Học Sinh>";A1)-FIND(CHAR(34)&">";A1)-2));"");"")

Nó chỉ thực thi được một lần hả bạn, vì nếu trong A1 có nhìu <Học="Lớp 8">Nguyễn Văn B</Học Sinh>.........<Học="Lớp 8">Nguyễn Văn C</Học Sinh>......thì nó không chạy mấy thằng sau
 
Nó chỉ thực thi được một lần hả bạn, vì nếu trong A1 có nhìu <Học="Lớp 8">Nguyễn Văn B</Học Sinh>.........<Học="Lớp 8">Nguyễn Văn C</Học Sinh>......thì nó không chạy mấy thằng sau
Có lẽ là nên có file ví dụ với nhiều mẫu hơn
 
nè bạn, các bạn xem giúp mình
 

File đính kèm

  • Chuoi-Excel.xlsx
    9.3 KB · Đọc: 9
nè bạn, các bạn xem giúp mình
Nhanh chậm chưa biết vì số liệu quá ít.
Viết theo mẫu bài 9
Mã:
Public Function Chuoi(DL)
Dim i
DL = Replace(DL, "><L", ">L")
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = ">([^<]+)<"
For i = 0 To .Execute(DL).Count - 1
Chuoi = Chuoi & .Execute(DL)(i).submatches(0)
Next i
Chuoi = Replace(Chuoi, "/>", "")
End With
End Function
 
Web KT
Back
Top Bottom