Các phương pháp tách họ và tên đề nghị post ở đây (1 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

Loại bỏ mấy ký tự màu đỏ đi trước khi áp dụng công thức đó...
Mã:
=[COLOR=#0000ff]TRIM(SUBSTITUTE(SUBSTITUTE(A1&" "," HT ","")," (HT) ",""))[/COLOR]
------
Thay đoạn màu xanh vào [A1] trong công thức =RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1," ","*",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))

thank bạn nhiều, mình hỏi thêm nữa:


Mình muốn giữ lại chữ HT với (HT) thì làm sao:


Ví dụ ô có chứa:
aa bb cc HT (muốn lấy chữ cc HT)
aa bb cc dd (HT) (muốn lấy chữ dd (HT))
 
Không biết có ai hỏi chưa, nhưng cũng khá nhiều trang rồi mình lội không được.
Bác nào cho mình hỏi mình muốn lấy user của người đó,
ví dụ: Nguyễn Hồng Sơn thành sonnh
thì mình có thể dùng công thức gì ko, thanks các bác. :)
 
mình dùng hàm như bạn tedaynui


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," ","")))))



Nhưng trong ô tên ví dụ có chữ HT hoặc (HT) nằm cuối cùng thì mình muốn lấy chữ 2 chữ sau cùng thì sửa công thức thế nào ạ?

Ví dụ ô có chứa:

aa bb cc HT (muốn lấy chữ cc HT)
aa bb cc dd (HT) (muốn lấy chữ dd (HT))
 
Hôm trước em thấy cao nhân nào đó chỉ Text column hình như cũng được đó mấy anh, chị ạ
 
Em có file này cần các Thầy và Anh chị giúp đỡ !
File excel của em có 2 sheet (Sheet Data + Sheet Cocktail)
Sheet Data:
Chứa các dữ liệu để Sheet Cocktail có thể dò tìm và trả về kết quả
Sheet Cocktail
Chưa dữ liệu để so sánh và dò tìm từ Sheet Data, giá trị trả về là Cột "PATH"
vd:
* CỘT "MÃ HÀNG"
DRCK0083AL01
† DRCK0083 = MÃ SẢN PHẨM
† A,B,C = CÙNG MÃ SẢN PHẨM NHƯNG PHÁT SINH THÊM
† S,M,L,XL,XXL = SIZE SẢN PHẨM
† 01,03,138 = MÃ MÀU SP
Em muốn hỏi là làm cách nào để dò tìm giá trị trên Sheet DATA và trả về giá trị Cột Path bên Sheet Coocktail
--------------------------------------
Em cám ơn
 

File đính kèm

Tách họ và tên

ĐÂY LÀ CÁCH TÔI ĐÃ HỌC ĐƯỢC TRÊN DIỄN ĐÀN VÀ ĐANG THỰC HIỆN, XIN CHIA SẺ CÙNG BẠN:

Từ file EXCEL có chứa dữ liệu bạn đang muốn tách họ và tên - bạn hãy nhấn Alt + F11 sau đó nhấn insert nhấn module dán đọan mã sau vào trong cửa sổ module:

Private Function Tachten(ten As String, lg As Integer)
Dim j As Integer
Name = Trim(ten)
For j = Len(Name) To 1 Step -1
If Mid(Name, j, 1) = " " Then
If lg = "1" Then
Tachten = Right(Name, Len(Name) - j)
Else
Tachten = Left(Name, j)
End If
Exit For
End If
Next
End Function


SỬ DỤNG HÀM TÍNH TÁCH HỌ VÀ TÊN:
Giả sử bạn muốn tách tên ra khỏi họ và họ đệm tại ô A1 = Phạm Xuân Trường / Gõ = tachten(A1,0) / Kết quả: Phạm Xuân
Giả sử bạn muốn tách tên ra khỏi họ và họ đệm tại ô A1 = Phạm Xuân Trường / Gõ = tachten(A1,1) / Kết quả: Trường


(Nếu muốn sử dụng hàm này cho tòan excel bạn hãy đọc thêm trên diễn đàn này)

Chúc bạn thành công !
Quá hay. Cái này áp dụng thành coongluoon. em cảm ơn anh
 
Mình thấy chuyển lên Google Sheet tách rất nhanh nhé, rồi down lại về file excel nếu bạn chỉ cần tách chứ k làm 1 cách có hệ thống
 
