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

  • Thread starter Thread starter daerty5
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Trong cùng 1 ô.VD: [FONT=.VnTime]chÞ h»ng -71 chïa l¸ng, dong da[/FONT] bây giờ tớ muốn tách ra lam 4 cột mà không có cách nao, giup minh voi
 
Trong cùng 1 ô.VD: "Chị Hằng -71 chùa Láng, Đống Đa" bây giờ tớ muốn tách ra lam 4 cột mà không có cách nao, giup minh voi
Có phải ý bạn như thế này không ?
| A | B | C | D 1 | Chị Hằng -71 chùa Láng, Đống Đa|||
2 |Chị Hằng|-71|chùa Láng, |Đống Đa

Nếu đúng như vậy thì bạn xem hướng dẫn hình bên dười! Dùng chức năng Text To Columns của Excel.

Step0.jpg


Step1.jpg



Những mũi tên hướng lên (Arrows) tượng trưng cho sự ngăn cách giữa các cột, bạn có thể di chuyển các mũi tên này để tạo ra các cột tùy ý!
Stpe2.jpg


Step3.jpg
 
Xin hỏi em muốn tách tên bằng phim tắt thì sao nhỉ! Ctrl+Shift+T
 
Xin ké thêm 1 cách của em nữa!
PHP:
Function TachTenPo(HoTen As String, Optional Vitri As Byte = 1) As String
'' Po_PiKachu
''Vtri = 1: Ho ; Vtri = 2: TenLot ; Vtri = 3: Ten ; Vtri = 4: HoTenlot
    Dim arr() As String
    Dim K As Long
    arr() = Split(HoTen, " ")
    K = UBound(arr)
    TachTenPo = Choose(Vitri, arr(0), Trim(Replace(Replace(HoTen, arr(K), ""), arr(0), "")), _
                       arr(K), Trim(Replace(HoTen, arr(K), "")))
End Function
và xin dẫn đến trang này. Vì có nhiều điều trong đó cũng hay lắm.
Thân.
 
Mình làm macro như bạn PhanTuHuong được rồi, nhưng muốn đưa macro này thành một biểu tượng trên thanh công cụ của excel luôn để khi nào cần dùng thì thì bôi đen cột cần tách và click vào biểu tượng luôn?
 
Chào bạn,

Bạn có thể dùng file này không cần dùng VBA thử xem.


Thanks.
Anh Tú.
"Love is beautiful when it's unconclusive".
 

File đính kèm

Tôi thì làm như sau:
CHuyển chuỗi thành mảng, sau đó tùy thích tách bao nhiêu từ thì tách
Ví dụ
PHP:
Private Function Tach(Str as string, SoTuCanTach as integer) as string
     str = trim(str)
     Dim Mang() as string
     mang = split(str," ")
     if sotucantach>ubound(mang)+1 then exit function
     Dim I as integer
     str = ""
     For i = ubound(mang) -sotucantach to ubound(mang)
          str = str & mang(i) & " "
     next
     Tach = trim(str)
end function
 
thêm 1 cách cách không cần sử dụng VBA cách này có thể nhập tên dài bất kỳ
Giả sử ta có cột A2 chứa họ tên đầy đủ

Vậy ta có công thức cho cột C2 chứa tên là: =RIGHT(" "&A2;LEN(" "&A2)-FIND("^^";SUBSTITUTE(" "&A2;" ";"^^";LEN(" "&A2)-LEN(SUBSTITUTE(" "&A2;" ";"")))))

và công thức cho cột B2 chứa họ tên: =LEFT(A2;LEN(A2)-LEN(C2))
 

File đính kèm

Lần chỉnh sửa cuối:
Sao mình làm tách tên không được nhỉ?
làm code như hướng dẫn mà.
Public Function tachten(ten As String) As String
Dim i As Integer
ten = Trim(ten)
For i = Len(ten) To 1 Step -1
If Mid(ten, i, 1) = " " Then
tachten = Left(ten, i)
End If
Next
End Function
 
Mình tham gia 1 hàm có thể trả về họ hoặc tên theo quan điểm của anh Vu Ngoc

Mã:
Public Function hoten(ch As String, ten As Boolean)
Dim kq As Variant
vt = 0
For i = 0 To Len(ch) - 1
If Mid(ch, i + 1, 1) = " " Then vt = vt + 1
Next
kq = Split(ch, " ")
If ten Then
hoten = kq(vt)
Else
hoten = kq(0)
End If
End Function

ch là chuỗi họ tên cần tách.
ten=1 trả về tên, ten=0 trả về họ
 
Mình bổ xung tách Họ, lót, tên và cắt khoảng trắng thừa:
Mã:
Public Function hoten(ch As String, ten As Integer) As String
Dim kq As Variant, vt, i As Long
vt = 0
For i = 0 To Len(ch) - 1
If Mid(ch, i + 1, 1) = " " Then vt = vt + 1
Next
kq = Split(ch, " ")
Select Case ten
Case Is = 1
hoten = kq(0)
Case Is = 2
For i = 1 To vt - 1
hoten = IIf(Len(kq(i)) > 0, hoten & kq(i) & " ", hoten)
Next i
Case Is = 3
hoten = kq(vt)
End Select
End Function
Tham số ch: chuỗi họ tên. Tham số tên: 1-Họ, 2-Lót, 3-Tên
 
mấy bạn dao to búa lớn quá

Em có cách tách đơn giản hơn nè:P
đầu tiên, ví dụ ta có một list danh sách như sau
A B C D
1> nguyễn đình khoa
2> công tằng tôn nữ tống lê chi

+đầu tiên, bôi đen cái list tên, vô data->text to columns... lúc này tên nó sẽ phân ra từng ô một.

chọn một vị trí nào đó để có list danh sách tên cần tách:
công thức: index($B$1:$z25,A1,counta(B1:Z50)) :P đó, đơn giản vậy thôi.kéo xuống là có một list danh sách... hehehe cần gì nguyên cái hàm nhìn vô hok muốn đọc nữa:P
 
Mình vẫn thích xài công thức để tách tên hơn là dùng VBA :
Ví dụ : ô A1 chứa tên đầy đủ :

PHP:
1. Họ : =LEFT(TRIM(A1),FIND(" ",A1)-1)
PHP:
2. Đệm : =TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",100)),100,LEN(SUBSTITUTE(TRIM(A1)," ",REPT(" ",100)))-200))
PHP:
3. Tên  : =TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",100)),100))
 
