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

snow25

Thành viên gắn bó
Tham gia ngày
24 Tháng bảy 2018
Bài viết
2,645
Được thích
2,552
Điểm
360
Rất cảm ơn bạn
Nhưng bạn ơi tôi chưa biết gì về CODE cả - tôi mới chập chững học excel mà . Bạn có thể chỉ tôi cách dùng CODE không ? Bạn làm ơn chỉ theo từng bước một nhé - cảm on ban
Cho dữ liệu vào Như bạn rồi bấm nút tách thế là xong cần gì biết code.
 

rynkbui

Thành viên mới
Tham gia ngày
26 Tháng sáu 2019
Bài viết
2
Được thích
0
Điểm
13
Nơi ở
HCM
Lấy Họ:
=LEFT(A1,LEN(A1)-FIND(" ",MID(A1,LEN(A1),1)&MID(A1,LEN(A1)-1,1)&MID(A1,LEN(A1)-2,1)&MID(A1,LEN(A1)-3,1)&MID(A1,LEN(A1)-4,1)&MID(A1,LEN(A1)-5,1)&MID(A1,LEN(A1)-6,1)&MID(A1,LEN(A1)-7,1)))
Cảm ơn anh. Nhưng cách này sẽ bị lỗi nếu như gặp TH cả họ tên dưới 7 ký tự, ví dụ: Lê Hà. Có cách nào để khắc phục không ạ. Em không biết dùng VBA =(
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,281
Được thích
9,857
Điểm
860
Nơi ở
Hà Nội
Cảm ơn anh. Nhưng cách này sẽ bị lỗi nếu như gặp TH cả họ tên dưới 7 ký tự, ví dụ: Lê Hà. Có cách nào để khắc phục không ạ. Em không biết dùng VBA =(
Mình có cách khác tổng quát hơn nhưng hơi khó hiểu:
Giả thiết A1 chưa "Nguyễn Duy Tuân"
Công thức lấy tên như sau:
=RIGHT(A1,LEN(A1)- FIND("*", SUBSTITUTE(A1," ","*", LEN(A1)-LEN( SUBSTITUTE(A1," ","")))))
 

rynkbui

Thành viên mới
Tham gia ngày
26 Tháng sáu 2019
Bài viết
2
Được thích
0
Điểm
13
Nơi ở
HCM
Mình có cách khác tổng quát hơn nhưng hơi khó hiểu:
Giả thiết A1 chưa "Nguyễn Duy Tuân"
Công thức lấy tên như sau:
=RIGHT(A1,LEN(A1)- FIND("*", SUBSTITUTE(A1," ","*", LEN(A1)-LEN( SUBSTITUTE(A1," ","")))))
Many thanks Đại ca. Cái này áp dụng tổng quát được luôn ấy
:<>
.Này nếu nói hiểu thì em hiểu được nhưng để nghĩ ra công thức thì em chưa tới trình :D Cảm ơn anh
 

giaiphap

==(^o^)==
Tham gia ngày
12 Tháng ba 2007
Bài viết
5,211
Được thích
4,834
Điểm
860
Many Cảm ơn Đại ca. Cái này áp dụng tổng quát được luôn ấy
:<>
.Này nếu nói hiểu thì em hiểu được nhưng để nghĩ ra công thức thì em chưa tới trình :D Cảm ơn anh
Thêm một cách nửa cho bạn.
Mã:
=TRIM(RIGHT(SUBSTITUTE(A1;" ";REPT(" ";200));200))
 
Tham gia ngày
10 Tháng mười 2017
Bài viết
2,885
Được thích
8,534
Điểm
360
Nơi ở
Sài Gòn
Many Cảm ơn Đại ca. Cái này áp dụng tổng quát được luôn ấy
:<>
.Này nếu nói hiểu thì em hiểu được nhưng để nghĩ ra công thức thì em chưa tới trình :D Cảm ơn anh
Thêm cách nữa để bạn tham khảo cho vui:
Mã:
B1=MID(A1,1/LOOKUP(2,1/FIND(" ",A1,ROW($1:$50)))+1,50)
Enter.

Thân
 

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
mình cần tách chuỗi 123456789(abc..)1234 thành 3 cột riêng biệt, gồm: cột 1 là 123456789, cột 2 là a,b,c.., cột 3 là 1234, trong đó (abc..) là một chữ trong bảng chữ cái abc.., cả nhà giúp mình với nhé, tks all
gui dien dan excel.png
 

snow25

Thành viên gắn bó
Tham gia ngày
24 Tháng bảy 2018
Bài viết
2,645
Được thích
2,552
Điểm
360

mrkoi89

Thành viên mới
Tham gia ngày
2 Tháng sáu 2012
Bài viết
1
Được thích
0
Điểm
363
Tuổi
31
Mình làm kiểu gì cũng lỗi lòi ra :( được 1 lúc lại lỗi
 

CHAOQUAY

Thành viên tích cực
Tham gia ngày
24 Tháng tám 2018
Bài viết
1,240
Được thích
1,323
Điểm
360
Không phải file của em. Nhưng tại em muốn coi thử nên tạo thử như vậy để xem code và học ạ
chạy thử code này
Mã:
Sub abc()
Dim Nguon
Dim Kq
Dim i, j, k, t
Nguon = Sheet1.Range("A2:A4")
ReDim Kq(1 To UBound(Nguon), 1 To 3)
For i = 1 To UBound(Nguon)
    k = ""
    For j = 2 To Len(Nguon(i, 1))
        If IsNumeric(Mid(Nguon(i, 1), j, 1)) = False Then
            k = k & Mid(Nguon(i, 1), j, 1)
        Else
            If IsNumeric(Mid(Nguon(i, 1), j - 1, 1)) = False Then
                Exit For
            End If
        End If
    Next j
    Kq(i, 2) = k
    t = Split(Replace(Nguon(i, 1), k, " "))
    Kq(i, 1) = t(0)
    Kq(i, 3) = t(1)
Next i
Sheet1.Range("B2:D4") = Kq
End Sub
 

nguyentinhhn

Thành viên chính thức
Tham gia ngày
3 Tháng mười 2007
Bài viết
83
Được thích
50
Điểm
680

File đính kèm

Lần chỉnh sửa cuối:

HieuCD

Chuyên gia GPE
Tham gia ngày
14 Tháng chín 2010
Bài viết
7,006
Được thích
13,676
Điểm
1,560
Không phải file của em. Nhưng tại em muốn coi thử nên tạo thử như vậy để xem code và học ạ
Code khác
Mã:
Sub ABC()
  Dim sArr(), Res()
  Dim i&, jD&, jC&, n
  sArr = Sheet1.Range("A2", Sheet1.Range("A1000000").End(xlUp)).Value
  ReDim Res(1 To UBound(sArr), 1 To 3)
  For i = 1 To UBound(sArr)
    n = Len(sArr(i, 1))
    jD = 0: jC = 0
    For j = 2 To n
      If IsNumeric(Mid(sArr(i, 1), j, 1)) = False And jD = 0 Then jD = j
      If IsNumeric(Mid(sArr(i, 1), j, 1)) And jD > 0 Then
        jC = j: Exit For
      End If
    Next j
    Res(i, 1) = Mid(sArr(i, 1), 1, jD - 1)
    Res(i, 2) = Mid(sArr(i, 1), jD, jC - jD)
    Res(i, 3) = Mid(sArr(i, 1), jC, n - jC + 1)
  Next i
  Sheet1.Range("B2:D2").Resize(UBound(Res)) = Res
End Sub
 

snow25

Thành viên gắn bó
Tham gia ngày
24 Tháng bảy 2018
Bài viết
2,645
Được thích
2,552
Điểm
360
Code khác
Mã:
Sub ABC()
  Dim sArr(), Res()
  Dim i&, jD&, jC&, n
  sArr = Sheet1.Range("A2", Sheet1.Range("A1000000").End(xlUp)).Value
  ReDim Res(1 To UBound(sArr), 1 To 3)
  For i = 1 To UBound(sArr)
    n = Len(sArr(i, 1))
    jD = 0: jC = 0
    For j = 2 To n
      If IsNumeric(Mid(sArr(i, 1), j, 1)) = False And jD = 0 Then jD = j
      If IsNumeric(Mid(sArr(i, 1), j, 1)) And jD > 0 Then
        jC = j: Exit For
      End If
    Next j
    Res(i, 1) = Mid(sArr(i, 1), 1, jD - 1)
    Res(i, 2) = Mid(sArr(i, 1), jD, jC - jD)
    Res(i, 3) = Mid(sArr(i, 1), jC, n - jC + 1)
  Next i
  Sheet1.Range("B2:D2").Resize(UBound(Res)) = Res
End Sub
Anh Hiếu ơi dùng
VBScript.RegExp
Được không anh.
 

vanaccex

Thành viên thường trực
Tham gia ngày
8 Tháng bảy 2018
Bài viết
365
Được thích
224
Điểm
210
Anh Hiếu ơi dùng
VBScript.RegExp
Được không anh.
Em Vân thử dùng cách này mong anh Hiếu góp ý thêm ạ
Mã:
Sub Main()
Call Cot_1
Call Cot_3
Call Cot_2
End Sub

Sub Cot_2()
With CreateObject("VBScript.RegExp")
   For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
      .Global = True
      .Pattern = "\d"
   Sheet1.Cells(i, 3) = .Replace(Sheet1.Cells(i, 1), "")
   Next
End With
End Sub
Sub Cot_3()
With CreateObject("VBScript.RegExp")
   For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
      .Global = True
      .Pattern = ".*\D"
   Sheet1.Cells(i, 4) = .Replace(Sheet1.Cells(i, 1), "")
   Next
End With
End Sub
Sub Cot_1()
With CreateObject("VBScript.RegExp")
   For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
      .Global = True
      .Pattern = "\D.*"
   Sheet1.Cells(i, 2) = .Replace(Sheet1.Cells(i, 1), "")
   Next
End With
End Sub
Bài đã được tự động gộp:
 

File đính kèm

Lần chỉnh sửa cuối:
Top Bottom