Chủ đề tách họ và tên có vẻ rất được nhiều người quan tâm. Có rất nhiều cách giải quyết như dùng CT tách chuỗi, dùng VBA, dùng mẹo "find and replace". Nếu để tham khảo học hỏi cách giải quyết vấn đề trên diễn đàn thì rất ok. Tuy nhiên, đối với những ai chỉ quan tâm đến kết quả thì mong rằng ad chốt lại cách giải quyết tốt nhất và link để các bạn tải về dùng luôn là được.
 
Hàm vả thủ tục tách họ tên

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

Cám ơn bạn nhiều lắm.
 
Nhờ các anh chị viết công thức ở ô A2 khi công thức của A1 là =OR(B$1=TRUE,B2=TRUE,B3=TRUE), thì ô A2 sẽ là công thức gì để A2 chỉ còn là =OR(B2=TRUE,B3=TRUE)
 
Từ Excel 2013 việc tách họ tên đã đơn giản hơn rất nhiều

 
Hàm vả thủ tục tách họ tên

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
Dùng VBA rất tiện lợi và khả năng tùy biến cao. Tuy nhiên có không ít người chưa biết đến VBA. Vậy nên mình tham khảo cách dùng hàm thông thường đủ chức năng như hàm tự tạo của bạn. Bạn xem tham khảo và góp ý nhé!
Mình chèn công thức vào file của bạn (cột chữ màu đỏ)
 

File đính kèm

Dùng VBA rất tiện lợi và khả năng tùy biến cao. Tuy nhiên có không ít người chưa biết đến VBA. Vậy nên mình tham khảo cách dùng hàm thông thường đủ chức năng như hàm tự tạo của bạn. Bạn xem tham khảo và góp ý nhé!
Mình chèn công thức vào file của bạn (cột chữ màu đỏ)
Có nhất nhiết trích dẫn bài của bác ấy không nhỉ?
1525493935812.png

Công thức ở chủ đề này có vô vàn rồi, ngắn gọn lắm rồi... sao mình còn làm dài vậy?
Ví dụ tách lấy tên:
Mã:
D4=TRIM(RIGHT(SUBSTITUTE(TRIM(B4)," ",REPT(" ",50)),30))
Còn họ và tên đệm:
Mã:
C4=LEFT(TRIM(B4),LEN(TRIM(B4))-LEN(D4)-1)
'Hoặc:
C4=LEFT(TRIM(B4),LEN(TRIM(B4))-LEN(TRIM(RIGHT(SUBSTITUTE(TRIM(B4)," ",REPT(" ",50)),30)))-1)

Mình cùi bắp thì như thế. Còn nếu dùng Excel 2013 trở lên thì Flash Fill rẹt rẹt 10 giây xong hết, không cần nghĩ ngợi gì.
 
Ai không biết VBA (lập trình) thì làm theo tôi như sau:

Giả sử A1 chứa "Họ và Tên".

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)))

Lấy Tên:
=RIGHT(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))-1)
Như anh "Đỗ Phi Đencasstro" (trên mạng) hoặc những cái tên dài trên 7 ký tự thì hàm này lại không dùng được rồi
 
Có nhất nhiết trích dẫn bài của bác ấy không nhỉ?
View attachment 194954

Công thức ở chủ đề này có vô vàn rồi, ngắn gọn lắm rồi... sao mình còn làm dài vậy?
Ví dụ tách lấy tên:
Mã:
D4=TRIM(RIGHT(SUBSTITUTE(TRIM(B4)," ",REPT(" ",50)),30))
Còn họ và tên đệm:
Mã:
C4=LEFT(TRIM(B4),LEN(TRIM(B4))-LEN(D4)-1)
'Hoặc:
C4=LEFT(TRIM(B4),LEN(TRIM(B4))-LEN(TRIM(RIGHT(SUBSTITUTE(TRIM(B4)," ",REPT(" ",50)),30)))-1)

Mình cùi bắp thì như thế. Còn nếu dùng Excel 2013 trở lên thì Flash Fill rẹt rẹt 10 giây xong hết, không cần nghĩ ngợi gì.
Ôi hay quá! Cảm ơn bạn nhiều nhé!
 
Có nhất nhiết trích dẫn bài của bác ấy không nhỉ?
View attachment 194954

