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

Liên hệ QC
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

  • Ho & ten.xls
    13.5 KB · Đọc: 48
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

  • Copy of Ho & ten.xls
    13.5 KB · Đọc: 94
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

  • TachHoVaTen.xls
    24 KB · Đọc: 48
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

  • AddSpace.xls
    20 KB · Đọc: 20
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

  • themkhoangtrang.xls
    23.5 KB · Đọc: 27
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

  • HoTen.xls
    19 KB · Đọc: 33
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 ạ?
 
Web KT
Back
Top Bottom