Họ tên thường nhập chung 1 cột cho nhanh. Sau đó ta có thể tách riêng tên ra 1 cột. Nhưng có lúc chúng ra cần tách ra 2 cột: cột họ, cột tên. Đây là 2 làm làm công việc đó:
'======================
Function TachHo(hoten As String) As String
hoten = Trim(hoten)
If hoten = "" Then
TachHo = ""
Else
vt = InStrRev(hoten, " ", Len(hoten))
If vt = 0 Then
TachHo = ""
Else
TachHo = Trim(Mid(hoten, 1, vt))
End If
End If
End Function

'====================
Function TachTen(hoten As String) As String
hoten = Trim(hoten)
If hoten = "" Then
TachTen = ""
Else
vt = InStrRev(hoten, " ", Len(hoten))
If vt = 0 Then
TachTen = hoten
Else
TachTen = Mid(hoten, vt + 1)
End If
End If
End Function

'===================
Bạn sử dụng hàm này bình thường như các hàm khác của Excel, nhưng nếu bạn cần tách họ tên thành 2 cột riêng biệt thì bạn phải thực hiện một loạt các thao tác sau:
1. tách họ, tách tên trên 2 cột phụ
2. chèn thêm cột bên trái cột họ tên
3. Copy 2 cột họ tên mới tách và dán bằng Paste Special - Value trở về nơi cũ.
Để làm nhanh các công việc đó, bạn có thể sử dụng thủ tuc TachHoTen.
Sử dụng thủ tục này như sau:
1. Chọn tất cả các ô chứa họ tên, kể cả ô chứa tiêu đề trên đầu.
2. Chạy Sub TachHoTen.
VBA sẽ làm thay cho bạn các việc còn lại. Lưu ý bạn là số cột trong vùng chọn phải là 1, nếu lớn hơn 1 VBA không thực hiện.

'====================
Sub TachHoTen()
rd = Selection.Row
sr = Selection.Rows.Count
rc = rd + sr - 1
c = Selection.Column
sc = Selection.Columns.Count
If sc > 1 Then
MsgBox "Ban chon " & sc & " cot. Ban phai chon lai 1 cot", vbOKOnly, "Thong bao"
Exit Sub
End If
Range(Cells(rd, c), Cells(rc, c)).Insert Shift:=xlToRight
Range(Cells(rd, c), Cells(rc, c)).Insert Shift:=xlToRight
For r = rd To rc
Cells(r, c) = TachHo(Cells(r, c + 2))
Cells(r, c + 1) = TachTen(Cells(r, c + 2))
Next
Range(Cells(rd, c + 2), Cells(rc, c + 2)).Delete Shift:=xlToLeft
End Sub
'==============
Bạn có thể tham khảo trong tập tin TachHoTen.zip
E Thử rồi nhưng vẫn bị báo lỗi như này: #NAME
 
Tách tên học sinh.

Để sắp theo mẫu tự A,B,C nên cần phải tách thành cột tên riêng. Nhờ các bạn giúp đỡ bằng cách sử dụng công thức như thế nào? Cám ơn nhiều.
 

File đính kèm

Để sắp theo mẫu tự A,B,C nên cần phải tách thành cột tên riêng. Nhờ các bạn giúp đỡ bằng cách sử dụng công thức như thế nào? Cám ơn nhiều.
Dùng công thức này thử xem:
PHP:
F3 =TRIM(RIGHT(SUBSTITUTE(TRIM($B3)," ",REPT(" ",LEN($B3))),LEN($B3)))
PHP:
E3 =TRIM(SUBSTITUTE($B3,$F3,""))
 

File đính kèm

Các Bác làm ơn khi hướng dẫn vấn đề gì thì hướng dẫn cả cel 2007 nữa với các bác ạh, e đang bị buộc phải dùng cel 2007 mà có một số vấn đề không biết, lên diễn đàn của mình tìm thì thấy các bác toàn hướng dẫn cho cel 2003 không àh. Em xin các bác đấy! Trân trọng!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Tách lấy họ và tên trong excel

Em có 1 file dữ liệu như file đính kèm. Em cần tách ra thành 2 cột khác nhau để lấy phần Họ và tên, bỏ phần chữ "chia sẻ ý kiến". Các anh chị xem có cách nào hay công thức gì mà có thể làm nhanh giúp em với vì file dữ liệu của em rất nhiều mà click chọn xóa từng ô thì mất thời gian rất nhiều...
Cảm ơn rất nhiều.
 

File đính kèm

Em có 1 file dữ liệu như file đính kèm. Em cần tách ra thành 2 cột khác nhau để lấy phần Họ và tên, bỏ phần chữ "chia sẻ ý kiến". Các anh chị xem có cách nào hay công thức gì mà có thể làm nhanh giúp em với vì file dữ liệu của em rất nhiều mà click chọn xóa từng ô thì mất thời gian rất nhiều...
Cảm ơn rất nhiều.
Lần sau bạn cố gắng tìm ở diễn đàn nhé.
Bạn xem file nhe
 

File đính kèm

Tôi xin tham gia 1 PP tách lấy họ, tên, chữ lót (của domfootwear dùng công thức, cái này dùng VBA)
Không phụ thuộc số từ trong tên. Nó sẽ tách mỗi từ qua 1 cell.
Cái này thực ra tôi lấy từ bên mục "Các phương pháp tách họ và tên".
Sử dụng chức năng "text to columns". Record macro sau đó tùy biến 1 chút...
Giải pháp ở bên đó rất nhiều nhưng như thế này thì chưa thấy nên đưa lên để các bạn tham khảo thêm.
Thoạt nhìn thấy dài dòng nhưng code chính chỉ có 1 dòng.
Mã:
[COLOR=black][FONT=Tahoma]Sub TachHoVaTen()[/FONT][/COLOR]
[FONT=Tahoma][COLOR=black]If WorksheetFunction.CountA(Selection) = 0 Then[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black]  MsgBox "Vung chon khong co du lieu !"[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black]  Exit Sub[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black]End If[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black]Selection.Offset(0, 1).Select[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black]Selection.Value = Selection.Offset(0, -1).Value[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black]Range(Selection.Offset(0, 1), Selection.Offset(0, 100)).ClearContents[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black]For Each Rg In Selection[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black][B]  Rg.TextToColumns Destination:=Rg[/B] '<--- code chinh chi co nhieu day.[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black]Next[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black]MsgBox "Xong !"[/COLOR][/FONT]
[FONT=Tahoma][COLOR=black]End Sub[/COLOR][/FONT]
(Vô mục "Các phương pháp tách họ và tên" thì không thấy nổi các nút "Trả lời..." nên không thể post vào mục đó được).
 

