Tách các ký tự trong chuỗi ! (1 người xem)

Người dùng đang xem chủ đề này

kimloan96.414

Thành viên hoạt động
Tham gia
28/11/12
Bài viết
103
Được thích
62
Nghề nghiệp
Bussines
Dạ em kính nhờ Quý thầy cô anh chị giúp em xử lý chuỗi trong file em đính kèm. Em xin cảm ơn
 

File đính kèm

Các ô khoảng trắng từ B3 -> M3 là thông tin của ô A4 mà, đâu có dùng được để áp dụng cho ô A5 đâu, bạn sai ở ô tô đỏ là đúng rồi còn gì.
 
Dạ em kính nhờ Quý thầy cô anh chị giúp em xử lý chuỗi trong file em đính kèm. Em xin cảm ơn

Công việc có nhất thiết áp dụng công thức không? vì dùng Text to colums cũng đáp ứng yêu cầu mà.

Text to colums/ Delimited/ Next/ trong mục Delimiters, chọn Space/ Next/ kết thúc...

Sử dụng định giới, các ký tự như dấu phẩy, hoặc tab ngăn cách từng trường....

Hì, đấy là mình nói nếu không dùng công thức. Ngay trong cái có sẵn của Ẽxcel cũng tiện dụng...
 
Lần chỉnh sửa cuối:
Các ô khoảng trắng từ B3 -> M3 là thông tin của ô A4 mà, đâu có dùng được để áp dụng cho ô A5 đâu, bạn sai ở ô tô đỏ là đúng rồi còn gì.
Dạ: Các số trong các ô từ B3->M3 là số thứ tự của khoảng trắng trong chuỗi! Mục đích của những khoảng trắng này mình dựa vào nó để tách các chử trong chuỗi A4,A5 đó ạ!
 
Dạ: Các số trong các ô từ B3->M3 là số thứ tự của khoảng trắng trong chuỗi! Mục đích của những khoảng trắng này mình dựa vào nó để tách các chử trong chuỗi A4,A5 đó ạ!


Nếu mục đích chỉ là tách chữ trong chuỗi thì dùng cách trên của mình là Ok, khỏi cần công thức bạn ạ.
 
Công việc có nhất thiết áp dụng công thức không? vì dùng Text to colums cũng đáp ứng yêu cầu mà.

Text to colums/ Delimited/ Next/ trong mục Delimiters, chọn Space/ Next/ kết thúc...
Dạ: Em biết Text to column nhưng em muốn tìm ra một công thức chuẩn để lấy những khoảng trắng trong chuỗi.Anh chị để ý kỷ sẽ thấy khi áp dụng hàm FIND() cho khoảng trắng sau thì trong start_num sẽ bằng khoảng trắng trước nó cộng thêm 1 .Em cảm ơn anh chị nha!
 
Dạ: Em biết Text to column nhưng em muốn tìm ra một công thức chuẩn để lấy những khoảng trắng trong chuỗi.Anh chị để ý kỷ sẽ thấy khi áp dụng hàm FIND() cho khoảng trắng sau thì trong start_num sẽ bằng khoảng trắng trước nó cộng thêm 1 .Em cảm ơn anh chị nha!
Khi nào chán cái công thức kia thì dùng cái code này nhé. Hỏng ép nha.
PHP:
Sub tach_chu()
Dim tam, Kq(), dl(), i As Long, n As Byte, j As Byte
dl = Range([A4], [A65536].End(3)).Value
For i = 1 To UBound(dl)
   tam = Split(Application.Trim(dl(i, 1)), " ")
   If UBound(tam) > n Then n = UBound(tam) + 1
   ReDim Preserve Kq(1 To UBound(dl), 1 To n)
   For j = 0 To UBound(tam)
      Kq(i, j + 1) = tam(j)
   Next
Next
[B4].Resize(i - 1, n) = Kq
End Sub
 
