Tách chuỗi ký tự (11 người xem)

Liên hệ QC

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

ba.ho_eis

Thành viên chính thức
Tham gia
1/4/10
Bài viết
52
Được thích
16
Em muốn tách chuỗi ký tự trong trường hợp này. Mong Anh Chị giúp đỡ.
Ví dụ: ABC#123GH#HKKH1212
ABCD#12HG#KHHHH

Trong file excel của em có rất nhiều mã hàng như vậy. Giờ em muốn láy chuỗi ký tự từ ký tự từ "#" đến ký tự "#"
Kết quả của VD trên là: 123GH VÀ 12HG

Em cần dùng công thức gì. Em cảm ơn A/C
 
Em muốn tách chuỗi ký tự trong trường hợp này. Mong Anh Chị giúp đỡ.
Ví dụ: ABC#123GH#HKKH1212
ABCD#12HG#KHHHH

Trong file excel của em có rất nhiều mã hàng như vậy. Giờ em muốn láy chuỗi ký tự từ ký tự từ "#" đến ký tự "#"
Kết quả của VD trên là: 123GH VÀ 12HG

Em cần dùng công thức gì. Em cảm ơn A/C

thử công thức này xem:
PHP:
=TRIM(MID(SUBSTITUTE(A1,"#",REPT(" ",255)),255,255))
 
Em muốn tách chuỗi ký tự trong trường hợp này. Mong Anh Chị giúp đỡ.
Ví dụ: ABC#123GH#HKKH1212
ABCD#12HG#KHHHH

Trong file excel của em có rất nhiều mã hàng như vậy. Giờ em muốn láy chuỗi ký tự từ ký tự từ "#" đến ký tự "#"
Kết quả của VD trên là: 123GH VÀ 12HG

Em cần dùng công thức gì. Em cảm ơn A/C
Thử hàm tự tạo này xem sao:
Ở cửa sô Excel - > ALT + F11 -> cửa sổ VBA mở ra -> Tab Insert Module -> Paste đoạn code này vào:
Mã:
Function Tach(Rng As String) As String
    Tach = Split(Rng, "#")(1)
End Function
Quay lại bảng tính, dùng hàm
Mã:
=Tach(chuỗi cần tách)
 
Thử sử dụng Text to Columns.

Cách thực hiện trong Excel 2003:

Chọn vùng dữ liễu cần tách, từ menu vào Data >Text to Columns, cửa sổ Convert Text to Columns Wizard - Step 1 of 3 xuất hiện, đánh dấu vào mục Delimited và nhấn Next, cửa sổ Convert Text to Columns Wizard - Step 2 of 3 xuất hiện, click vào hình vuông lớn bên phải mục Other và gõ dấu #, bây giờ khung Data preview bên dưới bạn sẽ thấy đã tách ra, nhấn nút Finish để kết thúc, bạn sẽ được kết quả tách.
 
Chơi thêm 2 cách tà đạo nữa.

Dùng code:
Ví dụ: Bạn có tên sheet là THEO_DOI, với vùng chứa dữ liệu là A5:A100

PHP:
Sub GPE()    

Sheets("THEO_DOI").Range("A5:A100").TextToColumns , OtherChar:="#", _        
           FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1))
           
           Range("A5").Select

End Sub

Dùng hàm cho B5,
Fill ngang và Fill xuống.

=TRIM(MID(SUBSTITUTE($A5,"#",REPT(" ",99)),(COLUMN(A$5)*99)-98,99))



 
Lần chỉnh sửa cuối:
Em muốn tách chuỗi ký tự trong trường hợp này. Mong Anh Chị giúp đỡ.
Ví dụ: ABC#123GH#HKKH1212
ABCD#12HG#KHHHH

Trong file excel của em có rất nhiều mã hàng như vậy. Giờ em muốn láy chuỗi ký tự từ ký tự từ "#" đến ký tự "#"
Kết quả của VD trên là: 123GH VÀ 12HG

Em cần dùng công thức gì. Em cảm ơn A/C
Mã:
Function Tachchuoi(St As String)
    Dim t As Long, i, kq
    t = InStr(St, "#")
    i = Right(St, Len(St) - t)
    kq = Left(i, InStr(i, "#") - 1)
    Tachchuoi = kq
End Function
=Tachchuoi(Ô cần tách)
 
Thử hàm tự tạo này xem sao:
Ở cửa sô Excel - > ALT + F11 -> cửa sổ VBA mở ra -> Tab Insert Module -> Paste đoạn code này vào:
Mã:
Function Tach(Rng As String) As String
    Tach = Split(Rng, "#")(1)
End Function
Quay lại bảng tính, dùng hàm
Mã:
=Tach(chuỗi cần tách)

nếu Rng không có "#" thì sẽ bị #value!
muốn tránh lỗi này phải dùng:
Tach = Split(Rng & "#", "#")(1)
 