File đính kèm

Hỏi về xử lý chuỗi họ tên

Tôi có chuỗi họ tên: NguyễnThịThanhThuỷ
Muốn thêm ký tự trắng vào giữa họ, đệm, tên để trở thành Nguyễn Thị Thanh Thuỷ thì phải làm thế nào?
(Dùng VBA và dùng Công thức)
Cảm ơn các bác đã giúp đỡ !
 
Tôi có chuỗi họ tên: NguyễnThịThanhThuỷ
Muốn thêm ký tự trắng vào giữa họ, đệm, tên để trở thành Nguyễn Thị Thanh Thuỷ thì phải làm thế nào?
(Dùng VBA và dùng Công thức)
Cảm ơn các bác đã giúp đỡ !
Nếu chỉ riêng một trường hợp này mà thôi, thì chắc chắc là có cách, dùng công thức cũng được mà dùng VBA cũng được.
Tuy nhiên, nếu bạn muốn tìm cách nào đó để có thể áp dụng cho mọi trường hợp tên bị viết dính nhau như thế, thì thua!
Bởi vì, họ tên (nhất là tiếng Việt) chả có cái quy luật nào để mà tách ra cả.
 
Nếu chỉ riêng một trường hợp này mà thôi, thì chắc chắc là có cách, dùng công thức cũng được mà dùng VBA cũng được.
Tuy nhiên, nếu bạn muốn tìm cách nào đó để có thể áp dụng cho mọi trường hợp tên bị viết dính nhau như thế, thì thua!
Bởi vì, họ tên (nhất là tiếng Việt) chả có cái quy luật nào để mà tách ra cả.
Cái này Em nghĩ cao thủ VBA có thể làm được Anh à. Em thấy có thể tách theo quy luật sau:
Quét từ trái sang phải, nếu gặp ký tự nào là chữa HOA thì thêm 1 khoảng trắng phía trước. Anh thấy thế nào?
 
Cái này Em nghĩ cao thủ VBA có thể làm được Anh à. Em thấy có thể tách theo quy luật sau:
Quét từ trái sang phải, nếu gặp ký tự nào là chữa HOA thì thêm 1 khoảng trắng phía trước. Anh thấy thế nào?

Tôi cũng nghĩ như vậy. Đúng là có thể quyét từ trái sang phải, gặp kỹ tự viết HOA (trừ ký tự đầu tiên) thì tự động thêm vào 1 khoảng trắng. Nhưng vấn đề là câu lệnh thế nào?? %#^#$%#^#$
 
Quét thì quét! Dùng tạm cái hàm sau:
PHP:
Function AddSpace(MyStr As String) As String
   Dim Arr, TmpStr, Chrt, i
   Arr = "ABCDEGHIKLMNOPQRSTUVXY"
   MyStr = Trim(MyStr)
   TmpStr = UCase(Left(MyStr, 1))
     With Application
        For i = 2 To Len(MyStr)
           Chrt = Mid(MyStr, i, 1)
           TmpStr = TmpStr & IIf(.IsNumber(.Find(Chrt, Arr, 1)), " ", "") & Chrt
        Next
      End With
AddSpace = TmpStr
End Function

Ghi chú: chưa có các ký tự có dấu tiếng Việt. Các ký tự có dấu này còn tuỳ theo font sử dụng nên chưa cho vào.
 

File đính kèm

Lần chỉnh sửa cuối:
Anh PTM ơi, Mình có thể dùng quét bằng cáh: Quét từ trái sang phải nếu gặp ký tự nào có CODE(text)<=90 thì thêm dấu cách phía trước được không Anh?
 
Anh PTM ơi, Mình có thể dùng quét bằng cáh: Quét từ trái sang phải nếu gặp ký tự nào có CODE(text)<=90 thì thêm dấu cách phía trước được không Anh?

Còn 1 số ký tự có dấu tiếng Việt nữa như Đặng, Ánh, Ân, n, . .., nếu dùng Font thuộc bảng mã Unicode thì character code của mấy thằng đó lung tung lắm. Nhỏ hơn 255 cũng có, lớn hơn 7000 cũng có.

Tuỳ Font mà nhét vào thôi.
 
Tôi có chuỗi họ tên: NguyễnThịThanhThuỷ
Muốn thêm ký tự trắng vào giữa họ, đệm, tên để trở thành Nguyễn Thị Thanh Thuỷ thì phải làm thế nào?
(Dùng VBA và dùng Công thức)
Cảm ơn các bác đã giúp đỡ !
Có thể như thế này
Mã:
Public Function tach(vung As String) As String
 Dim chu, tam, thay As String
 Dim i, J As Integer
    For i = 2 To Len(vung)
        chu = Mid(vung, i, 1)
        If chu = UCase(chu) And InStr(1, tam, chu) = False Then tam = tam & chu
    Next
        For J = 1 To Len(tam)
            thay = Mid(tam, J, 1)
            vung = Replace(vung, thay, " " & thay)
        Next
 tach = Trim(vung)
End Function
 

File đính kèm

Bổ sung 4 chữ cái: Á, Â, Ẩ, Đ thuộc bảng mã Unicode.
Các chữ cái khác thêm vào tương tự
(Sao tự nhiên quên mất tiêu hàm InStr() của VBA, thanks cò già 1 phát)

PHP:
Function AddSpace(MyStr As String) As String
    Dim Arr, TmpStr, Chrt, i
    Arr = "ABCDEGHIKLMNOPQRSTUVXY"
    Arr = Arr & ChrW(193) & ChrW(7848) & ChrW(194) & ChrW(272)
    MyStr = Trim(MyStr)
    TmpStr = UCase(Left(MyStr, 1))
    
    For i = 2 To Len(MyStr)
        Chrt = Mid(MyStr, i, 1)
        TmpStr = TmpStr & IIf(InStr(1, Arr, Chrt), " ", "") & Chrt
    Next
    AddSpace = TmpStr
End Function

Riêng font thuộc bảng mã VNI và bảng mã TCVN3 thì gõ trực tiếp vào chuỗi Arr
 
Tôi có chuỗi họ tên: NguyễnThịThanhThuỷ
Muốn thêm ký tự trắng vào giữa họ, đệm, tên để trở thành Nguyễn Thị Thanh Thuỷ thì phải làm thế nào?
(Dùng VBA và dùng Công thức)
Cảm ơn các bác đã giúp đỡ !
Nhiều người dùng VBA rồi, bây giờ tôi làm bằng công thức. Chỉ để tham khảo thôi chứ để ứng dụng thì không tốt lắm do có nhiều name và công thức mảng.