Công thức ở chủ đề này có vô vàn rồi, ngắn gọn lắm rồi... sao mình còn làm dài vậy?
Ví dụ tách lấy tên:
Mã:
D4=TRIM(RIGHT(SUBSTITUTE(TRIM(B4)," ",REPT(" ",50)),30))
Còn họ và tên đệm:
Mã:
C4=LEFT(TRIM(B4),LEN(TRIM(B4))-LEN(D4)-1)
'Hoặc:
C4=LEFT(TRIM(B4),LEN(TRIM(B4))-LEN(TRIM(RIGHT(SUBSTITUTE(TRIM(B4)," ",REPT(" ",50)),30)))-1)

Mình cùi bắp thì như thế. Còn nếu dùng Excel 2013 trở lên thì Flash Fill rẹt rẹt 10 giây xong hết, không cần nghĩ ngợi gì.
Bác xem trim(B4) có thể bỏ hàm này được không?
Cách làm của bác rất hay. Em lại cứ lò mò đi làm lòng vòng vì không tính đến các tên riêng dù có dài nhưng luôn có giới hạn (VD bác chọn 30 ký tự)
 
Chỗ này để phòng trường hợp người ta nhập thừa khoảng trắng ở cuối ấy.
Ở hàm lấy tên ý:
D4=TRIM(RIGHT(SUBSTITUTE(TRIM(B4)," ",REPT(" ",50)),30))
Không cần lấy TRIM(B4) trong hàm SUBSTITUTE vì có thừa " " cũng không ảnh hưởng gì mà
 
Cho em hỏi ngược 1 tý
Em muốn gộp dử liệu C2,B2,D2,E2,F2,G2 vào cùng 1 ô H2
với C2 thêm cụm từ "Cửa hàng"
B2 thêm cụm từ "Mã cửa hàng" và
D2 thêm cụm từ "Địa chỉ
Nhờ các cao nhân chỉ giúp ạ
1533009091218.png
 
Xin mấy thầy giúp đở tách họ và tên khác nhau ký tự viết hoa với ạ

MorrisonFaith
JustinManning
BlackSebastian
StewartNash
QuinnLily
SimonKing
RutherfordLuke
JosephParsons
BrandonYoung
GrantAnthony

thank
 
Xin mấy thầy giúp đở tách họ và tên khác nhau ký tự viết hoa với ạ

MorrisonFaith
JustinManning
BlackSebastian
StewartNash
QuinnLily
SimonKing
RutherfordLuke
JosephParsons
BrandonYoung
GrantAnthony

thank
A1=MorrisonFaith
A2=JustinManning
A3=BlackSebastian
A4=StewartNash
A5=........
Mã:
B1=LEFT(A1,MATCH(,INDEX(N(EXACT(LOWER(MID(A1,ROW($2:$100),1)),MID(A1,ROW($2:$100),1))),),))
C1=MID(A1,LEN(B1)+1,100)

Thân
 
uầy, không ngờ nó lại vi diệu đến như thế
 
Mình xin phép chia sẻ cách tách họ tên bằng chức năng flash fill trong excel từ phiên bản 2013 trở đi rất tiện lợi
https://bit.ly/2PBzleP
 
Làm thế nào để tách chuỗi văn bản theo ký tự đặc biệt : Dấu ":" và dấu "|"
Tôi có những chuỗi như trong file đính kèm , bây giở tôi phai tách ra từng đoạn đươc cách nhau bởi cả dấu ":" và dấu "|"
các bạn giúp tôi với
xin cảm ơn nhiều
 

File đính kèm

Làm thế nào để tách chuỗi văn bản theo ký tự đặc biệt : Dấu ":" và dấu "|"
Tôi có những chuỗi như trong file đính kèm , bây giở tôi phai tách ra từng đoạn đươc cách nhau bởi cả dấu ":" và dấu "|"
các bạn giúp tôi với
xin cảm ơn nhiều
Bạn dùng code này xem đúng không nhé.
Mã:
Sub tach()
    Dim arr, i As Long, a As Long, arr1, T, LR As Long
    With Sheet1
         LR = .Range("A" & Rows.Count).End(xlUp).Row
         arr = .Range("A2:A" & LR).Value
         ReDim arr1(1 To UBound(arr, 1), 1 To 100)
         For i = 1 To UBound(arr, 1)
            a = 0
            arr(i, 1) = Replace(arr(i, 1), ":", "|")
            For Each T In Split(arr(i, 1), "|")
                a = a + 1
                arr1(i, a) = T
            Next
        Next i
        .Range("B2").Resize(LR, 100).ClearContents
        .Range("B2").Resize(i - 1, 100).Value = arr1
   End With
End Sub
 

File đính kèm

