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

Blue Softs Liên hệ QC

snow25

Thành viên gắn bó
Tham gia ngày
24 Tháng bảy 2018
Bài viết
2,778
Được thích
2,753
Giới tính
Nam
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.
 

binh18091970

Thành viên mới
Tham gia ngày
6 Tháng hai 2012
Bài viết
18
Được thích
6
Có cái này tách họ tên không biết có dùng dc ko ạ... các cao thủ cho ý kiến.
 

File đính kèm

  • Tách họ tên.xlsx
    14.8 KB · Đọc: 8

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
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,424
Được thích
9,843
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
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
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,378
Được thích
5,227
Donate (Momo)
Donate
Giới tính
Nam
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
3,011
Được thích
9,243
Giới tính
Nam
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
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,778
Được thích
2,753
Giới tính
Nam

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
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,543
Được thích
1,753
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
51

File đính kèm

  • Tach.xlsm
    18.8 KB · Đọc: 8
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
8,258
Được thích
17,053
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,778
Được thích
2,753
Giới tính
Nam
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 tiêu biểu
Tham gia ngày
8 Tháng bảy 2018
Bài viết
420
Được thích
270
Giới tính
Nữ
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

  • DEMO.xlsb
    16.5 KB · Đọc: 7
Lần chỉnh sửa cuối:
Top Bottom