Tất cả ở trong file.

Một số hạn chế:
Công thức chỉ đúng trong trường hợp sử dụng bảng mã VNI Windows
Tên tối đa 5 chữ (Cái này có thể thêm name để khắc phục được nhưng tôi thấy 5 chữ là đủ rồi)
 

File đính kèm

Nếu chỉ riêng một trường hợp này mà thôi, thì chắc chắc là có cách, dùng công thức cũng được mà dùng VBA cũng được.
Tuy nhiên, nếu bạn muốn tìm cách nào đó để có thể áp dụng cho mọi trường hợp tên bị viết dính nhau như thế, thì thua!
Bởi vì, họ tên (nhất là tiếng Việt) chả có cái quy luật nào để mà tách ra cả.
Nói thật nhé, các bác các bạn để thời giờ suy nghĩ ra cái khác đi, còn hay hơn.

Không phải tôi lười, vì giải pháp dùng vòng lặp quét chữ hoa thì tôi đã nghĩ đến, nhưng ý tôi muốn nói là: Sử dụng cho tất cả mọi trường hợp, thì thua!

Một trong những lý do để... thua, đó là buộc dữ liệu cho trước phải được nhập đúng kiểu viết chữ HOA cho chữ cái đầu và viết chữ THƯỜNG cho những chữ còn lại. Nếu nhỡ như thay vì NguyễnThịThanhThuỷ, mà nó là Nguyễnthịthanhthuỷ hay là NGUYỄNTHỊTHANHTHỦY, thì sao? Đó là chưa nói đến loại font của dữ liệu cho trước.

Thêm nữa, cho dù là có khả năng tạo được một cái Hàm xử lý được chuyện này, thì liệu nó sẽ được ứng dụng ở đâu? Hay chỉ là viết cho vui? Mà nói thật chứ, chẳng vui đâu, vì nếu muốn được gọi là "Ứng dụng" thì nó phải đáp ứng được mọi trường hợp cơ!
 
Cách tách Họ - Tên lót - Tên trong excel???

Các bạn có ai biết cách tách 1 cột : Họ & tên thành 3 Cột : Họ - Tên Lót - Tên không?
Bạn nào biết thì hãy giúp mình với, mình đã tham khảo trên diễn dàn nhưng chỉ thấy tách được 2 cột thôi.
Mình không rành về cách viết macro nên mù mờ lắm.
Các bạn nếu ai biết vui long giúp mình với nhé:
VD: Nguyễn Văn A => Nguyễn | Văn | A
NGuyễn Thị Thuý Hằng => Nguyễn | Thị Thuý | Hằng

Rất mong sự giúp đỡ của các bạn. Xin chân thành các bạn rất nhiều.
 
Lần chỉnh sửa cuối:
Tách họ tên thành từng ô mỗi ô chứa 1 chữ cái!

Mình có một cột họ tên học sinh, bây giờ muốn tách các họ tên từng học sinh ra theo từng ký tự chữ cái, mỗi chữ cái nằm trong một ô excel thì làm thế nào cho nhanh, dùng công thức nào để tách??
 
B1 = MID(SUBSTITUTE($A1," ","");COLUMN()-1,1)

Fill ngang qua đến khi hết ký tự
 
Nhưng bây giờ em muốn bổ sung khoảng cách giữa các từ nữa tức là sẽ có thêm các ô cell khoảng trắng giữa các từ thì làm thế nào ạ?
 
À em làm được rồi, bỏ cái hàm sub.. đi là ổn!
 
Bỏ Substitute, nhưng nên thêm Trim vào.
 
Cảm ơn bạn vungoc rất nhiều về bài viết này!
Mình cũng đã từng biết đến cách tách họ và tên này cũng như thực hành làm nhiều lần và đều OK. Tuy nhiên, có một điều mình băn khoăn là cứ khi đóng File Excel vừa thực hiện tách họ và tên sau đó mở lại File thì không thể thực hiện làm hàm như vậy để cho ra kết quả được nữa mà đều trả kết quả #NAME?. Mình muốn hỏi có cách nào để khắc phục vấn đề này không hay đây là tính năng mặc định của cách làm này rùi. Vì nhiều khi lập danh sách trong quản lý nhân sự cần có thêm người mới mà không thực hiện được. Vungoc hay diễn đàn nhà mình ai biết thì chỉ giúp mình nha.
 
ACE chi e cách tách chuỗi này đi

Em muốn tách chuỗi như sau
Nguyễn Văn Anh -> trả về kết quả: Nguyễn Văn
Nguyễn Anh -> trả về kết quả: Nguyễn
Trần lê văn Dũng trả -> về kết quả: Trần Lê Văn
 
Em muốn tách chuỗi như sau
Nguyễn Văn Anh -> trả về kết quả: Nguyễn Văn
Nguyễn Anh -> trả về kết quả: Nguyễn
Trần lê văn Dũng trả -> về kết quả: Trần Lê Văn
Có thể dùng hàm tự tạo này
Mã:
Public Function tach(Cll As Range) As String
    tach = Left(Cll, InStrRev(Cll, " ") - 1)
End Function
 
Mình đã làm rồi, coppy hàm từ quyển sách Microsoft Excel 2007 Bible, bạn xem file đính kèm,
Em muốn tách chuỗi như sau
Nguyễn Văn Anh -> trả về kết quả: Nguyễn Văn
Nguyễn Anh -> trả về kết quả: Nguyễn
Trần lê văn Dũng trả -> về kết quả: Trần Lê Văn
 

File đính kèm

Em muốn tách chuỗi như sau
Nguyễn Văn Anh -> trả về kết quả: Nguyễn Văn
Nguyễn Anh -> trả về kết quả: Nguyễn
Trần lê văn Dũng trả -> về kết quả: Trần Lê Văn
Công thức này:
PHP:
=TRIM(LEFT(SUBSTITUTE(TRIM($A2)," ",REPT(" ",LEN(TRIM($A2)))),LEN(TRIM($A2))*(LEN(TRIM($A2))-LEN(SUBSTITUTE(TRIM($A2)," ","")))))
Với A1 là cell chứa chuổi họ và tên
-----------------------
File của đồng chí này:
Mình đã làm rồi, coppy hàm từ quyển sách Microsoft Excel 2007 Bible, bạn xem file đính kèm,
Chưa đúng yêu cầu
Hãy thử tách chuổi Phùng Văn Văn xem nó ra cái gì
 