Bạn dùng code này xem đúng không nhé.
Mã:
Sub tach()
    Dim arr, i As Long, a As Long, arr1, T, LR As Long
    With Sheet1
         LR = .Range("A" & Rows.Count).End(xlUp).Row
         arr = .Range("A2:A" & LR).Value
         ReDim arr1(1 To UBound(arr, 1), 1 To 100)
         For i = 1 To UBound(arr, 1)
            a = 0
            arr(i, 1) = Replace(arr(i, 1), ":", "|")
            For Each T In Split(arr(i, 1), "|")
                a = a + 1
                arr1(i, a) = T
            Next
        Next i
        .Range("B2").Resize(LR, 100).ClearContents
        .Range("B2").Resize(i - 1, 100).Value = arr1
   End With
End Sub
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
 
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.
 
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

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 =(
 
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," ","")))))
 
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
 
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))
 
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
 
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
 
Mình làm kiểu gì cũng lỗi lòi ra :( được 1 lúc lại lỗi
 
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
 

File đính kèm

Lần chỉnh sửa cuối:
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
 
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.
 
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:
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:
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
 
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
 
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
 
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
 
Bài #467 liên quan gì đến tách chuỗi hay họ tên?
 
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!
 
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 độ)

 
"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..
 
"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 ạ!
 
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
 
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!
 
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))
 
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.
 
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
 
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?
 
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?
Cái đó không khó. Cái khó là làm sao biết một từ là lót hay họ kép.
Lê Hoàng Mai thì Hoàng là một phần của tên hay một phần của họ?
 
Có lẽ không cần phân loại từ trong nhóm; cứ lấy 2 từ trong cụm từ cho khỏe để giải:
Mình muốn lấy hai từ cuối là Minh Hương có được không?
 
Hi mọi người! Thật kinh ngạc trước các giải pháp đa dạng của việc tách tên mà anh em đưa ra. Tôi biết 1 cách đơn giản mà tôi thường hay làm là dùng Flash fill hay nói cách đơn giản hơn là tôi chỉ enter nhập mẫu 4,5 lần tạo pattern cho excel rồi việc còn lại excel tự động giải quyết.
Các bạn tham khảo cách này của tôi nhé:
B1: Insert thêm 1 cột hoặc cả 3 cột (Họ, Đệm, Tên) cạnh phải cột đích (Họ và Tên) luôn
B2: Tại cột mới tạo gần nhất cột đích (Họ và tên), bạn nhập lần lượt phần Họ cho khoảng 4 dòng liên tiếp từ dòng đầu tiên như file của bạn: Nguyễn > Nguyễn > Nguyễn > Trần. Khi bạn nhập đến ô Trần này excel đã tự hiểu pattern và nhận cho tất cả các dòng còn lại. Việc của bạn chỉ là ấn enter tất cả phần Họ sẽ được trích xuất ra.
Có thể đây là AI Flash fill chăng?
Lặp lại tương tự với cột Tên đệm và Tên bạn sẽ thấy Excel bản thân nó đã mạnh đến mức nào rồi.
Nhược điểm: Nếu Họ và Tên lớn bằng 4 chữ phần Tên đệm sẽ không đúng, phần Họ,Tên tôi nghĩ luôn đảm bảo chính xác

PS: xin lỗi tôi không post file mẫu được vì dùng máy công ty
 
Hi mọi người! Thật kinh ngạc trước các giải pháp đa dạng của việc tách tên mà anh em đưa ra. Tôi biết 1 cách đơn giản mà tôi thường hay làm là dùng Flash fill hay nói cách đơn giản hơn là tôi chỉ enter nhập mẫu 4,5 lần tạo pattern cho excel rồi việc còn lại excel tự động giải quyết.
Các bạn tham khảo cách này của tôi nhé:
B1: Insert thêm 1 cột hoặc cả 3 cột (Họ, Đệm, Tên) cạnh phải cột đích (Họ và Tên) luôn
B2: Tại cột mới tạo gần nhất cột đích (Họ và tên), bạn nhập lần lượt phần Họ cho khoảng 4 dòng liên tiếp từ dòng đầu tiên như file của bạn: Nguyễn > Nguyễn > Nguyễn > Trần. Khi bạn nhập đến ô Trần này excel đã tự hiểu pattern và nhận cho tất cả các dòng còn lại. Việc của bạn chỉ là ấn enter tất cả phần Họ sẽ được trích xuất ra.
Có thể đây là AI Flash fill chăng?
Lặp lại tương tự với cột Tên đệm và Tên bạn sẽ thấy Excel bản thân nó đã mạnh đến mức nào rồi.
Nhược điểm: Nếu Họ và Tên lớn bằng 4 chữ phần Tên đệm sẽ không đúng, phần Họ,Tên tôi nghĩ luôn đảm bảo chính xác

