Các phương pháp tách họ và tên đề nghị post ở đây

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
9,586
Được thích
11,470
Điểm
1,560
Tách số ra khỏi chữ:

' chuoi là chuỗi cần tách
Dim chuoiKT(0 To 1) ' 0 sẽ là chuỗi số và 1 sẽ là chuỗi mẫu tự
chuoiKT(0) = chuoi
chuoiKT(1) = chuoi
For i = 1 To Len(chuoi)
Mid(chuoiKT(-IsNumeric(Mid(chuoi, i, 1))), i, 1) = " " ' ký tự không đúng dạng thì đổi thành khoảng trắng
Next i
chuoiKT(0) = Split(Application.Trim(chuoiKT(0)), " ")
chuoiKT(1) = Split(Application.Trim(chuoiKT(1)), " ")
 
Lần chỉnh sửa cuối:

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
9,586
Được thích
11,470
Điểm
1,560
RX chỉ hiệu quả khi điều kiện rất phức tạp
Nếu chuỗi chỉ là ký tự alpha và số thì RX chưa chắc đã ngắn gọn hơn

' chuoi là chuỗi cần tách
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "(\D+)|(\d+)"
For Each Match In .Execute(chuoi)
chuoiMT= chuoiMT & " " & Match.Submatches.Item(0)
chuoiSO= chuoiSO & " " & Match.Submatches.Item(1)
Next Match
MsgBox chuoiMT & vbNewLine & chuoiSO ' chú ý: cần Application.Trim
End With
 

dungkhathuy

Thành viên mới
Tham gia ngày
21 Tháng tám 2019
Bài viết
6
Được thích
0
Điểm
13
Tuổi
41
Công thức được mà @@
Mã:
B2=LOOKUP(1E+36,--LEFT(A2,ROW(INDIRECT("1:"&LEN(A2)))))
C2=MID(A2,LOOKUP(10^10,ROW(INDIRECT("1:"&LEN(A2)))/--(ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))=FALSE)),1)
D2=LOOKUP(1E+36,--RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2)))))
hay quá bạn ơi, công thức đơn giản, dễ dùng, chỉ cần cắt khoản trắng ở ô nguồn nữa là kết quả ok hết, thanks
 

huythutc

Thành viên mới
Tham gia ngày
11 Tháng bảy 2011
Bài viết
4
Được thích
0
Điểm
363
Giúp em với em muốn làm công thức với yêu cầu như này mà chưa làm đc:
A1=6.0Cột B1 chọn là A
A1=5.5Cột B1 chọn là B
A1=5.0Cột B1 chọn là C
A1=4.5Cột B1 chọn là D
A1=4.0Cột B1 chọn là E
 

phulien1902

GPE - My love
Tham gia ngày
6 Tháng bảy 2013
Bài viết
3,459
Được thích
4,323
Điểm
560
Nơi ở
Hải Phòng
Giúp em với em muốn làm công thức với yêu cầu như này mà chưa làm đc:
A1=6.0Cột B1 chọn là A
A1=5.5Cột B1 chọn là B
A1=5.0Cột B1 chọn là C
A1=4.5Cột B1 chọn là D
A1=4.0Cột B1 chọn là E
Bạn thử:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1")) Is Nothing Then
        Exit Sub
    Else
        Select Case Range("A1")
    Case Is = 60
        Range("B1").Value = "A"
    Case Is = 55
        Range("B1").Value = "B"
    Case Is = 50
        Range("B1").Value = "C"
    Case Is = 45
        Range("B1").Value = "D"
    Case Is = 40
        Range("B1").Value = "E"
    End Select
    End If
End Sub
 

chothadiem

Thành viên hoạt động
Tham gia ngày
29 Tháng mười 2018
Bài viết
168
Được thích
35
Điểm
170
Tuổi
33
Thân ái chào anh chị và các bạn!
Xin giúp đỡ tôi vấn đề sau:
Trong ô A1 có nội dung "Anh chẳng trở về thì anh đi đi anh nhé!"
1_Trường hợp 1: ở ô A2 Chỉ lấy 2 từ đầu "Anh chẳng" trong nội dung nêu trên (ô A1)
Không xét đến ký tự mà chỉ luôn quy định lấy 02 từ đầu tiên
2_Trường hợp 2: ở ô A3 bỏ 2 từ đầu tiên chỉ lấy những từ còn lại sau khi đã bỏ 2 từ đầu tiên
Cụ thể sau khi đã bỏ 2 từ đầu tiên đi thì nội dung ô A3 sẽ lấy là :"trở về thì anh đi đi anh nhé!"
Mở rộng hơn ra nội dung ô có thể gồm nhiều từ nhưng đều lấy 02 từ đầu tiên và bỏ 02 từ đầu tiên đi
** Ghi chú: không xét đến ký tự mà chỉ xét đến từ.
Cho tôi hỏi có thể làm được như vấn đề tôi nêu không ạ? hay phải xét đến cả ký tự?
Xin cảm ơn!
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
9,586
Được thích
11,470
Điểm
1,560
Mã:
B1=TRIM(LEFT(SUBSTITUTE(TRIM(A1)," ",REPT(" ", 100)),150))
C1=MID(TRIM(A1),LEN(B1)+2,LEN(A1))
"Làm được" cái mốc xì. Bạn chưa biết thớt này, chuyên gia được voi đòi tiên, một khi có đáp án rồi rồi sẽ thêm 1 mớ đòi hỏi nữa.