File đính kèm

Họ tên thường nhập chung 1 cột cho nhanh. Sau đó ta có thể tách riêng tên ra 1 cột. Nhưng có lúc chúng ra cần tách ra 2 cột: cột họ, cột tên. Đây là 2 làm làm công việc đó:
'======================
Function TachHo(hoten As String) As String
hoten = Trim(hoten)
If hoten = "" Then
TachHo = ""
Else
vt = InStrRev(hoten, " ", Len(hoten))
If vt = 0 Then
TachHo = ""
Else
TachHo = Trim(Mid(hoten, 1, vt))
End If
End If
End Function

'====================
Function TachTen(hoten As String) As String
hoten = Trim(hoten)
If hoten = "" Then
TachTen = ""
Else
vt = InStrRev(hoten, " ", Len(hoten))
If vt = 0 Then
TachTen = hoten
Else
TachTen = Mid(hoten, vt + 1)
End If
End If
End Function

'===================
Bạn sử dụng hàm này bình thường như các hàm khác của Excel, nhưng nếu bạn cần tách họ tên thành 2 cột riêng biệt thì bạn phải thực hiện một loạt các thao tác sau:
1. tách họ, tách tên trên 2 cột phụ
2. chèn thêm cột bên trái cột họ tên
3. Copy 2 cột họ tên mới tách và dán bằng Paste Special - Value trở về nơi cũ.
Để làm nhanh các công việc đó, bạn có thể sử dụng thủ tuc TachHoTen.
Sử dụng thủ tục này như sau:
1. Chọn tất cả các ô chứa họ tên, kể cả ô chứa tiêu đề trên đầu.
2. Chạy Sub TachHoTen.
VBA sẽ làm thay cho bạn các việc còn lại. Lưu ý bạn là số cột trong vùng chọn phải là 1, nếu lớn hơn 1 VBA không thực hiện.

'====================
Sub TachHoTen()
rd = Selection.Row
sr = Selection.Rows.Count
rc = rd + sr - 1
c = Selection.Column
sc = Selection.Columns.Count
If sc > 1 Then
MsgBox "Ban chon " & sc & " cot. Ban phai chon lai 1 cot", vbOKOnly, "Thong bao"
Exit Sub
End If
Range(Cells(rd, c), Cells(rc, c)).Insert Shift:=xlToRight
Range(Cells(rd, c), Cells(rc, c)).Insert Shift:=xlToRight
For r = rd To rc
Cells(r, c) = TachHo(Cells(r, c + 2))
Cells(r, c + 1) = TachTen(Cells(r, c + 2))
Next
Range(Cells(rd, c + 2), Cells(rc, c + 2)).Delete Shift:=xlToLeft
End Sub
'==============
Bạn có thể tham khảo trong tập tin TachHoTen.zip

anh ơi...làm sao để chay sub tachhoten ạ// em vẫn chưa rõ lắm...thánks anh nhiều ạ....

- Tải cái này về và xem hướng dẫn kèm theo để cài đặt.
- Chạy ếch xèo lên vào Format -> TiengViet-TCVN -> Tach gop ho ten.
- Chý ú : Insert thêm 1 cột để phần tên tách ra không đè lên cột bên cạnh.

View attachment 2384
cái này ăn sẵn lại hay, mà lại đơn giản....thanks
 
Chỉnh sửa lần cuối bởi điều hành viên:
Sáng tạo tí là đc mà

@ndu96081631
Công thức đó ko hắn sai, mà do ko tính hai exp là chuỗi rỗng và bị lặp lại từ cuối trong tên!
Muốn cho công thức của nhỏ @cuncon207 đúng cũng dễ ấy mà ;)! Append một kí tụ "đặc biệt" nào đó thôi!
SUBSTITUTE(A2&"}";RIGHT(A2; LEN(A2)-FIND("*";SUBSTITUTE(A2;" ";"*";LEN(A2)-LEN(SUBSTITUTE(A2;" ";"")))))&"}";"")

Nếu từ chỉ có 1 kí tự hay empty thì có thể gây error nên ta cần handle thêm với ISERROR là ổn! Cug co the TRIM them neu can

IF (
ISERROR(FIND(" ", TRIM(A2), 1))=TRUE,
A2,
SUBSTITUTE
(
A2&"}";

RIGHT(
A2;
LEN(A2)
-
FIND
(
"*";
SUBSTITUTE
(
A2;
" ";
"*";
LEN(A2)
-
LEN(
SUBSTITUTE
(A2;" ";"")
)
)
)

)&"}";

""
)
)

Mình ko có Office nên phai xài tạm google docs
http://spreadsheets.google.com/ccc?key=0Av38yBmT-zOCdEhRcHQzZW96VkJJeElCUHJYZVdCd1E&hl=en

@em Sinh,
Thật sự thì a ko biết excel! Nhg góp ý với e tí!
Làm gì e chỉ cần hiểu vấn đề tí là làm đc!

Vấn đề của em là tách ra phần tên, hay cụ thể hơn là tách ra từ cuối cùng rồi bỏ nó đi!
Nhg mình phải có chút sáng tạo thì mới xong việc!
Một thuân toán hay mà gọn là
0.Chuẩn hóa xâu (xóa khoảng trắng ở 2 đầu đi(nếu cần có thể xóa các khoảng trắng liên tiếp) )
1.Em tìm từ cuối cùng
2.Thay từ cuối cùng này thành chuỗi rồng( đồng nghĩa với xóa nó đi)
Vậy là xong!

Tuy nhiên điều này sẽ thất bại nếu tên có từ giống nhau, ví dụ
Vân Phiêu Phiêu, vì chữ Phiêu lặp lại, nên khi mình thay từ Phiêu thành chuỗi rỗng nó tiễn cả 2 từ Phiêu đi luôn

Nhg với một chút sáng tạo nho nhỏ! Ta phải làm sao cho cái từ cuối cùng của tên trở thành DUY NHẤT!
Ngĩa là dù em có Vân Phiêu Phiêu, hay Lý Sư Sư, hay Đinh Đinh Đang Đang thì cái từ Phiêu cuối cùng,
từ Sư cuối cùng, từ Đang cuối cùng phải trở thành duy nhất trong chuỗi!
Tưởng tượng rằng, nếu e có thể biến
Vân Phiêu Phiêu thành Vân Phiêu Phiêu}
Lý Sư Sư thành Lý Sư Sư}
Đinh Đinh Đang Đang thành Đinh Đinh Đang Đang}
(thêm 1 kí tự } vào cuối)
Thì rõ ràng các từ Sư} , Phiêu} , Đang} trở thàn duy nhất
(vì nó viết liên tiếp các kí tự, ko có khoảng trắng ở giữa thì thành một từ)