Bạn muốn tìm khoảng trắng thì dùng công thức này:
Mã:
=IF(MID($A4,ROW(INDIRECT("1:"&LEN($A4))),1)=" ",ROW(INDIRECT("1:"&LEN($A4))),"")
(kết quả trả về kiểu mảng nhé: muốn xem kết quả thì bôi đen công thức tại thanh công thức và nhấn F9)
còn nếu bạn muốn tách từng từ trong chuỗi thì đây:tại ô B4
Mã:
=TRIM(MID(SUBSTITUTE(TRIM($A4)," ",REPT(" ",LEN($A4))),COLUMN(A:A)*LEN($A4),LEN($A4)))
 
Dạ: Em biết Text to column nhưng em muốn tìm ra một công thức chuẩn để lấy những khoảng trắng trong chuỗi.Anh chị để ý kỷ sẽ thấy khi áp dụng hàm FIND() cho khoảng trắng sau thì trong start_num sẽ bằng khoảng trắng trước nó cộng thêm 1 .Em cảm ơn anh chị nha!
vậy thì xài thử cái này xem
 

File đính kèm

Bạn muốn tìm khoảng trắng thì dùng công thức này:
Mã:
=IF(MID($A4,ROW(INDIRECT("1:"&LEN($A4))),1)=" ",ROW(INDIRECT("1:"&LEN($A4))),"")
(kết quả trả về kiểu mảng nhé: muốn xem kết quả thì bôi đen công thức tại thanh công thức và nhấn F9)
còn nếu bạn muốn tách từng từ trong chuỗi thì đây:tại ô B4
Mã:
=TRIM(MID(SUBSTITUTE(TRIM($A4)," ",REPT(" ",LEN($A4))),COLUMN(A:A)*LEN($A4),LEN($A4)))
Dạ em cảm ơn anh nhiều! Có cách nào lấy số thứ tự của ký tự trống trong công thức này không anh?

IF(MID($A4,ROW(INDIRECT("1:"&LEN($A4))),1)=" ",ROW(INDIRECT("1:"&LEN($A4))),"")
 
Lần chỉnh sửa cuối:
Bạn muốn tìm khoảng trắng thì dùng công thức này:
Mã:
còn nếu bạn muốn tách từng từ trong chuỗi thì đây:tại ô B4
[CODE]=TRIM(MID(SUBSTITUTE(TRIM($A4)," ",REPT(" ",LEN($A4))),COLUMN(A:A)*LEN($A4),LEN($A4)))
Công thức này ở [B4] ra kết quả sao ta ??? hình như "tờ eo teo huyền" Híc
Thân
 
vậy thì xài thử cái này xem
Dạ em cảm ơn anh Good-Luck nhiều! Như em đã thưa ở trên làm sao mình tìm được số thứ tự của kí tự trống trong chuỗi.Để khi tách chử ra thì mình chỉ việc đưa khoảng trống đó vào công thức mà thôi.Ví dụ:chử XUÂN=MID(A4,B3+1,(C3+1)-(B3+1))
theo công thức trên thì ta chỉ cần lấy start_num =B3+1 và
num_chars =(C3+1)-(B3+1)) và chử AI==MID(A4,C3+1,(D3+1)-(C3+1))......
 
Dạ em cảm ơn anh Good-Luck nhiều! Như em đã thưa ở trên làm sao mình tìm được số thứ tự của kí tự trống trong chuỗi.Để khi tách chử ra thì mình chỉ việc đưa khoảng trống đó vào công thức mà thôi.Ví dụ:chử XUÂN=MID(A4,B3+1,(C3+1)-(B3+1))
theo công thức trên thì ta chỉ cần lấy start_num =B3+1 và
num_chars =(C3+1)-(B3+1)) và chử AI==MID(A4,C3+1,(D3+1)-(C3+1))......
Sao tự nhiên làm khổ bản thân vậy? Công cụ có sẵn không chịu xài. Cứ đòi cái gì đâu hoài.
Mà thật sự giờ mình phải nói là bái phục những bạn giỏi công thức. Tư duy đáng nể thật. Mình chịu thua.
 