PS: xin lỗi tôi không post file mẫu được vì dùng máy công ty
Flash Fill dùng cho phiên bản excel 2013 trở về sau. Hiện tại còn rất nhiều người chưa dùng tới phiên bản 2013 này anh à.
Hình như Flash fill vẫn có hạn chế chứ chưa thực sự giải quyết được bài tách họ tên. Vì Flash Fill cũng kiểu như text to column nâng cao thôi ạ
 
Flash Fill dùng cho phiên bản excel 2013 trở về sau. Hiện tại còn rất nhiều người chưa dùng tới phiên bản 2013 này anh à.
Hình như Flash fill vẫn có hạn chế chứ chưa thực sự giải quyết được bài tách họ tên. Vì Flash Fill cũng kiểu như text to column nâng cao thôi ạ
- Tôi đồng ý về hạn chế về phần version của excel, từ 2013 mới có tính năng này
- Tôi cho là tuy Giải pháp về Flash fill hoặc Text to Column by Delimeter chưa giải quyết 100% các trường hợp đưa ra nhưng đây là giải pháp nhanh, tiện lợi giải quyết được 90% trường hợp về tách họ, tên
 
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," ","")))))

Cách này của cháu lấy tên Chuẩn theo dân IT của FPT chính xác nhất , ưu việt nhất, mạnh mẽ nhất, nhanh nhất, dể hiểu nhất, tốt nhất, giá thành đắt nhất, cuối cùng là đẳng cấp nhất..

=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1)))
 
Cách này của cháu lấy tên Chuẩn theo dân IT của FPT chính xác nhất , ưu việt nhất, mạnh mẽ nhất, nhanh nhất, dể hiểu nhất, tốt nhất, giá thành đắt nhất, cuối cùng là đẳng cấp nhất..

=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1)))
Woa, công thức thật ....tuyệt vời
 
Cách này của cháu lấy tên Chuẩn theo dân IT của FPT chính xác nhất , ưu việt nhất, mạnh mẽ nhất, nhanh nhất, dể hiểu nhất, tốt nhất, giá thành đắt nhất, cuối cùng là đẳng cấp nhất..

=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1)))
Công thức của dân chuyên IT của FPT thì đẳng cấp rồi.
Vậy cháu viết 1 công thức dành cho việc tách họ, tên đệm, tên mà kéo 1 phát được 3 thứ đó không? Nhiều khi tôi muốn dùng 1 công thức mà không biết, đánh đi đánh lại 3 lần tại 3 cột mà mỏi tay quá. Lại khó nhớ công thức nữa.
 
Công thức của dân chuyên IT của FPT thì đẳng cấp rồi.
Vậy cháu viết 1 công thức dành cho việc tách họ, tên đệm, tên mà kéo 1 phát được 3 thứ đó không? Nhiều khi tôi muốn dùng 1 công thức mà không biết, đánh đi đánh lại 3 lần tại 3 cột mà mỏi tay quá. Lại khó nhớ công thức nữa.
1 công thức mà " giá thành đắt nhất " 3 công thức e cháy túi
 
Hello mọi người
Minh đang cần hàm Excel kết hợp VBA để xử lý 1 tính huống như file ảnh mình gửi.
1666855091827.png
Mình cần tạo user Account cho hàng ngàn người đã có thông tin Họ tên. Như ví dụ trên user có tên Trinh Duc Luan, sang cột bên kia sẽ tự chuyển thành luantd và sẽ tự nhảy khi có người mới nếu trùng tên ví dụ luantd1, luantd2.
Mọi người giúp mình được không nhỉ ?

Thanks
 

File đính kèm

Lần chỉnh sửa cuối:
Hello mọi người
Minh đang cần hàm Excel kết hợp VBA để xử lý 1 tính huống như file ảnh mình gửi.
View attachment 282586
Mình cần tạo user Account cho hàng ngàn người đã có thông tin Họ tên. Như ví dụ trên user có tên Trinh Duc Luan, sang cột bên kia sẽ tự chuyển thành luantd và sẽ tự nhảy khi có người mới nếu trùng tên ví dụ luantd1, luantd2.
Mọi người giúp mình được không nhỉ ?