Ta biết nó là duy nhất vì ta chắc chắn rằng tên tiếng Viêt ko thể nào có kí tự } trong đó được Sư # Sư}, Phiêu # Phiêu},...

Thuật toán là vậy đó!
 
Lần chỉnh sửa cuối:
Công thức nào để tách tên?

Mình có 1 cột đã được ghép 2 tên với nhau, ví dụ như An/Nam. Bây giờ mình muốn tách tên An ra 1 cột, tên Nam ra 1 cột thì phải dùng công thức như thế nào? Mong các bạn giúp đỡ. Xin cám ơn!
 

File đính kèm

Mình có 1 cột đã được ghép 2 tên với nhau, ví dụ như An/Nam. Bây giờ mình muốn tách tên An ra 1 cột, tên Nam ra 1 cột thì phải dùng công thức như thế nào? Mong các bạn giúp đỡ. Xin cám ơn!
Cái này cần gì đến hàm đâu bạn, nếu chỉ có thế bạn làm như sau:
bôi đen cột c, sau đó vào menu data--->chọn Text to columns ---->tích vào Delimited---> nhấn Next--->Mục Other đánh dấu"/" vào thế là ok
- Chú ý: để đưa dữ liệu theo như bạn yêu cầu sang cột d,e thì đến mục De..->Next nó hiện lên cái bảng trong đó có cái Type(Destination=c1-->thay bằng d1)
 
Lần chỉnh sửa cuối:
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 !

Phiền các bác giải thích cho em công thức bôi đậm này với, đặc biệt là dấu * là gì ah?
 
Phiền các bác giải thích cho em công thức bôi đậm này với, đặc biệt là dấu * là gì ah?

Bạn ui, mình cùng nhau phân tích từ trong ra ngoài nhen!

=RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1," ","*",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))

Bước 1. SUBSTITUTE(A1," ","") tức là thay toàn bộ các khoảng trắng trong chuỗi A1 bằng chuỗi rỗng (""), trở thành chuỗi mới không có khoảng trắng nào, ta đặt tên chuỗi mới này là Text2

Bước 2. Lấy Len(A1) - Len(Text2), ta sẽ được số khoảng trắng có trong chuỗi ban đầu, vì so với chuỗi ban đầu, Text2 đã loại ra số khoảng trắng đó đó. Thí dụ họ tên có 5 từ "Công Tằng Tôn Nữ Monalisa" thì số khoảng trắng là 4.

Bước 3. SUBSTITUTE(A1," ","*", 4) là thay khoảng trắng thứ 4 trong chuỗi ban đầu bằng ký tự "*" là 1 ký tự đặc biệt bất kỳ mà tên người ta không có. Có thể dùng ký tự khác như "@", "|", ... Ta được 1 chuỗi mới gọi là Text3. Text 3 có 3 khoảng trắng và 1 ký tự "*"

Bước 4. Dùng Find tìm xem trong Text3 ký tự "*" nằm ở vị trí thứ mấy

Bước 5. Dùng Right để lấy phần bên phải của ký tự "*" vừa tìm được.

Bước 6. (Bắt chước sư phụ ptm0412): Nhấn thank cho Monalisa 2 cái hén.
 
Các bác ơi giúp em ghép 2 cột làm 1 mà ko mất dữ liệu với ạ.

Các bác ơi giúp em ghép 2 cột làm 1 mà ko mất dữ liệu với ạ.
Em cần ghép 2 cột nam nữ làm 1 vì nó có năm sinh ở đấy. Phía cuối lại có cột tính tuổi xem đã đến 18 tuổi chưa.
Ghép 2 cột Nam nữ - năm sinh vào làm 1 để làm 1 cột năm sinh thôi mà ko mất dữ liệu.
Giúp em với nhé.
Đây là ảnh ạ!
 

File đính kèm

  • danh sach.jpg
    danh sach.jpg
    75.9 KB · Đọc: 79
Bạn thích cột E hông? Lấy cột E nhen!

E5 = C5 + D5

Xế nà thong!
 
tách tên theo cấu trúc???

gaIT có một vấn đề nhỏ cần thọ giáo mọi người. Bây giờ gaIT muốn tách tên và họ theo cấu trúc như thế này thành 2 cột khác nhau. Mọi người xem file đính kèm và hỗ trợ gaIT giúp nha. Thanks mọi người!
 

File đính kèm

gaIT có một vấn đề nhỏ cần thọ giáo mọi người. Bây giờ gaIT muốn tách tên và họ theo cấu trúc như thế này thành 2 cột khác nhau. Mọi người xem file đính kèm và hỗ trợ gaIT giúp nha. Thanks mọi người!
Cấu trúc mà bạn nói ấy được phát biểu và định nghĩa thế nào? Tên 4 từ thì tách làm 2 cột, mỗi cột 2 từ chăng?
Thế tên có 5 từ, 6 từ... thậm chí là 7 từ thì tách sao?
Điều mà bạn nên làm ở đây là:
- Đưa ra tất cả các trường hợp đặc biệt có thể xãy ra và kết quả mà bạn muốn đạt được
- Cần định nghĩa thật rõ về nguyên tắc
 
gaIT có một vấn đề nhỏ cần thọ giáo mọi người. Bây giờ gaIT muốn tách tên và họ theo cấu trúc như thế này thành 2 cột khác nhau. Mọi người xem file đính kèm và hỗ trợ gaIT giúp nha. Thanks mọi người!

Tách tên theo cảm tính à?
Tên lúc thì 2 từ, lúc thì một từ là sao?
Ví dụ: Bạn giải thích thế nào tên Đăng Khoa & Khoa trong Lâm Đăng Khoa & Lâm Văn Khoa ?
Đăng hay Văn trong trường hợp này đều là tên đệm
 
tách thỏa 2 điều kiện như thế này:
1. Tên 4 -7 từ thì cột tên vẫn là 2 từ, số còn lại là học và tên đệm
2. Tên 3 từ, nếu tên đệm là "Văn" hay "Thị" thì tách theo họ (vd: Lâm Đăng Khoa tách ra là Lâm (họ) - Đăng Khoa (tên). Còn Lâm Văn Khoa, tách ra là Lâm Văn (họ) - Khoa (tên)). Tương tự với lên lót là "Thị".