Sao tự nhiên làm khổ bản thân vậy? Công cụ có sẵn không chịu xài. Cứ đòi cái gì đâu hoài.
Mà thật sự giờ mình phải nói là bái phục những bạn giỏi công thức. Tư duy đáng nể thật. Mình chịu thua.

Tìm hiểu thêm công thức cũng là 1 cách học tốt, nhưng nếu sử dụng các tính năng sẵn có của Excel áp dụng thì đỡ mệt hơn.
(anh Hải muốn thêm Vợ Ba (VBA) nên xài VBA nhanh như chớp)
 
Sao tự nhiên làm khổ bản thân vậy? Công cụ có sẵn không chịu xài. Cứ đòi cái gì đâu hoài.
Mà thật sự giờ mình phải nói là bái phục những bạn giỏi công thức. Tư duy đáng nể thật. Mình chịu thua.
Dạ em biết là vậy! Nhưng đôi khi mình muốn sài cái mình tự nghĩ ra nó sẽ phù hợp cho những anh chị mới học Excel như tụi em.Thanks anh Hải nhiều!
 
Công thức này ở [B4] ra kết quả sao ta ??? hình như "tờ eo teo huyền" Híc
Thân
hihi, em nhầm, vậy em chữa cháy như thế này:ở ô B4
Mã:
=TRIM(MID(SUBSTITUTE(" "&TRIM($A4)," ",REPT(" ",LEN($A4))),COLUMN(A:A)*LEN($A4),LEN($A4)))
 
kimloan đã viết:
Dạ em cảm ơn anh nhiều! Có cách nào lấy số thứ tự của ký tự trống trong công thức này không anh? IF(MID($A4,ROW(INDIRECT("1:"&LEN($A4))),1)=" ",ROW(INDIRECT("1:"&LEN($A4))),"")
Thì giả sử đặt Name cho công thức trên là MA Bạn sử dụng công thức sau để lấy số thứ tự ký tự trống
Mã:
=IF(COLUMN(A:A)>COUNT(MA),"",SMALL(MA,COLUMN(A:A)))
 
Sao tự nhiên làm khổ bản thân vậy? Công cụ có sẵn không chịu xài. Cứ đòi cái gì đâu hoài.
Mà thật sự giờ mình phải nói là bái phục những bạn giỏi công thức. Tư duy đáng nể thật. Mình chịu thua.
vì kiến thức eo hẹp quá nên đành chịu vất vả thôi anh,
 
Lần chỉnh sửa cuối:
vì kiến thức eo hẹp quá nên đành chịu vất vả thôi anh,
nhưng nói gì thì nói chứ mình biết thân phận mình mà : VBên Anh vừa già vừa xấu trai vậy Cô nào chịu chứ -\\/.
Tưng tưng rồi, xin phép Smod, Mod xi- pam một cái
Đề nghị bạn Good-Luck rút lại lời phát biểu trên
Những thành viên thường xuyên sử dụng VBA trên diễn đàn không như bạn mô tả. Điển hình : Thầy Ptm, concogia,Tedaynui, Nghĩa Phúc, Quanghai, Hoàng Danh, Cadafi, Ba Tê .....thuộc hàng 7 tới 8 nút ( hơi chủ quan tí tẹo - tức là có cộng trừ 2 )..... chỉ có bác Sa QD tuy hơi già nhưng.....hổng có xấu, thầy Ndu tuy ....không được trắng nhưng....có duyên ngầm
Híc ( chưa nói tới một số thành viên mà mình chưa gặp mặt như thầy Sealand, Trung Chính, VietHoai, Bé Còi, nhapmon ........mình nghĩ cũng đẹp .......cực kỳ)
Túm lại
Đề nghị bạn Good-Luck rút lại lời phát biểu trên
 