Em muốn lấy ký tự đầu đến ký tự #. Em phải dùng công thức nào A/C.
Ví dụ:
[TABLE="width: 259"]
[TR]
[TD]3030SF/W#S5AY30#44IJUN05 =>3030SF/W
[/TD]
[/TR]
[TR]
[TD]30523MF/W#QWOVE32#44INOV27=>30523MF/W
[/TD]
[/TR]
[/TABLE]

Em cảm ơn.
 
Trường hợp em muốn lấy những ký tự từ phải đến # thì em phải dùng công thức nào ạ. Em thử rùng RIGHT nhưng ko được.
Anh Chị xem giúp em ạ.
Ví dụ: 3030SF/W#S5AY30#44IJUN05 ==> 44IJUN05
Em c
ảm ơn
 
Trường hợp em muốn lấy những ký tự từ phải đến # thì em phải dùng công thức nào ạ. Em thử rùng RIGHT nhưng ko được.
Anh Chị xem giúp em ạ.
Ví dụ: 3030SF/W#S5AY30#44IJUN05 ==> 44IJUN05
Em c
ảm ơn

Giả sử ô A 1 của bạn chứa chuỗi kia nếu muốn làm theo CT thì bạn dùng như thế này :

=RIGHT(A1,LEN(A1)-MAX(IFERROR(FIND("#",A1,ROW(INDIRECT("1:"&LEN(A1)))),0)))

CT kết thúc bằng CTRL+SHIFT+ENTER
 
Góp 1 công thức (Với trường hợp của bạn có 2 ký tự #).
A2 = 3030SF/W#S5AY30#44IJUN05
Kết quả tại B2:
B2 = RIGHT(A2,LEN(A2)-FIND("#",A2,FIND("#",A2)+1))

Lúc đầu em cũng đã nghĩ tới cách này , nhưng mà trường hợp nếu có nhiều dấu # thì cũng hơi mết đấy !
 
Trường hợp em muốn lấy những ký tự từ phải đến # thì em phải dùng công thức nào ạ. Em thử rùng RIGHT nhưng ko được.
Anh Chị xem giúp em ạ.
Ví dụ: 3030SF/W#S5AY30#44IJUN05 ==> 44IJUN05
Em c
ảm ơn
Chọn ô cần lấy. Bấm Ctrl + H.
Find What gõ: *#
Replace With: để trống
P/s: Lấy bên trái hoặc bên phải thì đều dùng Ctrl + H được hết.
 
Lúc đầu em cũng đã nghĩ tới cách này , nhưng mà trường hợp nếu có nhiều dấu # thì cũng hơi mết đấy !

Nhiều ký tự "#" thì lại dùng công thức tách họ tên cơ bản nhất:
Mã:
=TRIM(RIGHT(SUBSTITUTE(A1,"#",REPT(" ",1000)),1000))
Vậy thôi
 
Nhiều ký tự "#" thì lại dùng công thức tách họ tên cơ bản nhất:
Mã:
=TRIM(RIGHT(SUBSTITUTE(A1,"#",REPT(" ",1000)),1000))
Vậy thôi

Vâng ạ . Nhưng mà CT này của chú chỉ đúng trong trường hợp nếu sau dấu # cuối cùng <=1000 ký tự thôi, còn nếu nhiều hơn thì nó lấy sẽ bị thiếu, tức là nếu muốn dùng hàm này

ta phải biết trước độ dài của chuỗi cần lấy phải <=1000. Về mặt thực tế thì hiếm khi xảy ra trường hợp như thế nhưng trên phương diện lý thuyết

thì đúng là làm như vậy chưa triệt để lắm ạ
 
Lần chỉnh sửa cuối:
Vâng ạ . Nhưng mà CT này của chú chỉ đúng trong trường hợp nếu sau dấu # cuối cùng <=1000 ký tự thôi, còn nếu nhiều hơn thì nó lấy sẽ bị thiếu, tức là nếu muốn dùng hàm này

ta phải biết trước độ dài của chuỗi cần lấy phải <=1000. Về mặt thực tế thì hiếm khi xảy ra trường hợp như thế nhưng trên phương diện lý thuyết

thì đúng là làm như vậy chưa triệt để lắm ạ
Thay số 1000 thành LEN(A1) là được, đúng không?
Tuy nhiên, trong những trường hợp cụ thể cũng không cần quá máy móc, bởi trước giờ chắc chẳng ai nhìn thấy chuỗi trong 1 cell mà lại có độ dài lớn đến vài ngàn ký tự
Nói chung cứ thực tế cho nó gọn!
---------------
Ngoài lề: Ngày xưa tôi cũng rất "nghiêm khắc" trong mấy vấn đề "chính xác" này. Tôi ép mình phải viết công thức đúng cho mọi trường hợp.... Bây giờ thay đổi rồi (thay đổi tư duy)... Cái gì đáng "ép" thì "ép", không đáng hãy cho qua. Mềm dẻo chút cho cuộc sống đở vất vả
Ẹc... Ẹc...
 
Web KT

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

Back
Top Bottom