Chính vì như vậy mới thực sự nhức đầu...hy vọng nhận được sự giúp đỡ từ mọi người! thanks...
 
tách thỏa 2 điều kiện như thế này:
1. Tên 4 -7 từ thì cột tên vẫn là 2 từ, số còn lại là học và tên đệm
2. Tên 3 từ, nếu tên đệm là "Văn" hay "Thị" thì tách theo họ (vd: Lâm Đăng Khoa tách ra là Lâm (họ) - Đăng Khoa (tên). Còn Lâm Văn Khoa, tách ra là Lâm Văn (họ) - Khoa (tên)). Tương tự với lên lót là "Thị".

Chính vì như vậy mới thực sự nhức đầu...hy vọng nhận được sự giúp đỡ từ mọi người! thanks...
Từ đó đến giờ mới thấy có cái quy định quái dị thế này! Hỏi bạn nha:
- Người có tên Trằn Văn Văn thì tách sao?
- Người có tên Lê Thị Trái Thị thì tách sao?
 
tách thỏa 2 điều kiện như thế này:
1. Tên 4 -7 từ thì cột tên vẫn là 2 từ, số còn lại là học và tên đệm
2. Tên 3 từ, nếu tên đệm là "Văn" hay "Thị" thì tách theo họ (vd: Lâm Đăng Khoa tách ra là Lâm (họ) - Đăng Khoa (tên). Còn Lâm Văn Khoa, tách ra là Lâm Văn (họ) - Khoa (tên)). Tương tự với lên lót là "Thị".

Chính vì như vậy mới thực sự nhức đầu...hy vọng nhận được sự giúp đỡ từ mọi người! thanks...

Thực tế, làm công thức thì không nhức đầu, mà nhức đầu ở quy định tách họ tên của bạn (bởi vì nó chẳng theo một chuẩn/quy định nào cả - không phân biệt được Tên, Tên đệm)
Tôi làm một giải pháp đáp ứng yêu cầu cho bạn & tôi cho đó là tào lao:
Bắt đầu tại C2, tách tên:
PHP:
=REPLACE(A2,1,IF(LEN(A2)-LEN(SUBSTITUTE(A2," ",""))<3,IF(ISERR(FIND(" Văn",A2)),IF(ISERR(FIND(" Thị",A2)),FIND(" ",A2),FIND(" Thị",A2)+4),FIND(" Văn",A2)+4),FIND("/",SUBSTITUTE(A2," ","/",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1))),"")
Tại B2, tách họ & tên đệm:
PHP:
=LEFT(A2,LEN(A2)-LEN(C2)-1)
Xem thêm file
 

File đính kèm

Thực tế, làm công thức thì không nhức đầu, mà nhức đầu ở quy định tách họ tên của bạn (bởi vì nó chẳng theo một chuẩn/quy định nào cả - không phân biệt được Tên, Tên đệm)
Tôi làm một giải pháp đáp ứng yêu cầu cho bạn & tôi cho đó là tào lao:
Bắt đầu tại C2, tách tên:
PHP:
=REPLACE(A2,1,IF(LEN(A2)-LEN(SUBSTITUTE(A2," ",""))<3,IF(ISERR(FIND(" Văn",A2)),IF(ISERR(FIND(" Thị",A2)),FIND(" ",A2),FIND(" Thị",A2)+4),FIND(" Văn",A2)+4),FIND("/",SUBSTITUTE(A2," ","/",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1))),"")
Tại B2, tách họ & tên đệm:
PHP:
=LEFT(A2,LEN(A2)-LEN(C2)-1)
Xem thêm file

Hổng biết VN mình có ai tên Văn Văn hoặc Văn Trần Văn không nhỉ?
Ẹc... Ẹc...
 
Tách tên và code từ chuỗi ký tự

Giúp mình với mình muốn tách tên người hưởng thụ và số invoice No từ chuỗi ký tự như sau:
BENEFICIARY : CONG TY HANOI CHARGE : VND 11000 (DEBIT A/C 2003) INV NO.0007114 AND 0007116 DOC NO.3179575

cái mình muốn lấy là: CONG TY HANOI
và: 0007114 AND 0007116
Các ký tự mình gạch chân là những kỹ tự cố định.
Bạn nào giúp mình với chứ ngày nào cũng ngồi cut paste một đống giao dịch chắc mình chết quá à.//////
Cảm ơn nhìu nhìu!
 
Lần chỉnh sửa cuối:
Giúp mình với mình muốn tách tên người hưởng thụ và số invoice No từ chuỗi ký tự như sau:
BENEFICIARY : CONG TY HANOI CHARGE : VND 11000 (DEBIT A/C 2003) INV NO.0007114 AND 0007116 DOC NO.3179575

cái mình muốn lấy là: CONG TY HANOI
và: 0007114 AND 0007116
Các ký tự mình gạch chân là những kỹ tự cố định.
Bạn nào giúp mình với chứ ngày nào cũng ngồi cut paste một đống giao dịch chắc mình chết quá à.//////
Cảm ơn nhìu nhìu!
Giả sử chuỗi gốc nằm tại ô A1, bạn nhập công thức sau xem có được không:
- Chuỗi thứ 1: =MID(A1,15,FIND("CHARGE :",A1)-16)
- Chuỗi thứ 2: =MID(A1,FIND("NO.",A1)+3,FIND("DOC NO.",A1)-FIND("NO.",A1)-4)
 
Cảm ơn Nghiaphuc có vẻ như là đc bạn ạ.nhưng bạn giải thích giúp mình số 15 và -16 ở đây có nghĩa gì ko? cũng như là số +3 và -4 ở ct dưới
 
Tách chữ

Chào các bạn mình đã đôch qua nhiều bài viết rất hay của các bạn.
Nhưng mình chưa biết áp dụng. Minh có một ví dụ như thế này mong các bạn giúp đỡ. Cám ơn nhiều
1, Nhập kho vật liệu hàn của công ty B - Kho nhà máy
2, Nhập kho thép của công ty C - Kho Phú Tài
3, Nhập kho góc của công ty D - Kho Anh Tú
Mình muốn tách riêng tên lý do, tên công ty, kho ra 3 cột khác nhâu thì phải làm thế nào?
( Ví dụ 1 : Lý do = Nhập kho vật liệu hàn, Tên Công ty = Công ty B, kho = Ko nhà máy)
Mong các bạn
 