Tưng tưng rồi, xin phép Smod, Mod xi- pam một cái...
em tự nói bản thân thôi mà, anh cò mạnh cảm quá, chẳng lẽ anh cò cũng... <đùa vui thôi >
Dạ em cảm ơn anh Good-Luck nhiều! Như em đã thưa ở trên làm sao mình tìm được số thứ tự của kí tự trống trong chuỗi.Để khi tách chử ra thì mình chỉ việc đưa khoảng trống đó vào công thức mà thôi.Ví dụ:chử XUÂN=MID(A4,B3+1,(C3+1)-(B3+1))
theo công thức trên thì ta chỉ cần lấy start_num =B3+1 và
num_chars =(C3+1)-(B3+1)) và chử AI==MID(A4,C3+1,(D3+1)-(C3+1))......

thich dùng find thì chiều luôn lỡ lún vào rồi đành đi cho nót

dòng trên mình đã thực hiện cách tìn thứ tự ô trống <trong 1 chuỗi> của dòng đầu tiên, nhưng stt ô trống trên chỉ để gắm thôi

Công thức chưa chuẩn rồi kìa. Mất 1 chữ cuối nếu không có bị thừa khoảng trắng vô tình

khác phục lỗi thiếu chữ cuối cùng

nhưng nói gì thì nói sử dụng SUBSTITUTE va Rept hay và đơn giản hơn nhiều < cái này để hài lòng chủ thớt thôi
 

File đính kèm

Lần chỉnh sửa cuối:
thich dùng find thì chiều luôn lỡ lún vào rồi đành đi cho nót

dòng trên mình đã thực hiện cách tìn thứ tự ô trống <trong 1 chuỗi> của dòng đầu tiên, nhưng stt ô trống trên chỉ để gắm thôi
Công thức chưa chuẩn rồi kìa. Mất 1 chữ cuối nếu không có bị thừa khoảng trắng vô tình
 
thich dùng find thì chiều luôn lỡ lún vào rồi đành đi cho nót

dòng trên mình đã thực hiện cách tìn thứ tự ô trống <trong 1 chuỗi> của dòng đầu tiên, nhưng stt ô trống trên chỉ để gắm thôi
Dạ: em cảm ơn anh Good-Luck nhiều! Anh Good-Luck ạ! Công thức anh làm rất hay nhưng trừ chử đầu tiên còn lại các chử sau có thêm 1 kí tự trắng nữa đó anh.Chắc là phải trừ cho 1 thôi anh!
 
Dạ: em cảm ơn anh Good-Luck nhiều! Anh Good-Luck ạ! Công thức anh làm rất hay nhưng trừ chử đầu tiên còn lại các chử sau có thêm 1 kí tự trắng nữa đó anh.Chắc là phải trừ cho 1 thôi anh!

Chẳng hiểu tại sao lại thích dùng FIND trong bài này? Trong khi dùng SUBSTITUTE rất ngắn gọn lại không bao giờ bị lỗi
 
thich dùng find thì chiều luôn lỡ lún vào rồi đành đi cho nót

dòng trên mình đã thực hiện cách tìn thứ tự ô trống <trong 1 chuỗi> của dòng đầu tiên, nhưng stt ô trống trên chỉ để gắm thôi
Em đã sửa lại công thức của em rồi! Anh Good-Luck vẫn để nguyên công thức của anh đi vẫn hữu dụng đấy.Công thức tách chử cũ:XUÂN=MID($A$4,B3+1,(C3+1)-(B3+1))
nay em sửa lại:=MID($A$4,B3+1,(C3)-(B3+1)).
Em xin chân thành cảm ơn anh chị rất nhiều đã giúp đở cho em trong quá trình tạo công thức trên! Xin kính chúc anh chị sức khỏe và thành đạt!
 

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

Back
Top Bottom