Thanks
Cái này có phải tách họ tên đâu ta.Mà file không có thì làm gì.Hay cần đánh dữ liệu cho bạn rồi viết code.
 
@Chủ bài đăng

CA14.jpg

Viết ví dụ cũng hà tiện nữa, không khá lên được!

Ho & Ten
Trịnh Dục LuânLuanTD
Trần Đức Loạn?LoanTD
Trà Thị Mỹ Linh? LinhTTM
Công tằng Tôn Nữ Minh Nguyệt? NguyetCTTNM
Trịnh Thượng? ThuongT
 
Hello mọi người
Minh đang cần hàm Excel kết hợp VBA để xử lý 1 tính huống như file ảnh mình gửi.
View attachment 282586
Mình cần tạo user Account cho hàng ngàn người đã có thông tin Họ tên. Như ví dụ trên user có tên Trinh Duc Luan, sang cột bên kia sẽ tự chuyển thành luantd và sẽ tự nhảy khi có người mới nếu trùng tên ví dụ luantd1, luantd2.
Mọi người giúp mình được không nhỉ ?

Thanks
Thử code này.
Mã:
Sub abc()
    Dim i As Long, arr, dic As Object, ten As String, T, lr As Long, k As Long
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("sheet1")
        lr = .Range("A" & Rows.Count).End(xlUp).Row
        arr = .Range("A2:B" & lr).Value
        ReDim kq(1 To UBound(arr), 1 To 1)
        For i = 1 To UBound(arr)
            T = Split(" " & Application.Trim(arr(i, 1)), " ")
            ten = Empty
            For k = 1 To UBound(T) - 1
                ten = ten & Left(T(k), 1)
            Next k
                ten = T(UBound(T)) & ten
                If Not dic.exists(ten) Then
                   dic.Add ten, 1
                   kq(i, 1) = ten
                Else
                   kq(i, 1) = ten & dic.Item(ten)
                   dic.Item(ten) = dic.Item(ten) + 1
                End If
       Next i
       .Range("C2:C" & lr).Value = kq
   End With
   Set dic = Nothing
End Sub
 
Thử code này.
Mã:
Sub abc()
    Dim i As Long, arr, dic As Object, ten As String, T, lr As Long, k As Long
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("sheet1")
        lr = .Range("A" & Rows.Count).End(xlUp).Row
        arr = .Range("A2:B" & lr).Value
        ReDim kq(1 To UBound(arr), 1 To 1)
        For i = 1 To UBound(arr)
            T = Split(" " & Application.Trim(arr(i, 1)), " ")
            ten = Empty
            For k = 1 To UBound(T) - 1
                ten = ten & Left(T(k), 1)
            Next k
                ten = T(UBound(T)) & ten
                If Not dic.exists(ten) Then
                   dic.Add ten, 1
                   kq(i, 1) = ten
                Else
                   kq(i, 1) = ten & dic.Item(ten)
                   dic.Item(ten) = dic.Item(ten) + 1
                End If
       Next i
       .Range("C2:C" & lr).Value = kq
   End With
   Set dic = Nothing
End Sub
Sau khi add code này vào excel, thì làm sao để sử dụng bạn nhỉ ?
 
Bạn dùng hàm tự tạo (UDF) nhé.
Bước 1) Alt-F11 mở cửa sổ VBA editor, Insert/module. Copy đoạn code dưới đây vào:
PHP:
Option Explicit
Function Uname(cell As Range)
Dim i&, Ln As Range, st, ce As Range, max&
Set Ln = Range("C1:C" & cell.Row - 1)
st = Split(" " & cell.Value)
For i = 1 To UBound(st) - 1
    Uname = Uname & LCase(Left(st(i), 1))' LCase: Họ và Lót viết thường. Nếu muốn viết hoa thì dùng Ucase
Next
Uname = st(UBound(st)) & Uname
If WorksheetFunction.CountIf(Ln, Uname & "*") = 0 Then Exit Function
For Each ce In Ln
    st = Replace(ce, Uname, "")
    If Len(st) = 0 Then
        max = 1
    ElseIf IsNumeric(st) Then max = max + 1
    End If
Next
Uname = Uname & IIf(max = 0, "", max)
End Function

Bước 2) Đóng cửa sổ VBA.
Tại ô C2:
=uname(A2)
Kéo xuống
Save As file dạng "Excel Macro-Enable Workbook" (.xlsm)
 

File đính kèm

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

Back
Top Bottom