Em có file này, xin nhờ các pác tách tên giúp, vì nhiều ký tự quá, em dùng thử macro nhưng không ăn thua
 

File đính kèm

Em muốn tách phần họ và tên, chức danh ra 1 cột riêng nhau
 
Chào các bạn mình đã đôch qua nhiều bài viết rất hay của các bạn.
Nhưng mình chưa biết áp dụng. Minh có một ví dụ như thế này mong các bạn giúp đỡ. Cám ơn nhiều
1, Nhập kho vật liệu hàn của công ty B - Kho nhà máy
2, Nhập kho thép của công ty C - Kho Phú Tài
3, Nhập kho góc của công ty D - Kho Anh Tú
Mình muốn tách riêng tên lý do, tên công ty, kho ra 3 cột khác nhâu thì phải làm thế nào?
( Ví dụ 1 : Lý do = Nhập kho vật liệu hàn, Tên Công ty = Công ty B, kho = Ko nhà máy)
Mong các bạn
Nếu dữ liệu của bạn có cấu trúc đúng như vậy, xem file đính kèm.
Trường hợp có sự khác biệt, post file lên nhé.
 

File đính kèm

Em cảm ơn, nhưng em mở ra file treo luôn không mở thấy gì anh ạ
 
Được rồi anh, em đang thử xem thế nào. Xin cảm ơn các bác
 
có cách nào tách riêng Họ-------chữ lót--------tên không pác.., em đang cần gấp lắm...pác pro giúp giùm em với...thanh pác trước ha
 
có cách nào tách riêng Họ-------chữ lót--------tên không pác.., em đang cần gấp lắm...pác pro giúp giùm em với...thanh pác trước ha
Giả sử ô A1 chứa họ và tên
ô B1: Họ:
Mã:
 =TRIM(LEFT(SUBSTITUTE($A$1," ",REPT(" ",255)),255))
ô D1: Tên
Mã:
=TRIM(RIGHT(SUBSTITUTE($A$1," ",REPT(" ",255)),255))
ô C1: Lót
Mã:
=SUBSTITUTE(SUBSTITUTE(A1,B1,""),D1,"")
Với mặc định chữ đầu tiên là họ; chữ cuối cùng là Tên; các chữ ở giữa là Lót
 
Giả sử ô A1 chứa họ và tên
ô B1: Họ:
Mã:
 =TRIM(LEFT(SUBSTITUTE($A$1," ",REPT(" ",255)),255))
ô D1: Tên
Mã:
=TRIM(RIGHT(SUBSTITUTE($A$1," ",REPT(" ",255)),255))
ô C1: Lót
Mã:
=SUBSTITUTE(SUBSTITUTE(A1,B1,""),D1,"")
Với mặc định chữ đầu tiên là họ; chữ cuối cùng là Tên; các chữ ở giữa là Lót
Công thức lấy CHỮ LÓT không đúng đâu nha ---> Xem lại
 

File đính kèm

Dùng VBA thì nhanh thật nhưng không thể filter bạn à.Mình mong các bạn chỉ mình khi có filter
 
Phương pháp đơn giản nhất!

Chào bạn

Thí dụ ở ô A1 bạn có tên Trần Văn Xoài.

Tách họ trong ô B1 thì dung =LEFT(A1,FIND(" ",A1)-1)

Phần tên còn lại ghi qua C1 bằng phương thức =RIGHT(A1,LEN(A1)-LEN(B1)-1)

Mến
Tôi thấy cách của bạn digita là đơn giản và dễ hiểu nhất. Tuy nhiên, có lẽ bạn hơi nhầm chút xíu. Ở công thức hàm LEFT, chữ số cuối (start num) là 1; Ở công thức hàm RIGHT không có -1 ở cuối bởi bản thân phần họ tách được ở hàm LEFT đã cộng ký tự trống rồi (Ý bạn là độ dài tổng cộng-độ dài họ-ký tự trống sau họ).
 
Lần chỉnh sửa cuối:
Tôi thấy cách của bạn digita là đơn giản và dễ hiểu nhất. Tuy nhiên, có lẽ bạn hơi nhầm chút xíu. Ở công thức hàm LEFT, chữ số cuối (start num) là 1; Ở công thức hàm RIGHT không có -1 ở cuối bởi bản thân phần họ tách được ở hàm LEFT đã cộng ký tự trống rồi (Ý bạn là độ dài tổng cộng-độ dài họ-ký tự trống sau họ).
A1: Trần Văn Xoài, B1: =LEFT(A1,FIND(" ",A1)-1) sẽ cho kết quả là "Trần", nếu không trừ 1 sẽ cho kết quả là "Trần ". công thức C1: =RIGHT(A1,LEN(A1)-LEN(B1)-1) sẽ cho kết quả là "Văn Xoài", nếu không có -1 sẽ cho kết quả là " Văn Xoài", vì LEN(B1) đã bỏ khoảng trắng. digita không nhầm đâu bạn ạ.
 
Làm thế nào để lấy được chữ lót hả bạn? (lấy chữ nằm giữa họ và tên)

Nguyễn Văn A --> Văn

Nguyễn Hoàng Thùy Linh --> Hoàng Thùy
 
Làm thế nào để lấy được chữ lót hả bạn? (lấy chữ nằm giữa họ và tên)

Nguyễn Văn A --> Văn

Nguyễn Hoàng Thùy Linh --> Hoàng Thùy
Nếu A1 chứa họ tên, xài công thức này thử xem:
PHP:
=TRIM(MID(LEFT(TRIM(A1);LEN(TRIM(A1))-LEN(TRIM(RIGHT(SUBSTITUTE(TRIM(A1);" ";REPT(" ";20));20))));FIND(" ";TRIM(A1))+1;100))
 
Ko được ban ơi :(
Ko được ban ơi :(
 
Lần chỉnh sửa cuối:
Mình muốn lấy Hoàng Kim Thùy

Đây rồi

=MID(TRIM(A1),FIND(" ",TRIM(A1)),FIND("-",SUBSTITUTE(TRIM(A1)," ","-",LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1)," ",""))))-FIND(" ",TRIM(A1)))
 

File đính kèm

Lần chỉnh sửa cuối:
Tách từ bên trái trong chuỗi ký tự

Mình muốn tách lấy từ bên trái ngay sau dấu cách đầu tiên của chuỗi thì làm thế nào

Ví dụ

Nguyen Van A --> Nguyen

12 345 678 --> 12

1. 234 567 --> 1.

Cảm ơn
 

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

Back
Top Bottom