Xem ở dưới đây, bài #10 (nới rộng yêu cầu), và bài #18 (đòi hỏi tốc độ)

 

befaint

|||||||||||||
Tham gia ngày
6 Tháng một 2011
Bài viết
9,571
Được thích
11,221
Điểm
1,560
"Làm được" cái mốc xì. Bạn chưa biết thớt này, chuyên gia được voi đòi tiên, hỏi vậy nhưng rồi sẽ thêm 1 mớ đòi hỏi nữa.

Xem ở dưới đây, bài #10 (nới rộng yêu cầu), và bài #18 (đòi hỏi tốc độ)
Em gửi bài xong mới để ý, lỡ rồi định xóa lại thôi..
 

chothadiem

Thành viên hoạt động
Tham gia ngày
29 Tháng mười 2018
Bài viết
168
Được thích
35
Điểm
170
Tuổi
33
"Làm được" cái mốc xì. Bạn chưa biết thớt này, chuyên gia được voi đòi tiên, một khi có đáp án rồi rồi sẽ thêm 1 mớ đòi hỏi nữa.

Xem ở dưới đây, bài #10 (nới rộng yêu cầu), và bài #18 (đòi hỏi tốc độ)

em gửi bài rồi anh phuoccam mới nói em biết, lần sau em rút kinh nghiệm ạ!
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
9,586
Được thích
11,470
Điểm
1,560
em gửi bài rồi anh phuoccam mới nói em biết, lần sau em rút kinh nghiệm ạ!
Tôi chưa nói đến chuyện nhiều bài.
Ở đây tôi chỉ mách cho bạn kia là giải pháp của bạn ấy chưa đạt đối với các yêu cầu khó khăn của bạn.
1. Thêm yêu cầu: được voi đòi tiên
2. Đòi công thức nhanh nhất: ăn mày đòi xôi gấc
 

Nguyen_Binh1988

Thành viên mới
Tham gia ngày
19 Tháng một 2019
Bài viết
6
Được thích
0
Điểm
13
Tuổi
32
hello all!
e có vđe về hàm này mong mọi ng giúp :

e có chuỗi ký tự sau : GP-12345-M1A-5-05

E muốn lấy ký tự : "12345-M1A" thì làm như thế nào?
dựa vào "-" để tách vì chuỗi đó dài ngắn khác nhau n e muốn lấy sau "-" thứ 1 đến trc "-" thứ 3

có thể sd hàm hoặc code(lặp lại nhiều dòng)

tks all!
 

hocexcel_1991

Bắt đầu học Excel
Tham gia ngày
9 Tháng bảy 2018
Bài viết
467
Được thích
856
Điểm
335
Nơi ở
Từ Sơn, Bắc Ninh
hello all!
e có vđe về hàm này mong mọi ng giúp :

e có chuỗi ký tự sau : GP-12345-M1A-5-05

E muốn lấy ký tự : "12345-M1A" thì làm như thế nào?
dựa vào "-" để tách vì chuỗi đó dài ngắn khác nhau n e muốn lấy sau "-" thứ 1 đến trc "-" thứ 3

có thể sd hàm hoặc code(lặp lại nhiều dòng)

tks all!
Công thức
Mã:
=TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",100),3),FIND("-",A1)+1,100))
 

TDHien59

Thành viên mới
Tham gia ngày
15 Tháng ba 2007
Bài viết
34
Được thích
8
Điểm
665
Chào các bạn.
Để không dùng VBA, mình có vài công thức các bạn test thử thế nào nhé.
Giả sử ô A1 có chứa "Họ Chữ lót Tên"
Lấy Họ :
=LEFT(A4,FIND(" ",A4,1))

Lấy Họ và Chữ lót :
=LEFT(A4,FIND("*",SUBSTITUTE(A4," ","*",LEN(A4)-LEN(SUBSTITUTE(A4," ",""))))-1)

Lấy Tên :
=RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1," ","*",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))
Thân !
Bạn cho hỏi mình muốn tách lấy chữ lót và tên thì làm thế nào?
Ví dụ ô A1 chứa : Nguyễn Thị Kiều Diễm Minh Hương.
Mình muốn lấy hai từ cuối là Minh Hương có được không?
Cảm ơn.
 

khieukienag

Thành viên thường trực
Tham gia ngày
29 Tháng tư 2008
Bài viết
257
Được thích
162
Điểm
695
Nơi ở
An Giang
Tôi học trên diễn đàn và làm đơn giản như thế nầy:
1. Tên: Dùng công cụ tìm kiếm và thay thế sẽ được tên.
2. Họ đệm: Có tên rồi thì dùng LEFT để cắt được họ đệm
TachTen.gif
 

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia ngày
8 Tháng sáu 2006
Bài viết
11,632
Được thích
17,608
Điểm
1,860
Bạn cho hỏi mình muốn tách lấy chữ lót và tên thì làm thế nào?
Ví dụ ô A1 chứa : Nguyễn Thị Kiều Diễm Minh Hương.
Mình muốn lấy hai từ cuối là Minh Hương có được không?
Nếu tên người cụt lũn, không có đệm (lót) thì lấy răng? ví dụ như Ngô Diễm?
 
Top Bottom