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

He he - Xin lỗi Bạn Ba Tê - Tôi viết nhầm - ý tôi là : Loại bỏ 03 ký tự đầu - lấy những ký tự sau
vì chuỗi còn lại có độ dài khác nhau nên tôi muốn hỏi có cách nào cho kết quả nhanh hơn cách Bạn chỉ ở trên không ?
Caem ơn Bạn nhiều

Thì anh dùng hàm MID
Ví dụ: =MID(A1, 4, 255)
với A1 là chuổi đầu vào
Xong!
 
Hàm tách "Tên" trong danh sách "Họ và Tên"

- Chào các bạn!

+ Do đặc thù công việc nên việc lấy tên trong danh sách "Họ và tên" để hoàn thành cho phần "Ký tên" là việc cần phải hoàn thiện cho bảng tính.

+ Chúng ta không thể nhập lại tên từng người trong danh sách. Vì vậy mình xin chia sẻ một cách có thể giải quyết được công việc này.

=IF(AND(LEN(TRIM(RIGHT(B7,1)))=LEN(RIGHT(B7,1)),LEN(RIGHT(B7,2))<>LEN(TRIM(RIGHT(B7,2)))),RIGHT(B7,1),IF(AND(LEN(TRIM(RIGHT(B7,2)))=LEN(RIGHT(B7,2)),LEN(RIGHT(B7,3))<>LEN(TRIM(RIGHT(B7,3)))),RIGHT(B7,2),IF(AND(LEN(TRIM(RIGHT(B7,3)))=LEN(RIGHT(B7,3)),LEN(RIGHT(B7,4))<>LEN(TRIM(RIGHT(B7,4)))),RIGHT(B7,3),IF(AND(LEN(TRIM(RIGHT(B7,4)))=LEN(RIGHT(B7,4)),LEN(RIGHT(B7,5))<>LEN(TRIM(RIGHT(B7,5)))),RIGHT(B7,5),IF(AND(LEN(TRIM(RIGHT(B7,5)))=LEN(RIGHT(B7,5)),LEN(RIGHT(B7,6))<>LEN(TRIM(RIGHT(B7,6)))),RIGHT(B7,5),RIGHT(B7,6))))))

- Chi tiết các bạn xem file đính kèm:

Chúc các bạn thành công!
 

File đính kèm

Bạn tham gia diễn đàn từ 2010 và bạn chưa đọc "tuyệt chiêu tách tên" trên GPE
Bạn thử so sánh công thức của bạn với công thức sau xem sao:
Mã:
=TRIM(RIGHT(SUBSTITUTE(B7," ",REPT(" ",255)),8))
 
Nếu chỉ tách tên cuối cùng thì đâu cần công thức dài đến như thế kia
 
- Chào các bạn!

+ Do đặc thù công việc nên việc lấy tên trong danh sách "Họ và tên" để hoàn thành cho phần "Ký tên" là việc cần phải hoàn thiện cho bảng tính.

+ Chúng ta không thể nhập lại tên từng người trong danh sách. Vì vậy mình xin chia sẻ một cách có thể giải quyết được công việc này.

=IF(AND(LEN(TRIM(RIGHT(B7,1)))=LEN(RIGHT(B7,1)),LEN(RIGHT(B7,2))<>LEN(TRIM(RIGHT(B7,2)))),RIGHT(B7,1),IF(AND(LEN(TRIM(RIGHT(B7,2)))=LEN(RIGHT(B7,2)),LEN(RIGHT(B7,3))<>LEN(TRIM(RIGHT(B7,3)))),RIGHT(B7,2),IF(AND(LEN(TRIM(RIGHT(B7,3)))=LEN(RIGHT(B7,3)),LEN(RIGHT(B7,4))<>LEN(TRIM(RIGHT(B7,4)))),RIGHT(B7,3),IF(AND(LEN(TRIM(RIGHT(B7,4)))=LEN(RIGHT(B7,4)),LEN(RIGHT(B7,5))<>LEN(TRIM(RIGHT(B7,5)))),RIGHT(B7,5),IF(AND(LEN(TRIM(RIGHT(B7,5)))=LEN(RIGHT(B7,5)),LEN(RIGHT(B7,6))<>LEN(TRIM(RIGHT(B7,6)))),RIGHT(B7,5),RIGHT(B7,6))))))

- Chi tiết các bạn xem file đính kèm:

Chúc các bạn thành công!

Giả sử có người tên NGHIÊNG thì hàm của bạn thành GHIÊNG.

Hãy xem kỹ các trường hợp trước khi post bài lên nhé, thêm nữa là hàm tách tên này tràn ngập trên diễn đàn này rồi. Hay bạn muốn quảng cáo cái trung tâm kia trong file nhỉ?
 
Giả sử có người tên NGHIÊNG thì hàm của bạn thành GHIÊNG.

Hãy xem kỹ các trường hợp trước khi post bài lên nhé, thêm nữa là hàm tách tên này tràn ngập trên diễn đàn này rồi. Hay bạn muốn quảng cáo cái trung tâm kia trong file nhỉ?

- Bạn đừng hiểu sai ý mình, mình chỉ muốn chia sẻ thêm một cách mà chỉ cần dùng những hàm cơ bản vẫn có thể sử lý được. Với những hàm ngắn thì sẽ tích hợp mà không phải ai cũng biết.
- Hi! Với tên "Nghiêng" bạn chỉ cần thêm một chút như code dưới đây là ổn:

=IF(AND(LEN(TRIM(RIGHT(B7,1)))=LEN(RIGHT(B7,1)),LEN(RIGHT(B7,2))<>LEN(TRIM(RIGHT(B7,2)))),RIGHT(B7,1),IF(AND(LEN(TRIM(RIGHT(B7,2)))=LEN(RIGHT(B7,2)),LEN(RIGHT(B7,3))<>LEN(TRIM(RIGHT(B7,3)))),RIGHT(B7,2),IF(AND(LEN(TRIM(RIGHT(B7,3)))=LEN(RIGHT(B7,3)),LEN(RIGHT(B7,4))<>LEN(TRIM(RIGHT(B7,4)))),RIGHT(B7,3),IF(AND(LEN(TRIM(RIGHT(B7,4)))=LEN(RIGHT(B7,4)),LEN(RIGHT(B7,5))<>LEN(TRIM(RIGHT(B7,5)))),RIGHT(B7,5),IF(AND(LEN(TRIM(RIGHT(B7,5)))=LEN(RIGHT(B7,5)),LEN(RIGHT(B7,6))<>LEN(TRIM(RIGHT(B7,6)))),RIGHT(B7,5),IF(AND(LEN(TRIM(RIGHT(B7,6)))=LEN(RIGHT(B7,6)),LEN(RIGHT(B7,7))<>LEN(TRIM(RIGHT(B7,7)))),RIGHT(B7,6),RIGHT(B7,7)))))))
 
- Bạn đừng hiểu sai ý mình, mình chỉ muốn chia sẻ thêm một cách mà chỉ cần dùng những hàm cơ bản vẫn có thể sử lý được. Với những hàm ngắn thì sẽ tích hợp mà không phải ai cũng biết.
- Hi! Với tên "Nghiêng" bạn chỉ cần thêm một chút như code dưới đây là ổn:

=IF(AND(LEN(TRIM(RIGHT(B7,1)))=LEN(RIGHT(B7,1)),LEN(RIGHT(B7,2))<>LEN(TRIM(RIGHT(B7,2)))),RIGHT(B7,1),IF(AND(LEN(TRIM(RIGHT(B7,2)))=LEN(RIGHT(B7,2)),LEN(RIGHT(B7,3))<>LEN(TRIM(RIGHT(B7,3)))),RIGHT(B7,2),IF(AND(LEN(TRIM(RIGHT(B7,3)))=LEN(RIGHT(B7,3)),LEN(RIGHT(B7,4))<>LEN(TRIM(RIGHT(B7,4)))),RIGHT(B7,3),IF(AND(LEN(TRIM(RIGHT(B7,4)))=LEN(RIGHT(B7,4)),LEN(RIGHT(B7,5))<>LEN(TRIM(RIGHT(B7,5)))),RIGHT(B7,5),IF(AND(LEN(TRIM(RIGHT(B7,5)))=LEN(RIGHT(B7,5)),LEN(RIGHT(B7,6))<>LEN(TRIM(RIGHT(B7,6)))),RIGHT(B7,5),IF(AND(LEN(TRIM(RIGHT(B7,6)))=LEN(RIGHT(B7,6)),LEN(RIGHT(B7,7))<>LEN(TRIM(RIGHT(B7,7)))),RIGHT(B7,6),RIGHT(B7,7)))))))


Cám ơn bạn đã chia sẻ, nhưng nếu bạn đặt cương vị là người dùng thì bạn sẽ chọn cách của bạn hay chọn công thức dưới đây?


Bạn tham gia diễn đàn từ 2010 và bạn chưa đọc "tuyệt chiêu tách tên" trên GPE
Bạn thử so sánh công thức của bạn với công thức sau xem sao:
Mã:
[COLOR=#0000cd][B]=TRIM(RIGHT(SUBSTITUTE(B7," ",REPT(" ",255)),8))[/B][/COLOR]
 
Lần chỉnh sửa cuối:
Bạn tham gia diễn đàn từ 2010 và bạn chưa đọc "tuyệt chiêu tách tên" trên GPE
Bạn thử so sánh công thức của bạn với công thức sau xem sao:
Mã:
=TRIM(RIGHT(SUBSTITUTE(B7," ",REPT(" ",255)),8))

- Thanks sự góp ý của bạn! mình cũng bận nhiều việc nên không có dịp tham gia diễn đàn được nhiều! ở đây mình chỉ muốn chia sẻ thêm một cách tách "Tên" mà chỉ cần dùng những hàm căn bản mà ai cũng có thể biết.
Thanks bạn!
 
- Thanks sự góp ý của bạn! mình cũng bận nhiều việc nên không có dịp tham gia diễn đàn được nhiều! ở đây mình chỉ muốn chia sẻ thêm một cách tách "Tên" mà chỉ cần dùng những hàm căn bản mà ai cũng có thể biết.
Thanks bạn!

Đó, tôi đã dời bài của bạn vào topic này rồi, bạn tha hồ mà tham khảo tất cả các cách tách tên họ bạn nhé.
 
- Code đó của bạn rất tuyệt! nhưng bạn cũng biết là với hàm "SUBSTITUTE" cũng không phải ai cũng biết đến!
Không riêng gì hàm SUBSTITUTE, còn nhiều hàm khác mà KHÔNG PHẢI AI CŨNG BIẾT
Nếu MUỐN BIẾT ---> Tham gia GPE thường xuyên thì sẽ... BIẾT
Ẹc... Ẹc...
 
Xin các bác giúp em tách Họ và Tên thành Tên và Họ của file đính kèm ạ, em cảm ơn
 

File đính kèm

He he - Xin lỗi Bạn Ba Tê - Tôi viết nhầm - ý tôi là : Loại bỏ 03 ký tự đầu - lấy những ký tự sau
vì chuỗi còn lại có độ dài khác nhau nên tôi muốn hỏi có cách nào cho kết quả nhanh hơn cách Bạn chỉ ở trên không ?
Caem ơn Bạn nhiều

Bạn dùng =Right(chuỗi,len(chuỗi)-3) là được rồi
 
Mình đang muốn tách họ, tên đệm, tên, giống hệt như text to columm nhưng chưa biết hàm nào có thể xử lý được việc này (Mình muốn nó làm tự động, nhập tên vào là tự tách ngay)
Ex:
Nguyễn Thị Lung Linh Lúng Lính sẽ được tách thành :

Nguyễn| Thị|Lung| Linh| Lúng| Lính
trong đó "|" là khoảng chia các cột

Các bạn giúp mình với! :D
 
Mình đang muốn tách họ, tên đệm, tên, giống hệt như text to columm nhưng chưa biết hàm nào có thể xử lý được việc này (Mình muốn nó làm tự động, nhập tên vào là tự tách ngay)
Ex:
Nguyễn Thị Lung Linh Lúng Lính sẽ được tách thành :

Nguyễn| Thị|Lung| Linh| Lúng| Lính
trong đó "|" là khoảng chia các cột

Các bạn giúp mình với! :D
A1 bạn nhập : Nguyễn Thị Lung Linh Lúng Lính Tỏn Tẻn Tòn Ten
B1 nhập công thức:
PHP:
=TRIM(MID(SUBSTITUTE($A1;" ";REPT(" ";250));(COLUMNS($A:A)-1)*250+1;250))
Kéo copy từ B1 sang phải đến "mút chỉ" thử xem
 
A1 bạn nhập : Nguyễn Thị Lung Linh Lúng Lính Tỏn Tẻn Tòn Ten
B1 nhập công thức:
PHP:
=TRIM(MID(SUBSTITUTE($A1;" ";REPT(" ";250));(COLUMNS($A:A)-1)*250+1;250))
Kéo copy từ B1 sang phải đến "mút chỉ" thử xem
tình hình là mình đã test nhưng báo lỗi ở $A1, thử chỉnh lại thành $A$1 mà vẫn không hoạt động được
 
tình hình là mình đã test nhưng báo lỗi ở $A1, thử chỉnh lại thành $A$1 mà vẫn không hoạt động được
Lỗi sao đúng ra bạn nên gởi file lên xem, nói vậy ai hiểu bạn làm cái gì mà bị lỗi.
Xem file này thử xem
 

File đính kèm

oh yeahh!!

mình đãng trí quá, copy nguyên cả đoạn code cho vào nên excel không chạy :v

cảm ơn bạn nha
 
ah, cho mình hỏi thêm: vẫn sử dụng cách trên nhưng có cách nào để các giá trị vừa tìm thấy tự bỏ đi phần tên cuối cùng không nhỉ?

"Nguyễn văn thanh a" chỉ thành Nguyễn| Văn| Thanh|

thì tự động bỏ "a" đi
 
ah, cho mình hỏi thêm: vẫn sử dụng cách trên nhưng có cách nào để các giá trị vừa tìm thấy tự bỏ đi phần tên cuối cùng không nhỉ?

"Nguyễn văn thanh a" chỉ thành Nguyễn| Văn| Thanh|

thì tự động bỏ "a" đi

Hy vọng lần này bạn sử dụng được công thức này:
PHP:
=TRIM(MID(LEFT(SUBSTITUTE($A1;" ";REPT(" ";250));LEN(SUBSTITUTE($A1;" ";REPT(" ";250)))-250);(COLUMNS($A:A)-1)*250+1;250))
Có thể máy bạn dùng dấu Phẩy, còn máy tôi là Chấm Phẩy
 
Hy vọng lần này bạn sử dụng được công thức này:
PHP:
=TRIM(MID(LEFT(SUBSTITUTE($A1;" ";REPT(" ";250));LEN(SUBSTITUTE($A1;" ";REPT(" ";250)))-250);(COLUMNS($A:A)-1)*250+1;250))
Có thể máy bạn dùng dấu Phẩy, còn máy tôi là Chấm Phẩy
Sao không dùng công thức cũ, nhưng chỉ kéo đến khi muốn ngưng thì ngưng? Làm rồi than mệt.
 
Sao không dùng công thức cũ, nhưng chỉ kéo đến khi muốn ngưng thì ngưng? Làm rồi than mệt.
Híc!
Người ta "đòi" tự động mà, đâu biết tên dài bi nhiêu từ, cứ kéo công thức ngang qua cho 100 ô đi cho "đã".
Mệt thiệt chớ bộ.
 
Vậy thì dùng công thức đếm khoảng trắng, so columns($A1:A1) với số đó, bằng thì ngưng.

=If(len($A1)-len(Substitute($A1," ","")>columns($A1:A1), công thức cũ, "")

Si nghĩ đơn giản thì đỡ mệt hơn, dù cho công thức dài hơn. Biết đâu dài lại nhanh hơn ngắn?
 
Vậy thì dùng công thức đếm khoảng trắng, so columns($A1:A1) với số đó, bằng thì ngưng.

=If(len($A1)-len(Substitute($A1," ","")>columns($A1:A1), công thức cũ, "")

Si nghĩ đơn giản thì đỡ mệt hơn, dù cho công thức dài hơn. Biết đâu dài lại nhanh hơn ngắn?
hình như là cú pháp quá dài nên excel không cho thực hiện :|:|
 

File đính kèm

  • excel.jpg
    excel.jpg
    17 KB · Đọc: 111
Hy vọng lần này bạn sử dụng được công thức này:
PHP:
=TRIM(MID(LEFT(SUBSTITUTE($A1;" ";REPT(" ";250));LEN(SUBSTITUTE($A1;" ";REPT(" ";250)))-250);(COLUMNS($A:A)-1)*250+1;250))
Có thể máy bạn dùng dấu Phẩy, còn máy tôi là Chấm Phẩy
còn câu này thi mình dùng ngon quá, mình đang làm 1 file cho các cụ nên cứ phải tự động toàn bộ không các cụ lại không sử dụng được :D

THANK bạn quá
 
Chào các bạn GPE!

Mình có một file nhập liệu của Phổ Cập, ở Cột Họ Tên sau khi nhập sẽ tự động tách họ tên và viết hoa đầu từ mà không lệ thuộc vào cách nhập chữ in hay chữ thường. Xin gửi đến các bạn tham khảo. File do địa phương cung cấp nên mình không biết pass VBA ngen.
 

File đính kèm

Lần chỉnh sửa cuối:
tách chuổii

minh cần tách chuổi này ra các bạn xem giúp mình nhé
 

File đính kèm

ghép các chuổi

Công thức:
Mã:
=MID(SUBSTITUTE($C$4,",",""),ROW(A1)*3-2,3)
cám ơn anh em đã làm được rồi
e có thêm bài này a xem giúp em cách ghép các chuổi này nhé, bài này dùng cột phụ thì ok rùi nhưng cột phụ quá nhiều, vậy anh có thể xem giúp có cách nào rút ngắn công thức và ít cột phụ lại được không anh nhé.
trong bài này e muốn viết công thức cho ra được kết quả như tại cột F
cám ơn
 

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn các bác nhiều! Em học được ở topic này nhiều lắm!
 
Cho em hỏi cái vụ tách tên: Em tìm nảy giờ cũng hơi khá lâu nhưng chưa đưa ra được giải pháp
VD như:Chung 1 lớp có 2 học sinh Họ & Tên đều giống nhau, nên nhà trường ghi danh sách là:
Lý Thị Như Ý (A); Lý Thị Như Ý (B).
Hỏi: Khi tách tên ra là Ý (A); Ý (B), thì công thức như thế nào? Em có dùng công thức này nhưng chưa được:
TRIM(RIGHT(SUBSTITUTE(TRIM(B7)," ",REPT(" ",1000)),1000))
và em muốn gộp Họ và Tên lại như: Lý Ý (A), thì công thức ra sao? Xin được giúp đỡ. Em chân thành cảm ơn nhiều ạ.
 
Cho em hỏi cái vụ tách tên: Em tìm nảy giờ cũng hơi khá lâu nhưng chưa đưa ra được giải pháp
VD như:Chung 1 lớp có 2 học sinh Họ & Tên đều giống nhau, nên nhà trường ghi danh sách là:
Lý Thị Như Ý (A); Lý Thị Như Ý (B).
Hỏi: Khi tách tên ra là Ý (A); Ý (B), thì công thức như thế nào? Em có dùng công thức này nhưng chưa được:

và em muốn gộp Họ và Tên lại như: Lý Ý (A), thì công thức ra sao? Xin được giúp đỡ. Em chân thành cảm ơn nhiều ạ.
Thử cái củ chuối này xem, giả sử chuỗi Lý Thị Như Ý (B) nằm ở F1 :
PHP:
=TRIM(RIGHT(SUBSTITUTE(TRIM(F1)," ",REPT(" ",50)),IF(ISERROR(FIND("(",F1)),50,50*2)))
Nối thành Lý Ý (A) thì thử cái này :
PHP:
=TRIM(LEFT(SUBSTITUTE(TRIM(F1)," ",REPT(" ",50)),50))&" "&TRIM(RIGHT(SUBSTITUTE(TRIM(F1)," ",REPT(" ",50)),IF(ISERROR(FIND("(",F1)),50,50*2)))
 
[warning1]VD như:Chung 1 lớp có 2 học sinh Họ & Tên đều giống nhau, nên nhà trường ghi danh sách là:
Lý Thị Như Ý (A); Lý Thị Như Ý (B).[/warning1]

Ghi như vầy là cửa quyền & có hại không những cho các em đó, mà còn hại chính ngay nhà trường;

Điều cần thiết là fân biệt 2 /3/... em này bằng mã duy nhất!
 
ghép chuổi lại

các anh chị cho e xin đoạn code VBA viết ghép các ký tự lại như trong file e đưa lên nhé

cám ơn
 

File đính kèm

các anh chị cho e xin đoạn code VBA viết ghép các ký tự lại như trong file e đưa lên nhé

cám ơn
Tặng bạn Function đơn giản này chép vào cửa số VBA

[GPECODE=vb]
Function GhepChuoi(ByVal Vung As Range, Optional DauNoi As String) As String
With WorksheetFunction
GhepChuoi = .Trim(Join(.Transpose(Vung.Value), DauNoi))
End With
End Function
[/GPECODE]

Công thức chỉ đúng với vùng dữ liệu là 1 cột nếu 2 cột sẽ bị sai hiện tại chỉ viết theo yêu cầu của bạn
Ví dụ:
=ghepchuoi(E5:E8,",")
Bạn post nhiều bài rồi nên chú ý đừng post không đúng chủ để
 
Tặng bạn Function đơn giản này chép vào cửa số VBA

[GPECODE=vb]
Function GhepChuoi(ByVal Vung As Range, Optional DauNoi As String) As String
With WorksheetFunction
GhepChuoi = .Trim(Join(.Transpose(Vung.Value), DauNoi))
End With
End Function
[/GPECODE]

Công thức chỉ đúng với vùng dữ liệu là 1 cột nếu 2 cột sẽ bị sai hiện tại chỉ viết theo yêu cầu của bạn
Ví dụ:
=ghepchuoi(E5:E8,",")
Bạn post nhiều bài rồi nên chú ý đừng post không đúng chủ để
minh biết lổi rui, cám ơn bạn đã nhac nhở, nhưng bạn ơi minh copy vao xong không dùng được bạn chỉ mình dùng thế nào với
 
Tranh thủ lúc hắn đang ngủ!

[thongbao]
nhưng bạn ơi minh copy vao xong không dùng được bạn chỉ mình dùng thế nào với [/thongbao]
 

File đính kèm

Topic "Tổng hợp các phương pháp tách họ và tên" (đăng ngày 3.5.14)

Phần II. Tách tên lót, có ghi công thức là:

Mã:
[COLOR=#000000][COLOR=#007700]{=[/COLOR][COLOR=#0000BB]MID[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]TRIM[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]A2[/COLOR][COLOR=#007700]),[/COLOR][COLOR=#0000BB]FIND[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]" "[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]TRIM[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]A2[/COLOR][COLOR=#007700]))+[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]MAX[/COLOR][COLOR=#007700](([/COLOR][COLOR=#0000BB]MID[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]TRIM[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]A2[/COLOR][COLOR=#007700]),[/COLOR][COLOR=#0000BB]ROW[/COLOR][COLOR=#007700]($[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]:$[/COLOR][COLOR=#0000BB]50[/COLOR][COLOR=#007700]),[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) =[/COLOR][COLOR=#DD0000]" "[/COLOR][COLOR=#007700])*[/COLOR][COLOR=#0000BB]ROW[/COLOR][COLOR=#007700]($[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]:$[/COLOR][COLOR=#0000BB]50[/COLOR][COLOR=#007700]))-[/COLOR][COLOR=#0000BB]FIND[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]" "[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]TRIM[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]A2[/COLOR][COLOR=#007700])))}[/COLOR][/COLOR]

anh xem lại công thức trên một tí nhé, hình như ta quên trừ đi 1 khoảng trắng dư thừa, Em xin fix lại như này:

Mã:
[COLOR=#000000][COLOR=#007700]{=[/COLOR][COLOR=#0000BB]MID[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]TRIM[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]A2[/COLOR][COLOR=#007700]),[/COLOR][COLOR=#0000BB]FIND[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]" "[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]TRIM[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]A2[/COLOR][COLOR=#007700]))+[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]MAX[/COLOR][COLOR=#007700](([/COLOR][COLOR=#0000BB]MID[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]TRIM[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]A2[/COLOR][COLOR=#007700]),[/COLOR][COLOR=#0000BB]ROW[/COLOR][COLOR=#007700]($[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]:$[/COLOR][COLOR=#0000BB]50[/COLOR][COLOR=#007700]),[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) =[/COLOR][COLOR=#DD0000]" "[/COLOR][COLOR=#007700])*[/COLOR][COLOR=#0000BB]ROW[/COLOR][COLOR=#007700]($[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]:$[/COLOR][COLOR=#0000BB]50[/COLOR][COLOR=#007700]))-[/COLOR][COLOR=#0000BB]FIND[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]" "[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]TRIM[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]A2[/COLOR][COLOR=#007700]))[/COLOR][/COLOR][COLOR=#ff0000][B]-1[/B][/COLOR][COLOR=#000000][COLOR=#007700])}[/COLOR][/COLOR]

Topic rất hay,
Thân ái !
 
Đúng như bạn nói họ lót bị dư 1 khoảng trắng, nhưng nếu mình -1 như công thức bạn đề nghị sẽ có trường hợp bị lỗi do không có họ lót (Trường hợp Họ và Tên có 2 chữ).

Nếu Họ và Tên chỉ có 1 chữ thì hàm cũng sẽ bị lỗi.

Xem thêm bài này về tách họ tên:
http://www.giaiphapexcel.com/forum/showthread.php?92281

TPhong
 
Đúng như bạn nói họ lót bị dư 1 khoảng trắng, nhưng nếu mình -1 như công thức bạn đề nghị sẽ có trường hợp bị lỗi do không có họ lót (Trường hợp Họ và Tên có 2 chữ).

Nếu Họ và Tên chỉ có 1 chữ thì hàm cũng sẽ bị lỗi.

Xem thêm bài này về tách họ tên:
http://www.giaiphapexcel.com/forum/showthread.php?92281

TPhong

Anh nói rất đúng, sẽ có trường hợp người dùng không có chữ lót sẽ gây ra lỗi,
Vậy ta ta phải thay công thức như thế này, giờ nó tạm thời sẽ trông như thế này:

Mã:
[COLOR=#000000][COLOR=#007700]{[/COLOR][/COLOR][COLOR=#000000][COLOR=#007700]=MID(TRIM(A2),FIND(" ",TRIM(A2))+1,IF([/COLOR][/COLOR][COLOR=#b22222]MAX((MID(TRIM(A2),ROW(1:50),1)=" ")*ROW(1:50))-FIND(" ",TRIM(A2))[/COLOR][COLOR=#ff0000]-1[/COLOR][COLOR=#000000][COLOR=#007700]<0,0, _
[/COLOR][/COLOR][COLOR=#b22222]MAX((MID(TRIM(A2),ROW(1:50),1)=" ")*ROW(1:50))-FIND(" ",TRIM(A2))[/COLOR][COLOR=#ff0000]-1[/COLOR][COLOR=#000000][COLOR=#007700]))}[/COLOR][/COLOR]

Công thức giờ cứ luxubu cả lên, nhìn không đẹp gì cả !!!
-> Nếu không cắt bỏ chuỗi dư thừa, sau này (nếu có) đếm số ký tự thì sẽ gặp rắc rối !
-> Nếu dùng IFERROR thì ta sẽ phiền phức trong tương lai khi kiểm tra lỗi
-> Nếu dùng ERROR.TYPE thì cũng phải lặp lại công thức như IF
... )):zz
 
Lần chỉnh sửa cuối:
{=RIGHT(C2;LEN(C2)-LARGE((MID(C2;ROW(INDIRECT("1:"&LEN(C2)));1)=" ")*ROW(INDIRECT("1:"&LEN(C2)));1))}

Ai test thử cái này xảy ra lỗi gì không?
 
{=RIGHT(C2;LEN(C2)-LARGE((MID(C2;ROW(INDIRECT("1:"&LEN(C2)));1)=" ")*ROW(INDIRECT("1:"&LEN(C2)));1))}

Ai test thử cái này xảy ra lỗi gì không?

Đã test: công thức mảng (Ctrl+Shift+Enter), nếu C2 không có gì thì xảy ra lỗi #REF, nếu có thì lấy chuỗi bên phải khoảng trắng, nếu chỉ có 1 chuỗi thì lấy chính nó. Nếu gõ công thức bình thường thì lấy nguyên chuỗi của C2. Không biết là còn lỗi gì nữa không.
 
Có một phương pháp khá đơn giản không cần VBA hoặc công thức quá phức tạp. Xin góp thêm để mọi người tham khảo.
Ví dụ ban đầu ta có Cột A chứa Họ và Tên. Cần tách Họ sang cột B và Tên sang cột C. Cách làm như sau:
1. Chép toàn bộ dữ liệu cột A sang cột C.
2. Sử dụng tìm và thay trong excel đối với cột C. Ở mục Find what nhập * và một khoảng trắng. Mục Replace with để trống. Chọn Replace All. Sau khi thay thế cột C giờ chỉ còn tên.
3. Lập công thức ở cột B như sau: =LEFT(A2,LEN(A2)-LEN(C2)).
Cuối cùng ta đã có hai cột B và C đã tách họ tên theo yêu cầu. Quá đơn giản phải không!
Chúc mọi người có một ngày vui.
 
Có một phương pháp khá đơn giản không cần VBA hoặc công thức quá phức tạp. Xin góp thêm để mọi người tham khảo.
Ví dụ ban đầu ta có Cột A chứa Họ và Tên. Cần tách Họ sang cột B và Tên sang cột C. Cách làm như sau:
1. Chép toàn bộ dữ liệu cột A sang cột C.
2. Sử dụng tìm và thay trong excel đối với cột C. Ở mục Find what nhập * và một khoảng trắng. Mục Replace with để trống. Chọn Replace All. Sau khi thay thế cột C giờ chỉ còn tên.
3. Lập công thức ở cột B như sau: =LEFT(A2,LEN(A2)-LEN(C2)).
Cuối cùng ta đã có hai cột B và C đã tách họ tên theo yêu cầu. Quá đơn giản phải không!
Chúc mọi người có một ngày vui.
không hiểu luật như thế nào mà Find what nhập * như vậy nó xóa hết họ và tên đệm hay quá ta, cho ta thêm 1 cách ưa thích nữa
 
Đơn giản là ta tìm text bất kỳ có ký tự trống đi kèm ngay sau nó, thay thế bằng "không ai cả". Riêng tên nằm cuối cùng không có ký tự trống đi kèm nên được giữ lại.
 
Cái này hay đó nha;
Nếu anh/chị nào nhập dư khoảng trống cuối của họ & tên cũng fải dè chừng!
 
Tách tên từ chuỗi họ tên

em có một cột chuỗi họ và tên, em đã chạy công thức tách tên từ chuỗi nhưng một vài dòng chạy còn lại thì không, những chuỗi không tách được tên em phai đánh thủ công vào thì công thức mới chạy được. anh (chị) cho em hỏi là vì sao vậy và mình làm cách nào để chạy ko bị lỗi.E cảm ơn
 

File đính kèm

em có một cột chuỗi họ và tên, em đã chạy công thức tách tên từ chuỗi nhưng một vài dòng chạy còn lại thì không, những chuỗi không tách được tên em phai đánh thủ công vào thì công thức mới chạy được. anh (chị) cho em hỏi là vì sao vậy và mình làm cách nào để chạy ko bị lỗi.E cảm ơn
Thực ra trên diễn đàn nói rất nhiều về vấn đề này rồi nên bạn có thể search để tìm giải pháp khác ngắn hơn.

Riêng cách của bạn hiện tại do chuỗi từ dòng số 2 có dấu cách trống ở phía cuối chuỗi nên khi bạn thay thế ký tự cách trống cuối cùng trong chuỗi bằng ký tự * để đánh dấu thì nó lại thay thế ký tự ở cuối chuỗi nên tham số thứ 2 của right() được chỉ định bị sai là đúng rồi. Muốn khắc phục thì bạn kẹp thêm hàm trim() vào chỗ nào có B3 là được.
 
Chào cả nhà.

Mình có 1 file cần mọingưiời chỉ giáo. File gồm 2 sheet
- Sheet MA: thể hiện tên nhân viên và mã tương ứng
- Sheet NV: tại đây mình muốn
Vì 1 nhân viên sẽ làm nhiều việc nên mình mã nhân viên đó và kèm theo số thứ tự đằng sau để tách từng công việc.
Ví dụ: Nguyen Van A mã là VA và công việc sẽ lần lượt là 01, 02, 03...
Mình muốn sau khi nhập mã VA01 cột A thì bên cột B sẽ hiện tên tương ứng.
Cảm ơn cả nhà%#^#$
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn có thể hoán đổi dữ liệu giữa 2 cột & [C] ở trang 'Ma'; Sau đó tìm cách mà VLOOKUP() thôi.
 
Quả là giải pháp ex, đa dạng cách giải quyết vấn đề, và đây là một trong nnhững cách khá đơn giản giống như cách của bạn tenday(data to text). Hay
 
Mình muốn các bạn giúp mình tách: họ, tên đệm, tên ra mỗi chữ một ô. Mục đích để làm từ điển Việt - Hán.
Có thể sử dụng công thức hoặc macro.
Mình gửi kèm file ví dụ
 

File đính kèm

Mình muốn các bạn giúp mình tách: họ, tên đệm, tên ra mỗi chữ một ô. Mục đích để làm từ điển Việt - Hán.
Có thể sử dụng công thức hoặc macro.
Mình gửi kèm file ví dụ
Cách NGON BỔ RẺ nhất là dùng Text to columns. Bạn thử đi.
 
Mình muốn các bạn giúp mình tách: họ, tên đệm, tên ra mỗi chữ một ô. Mục đích để làm từ điển Việt - Hán.
Có thể sử dụng công thức hoặc macro.
Mình gửi kèm file ví dụ
Công thức tại C4, kéo sang phải và kéo xuống.
Mã:
=TRIM(MID(SUBSTITUTE($A4," ",REPT(" ",255)),255*COLUMN(A$1)-254,255))
 

File đính kèm

Cái này mình không hiểu
Bạn có thấy Data/Text to columns không?
Chọn dữ liệu rồi làm như trên, sau đó có vài bước nữa bằng tiếng Anh (chắc bạn dịch được, đơn giản thôi mà).
Cách này dùng được cho các phiên bản excel + dữ liệu vài chục đến hàng trăm Text mà không phải copy công thức.
 
Cảm ơn bạn vậy là đúng yêu cầu của mình rồi, có điều mình chưa hiểu cơ chế tách từ của nó.
Không biết có ai giải thích công thức này hay chưa, sẵn tiện tôi giải thích một chút theo khả năng hiểu biết của mình.
Hàm TRIM để cắt khoảng trắng thừa.
Hàm MID để tách chuỗi con trong chuỗi lớn.
Hàm SUBSTITUTE để thay thế một chuỗi ký tự nào đó cho một chuỗi ký tự có trong chuỗi.
Hàm REPT để lặp lại chuỗi ký tự với số lần nhất định.
Hàm COLUMN để lấy số cột.
Mục đích tách chuỗi theo các khoảng trắng (" "), hàm SUBSTITUTE và hàm REPT biến chuỗi "a b" thành "a " và n khoảng trắng và "b", hàm MID sẽ lấy "vừa đủ" ký tự "a" và số khoảng trắng nhất định nào đó, miễn là chưa tới "b", hàm TRIM có nhiệm vụ gọt bỏ khoảng trắng, kết quả còn lại "a". Tiếp tục, hàm COLUMN nhân với số lần tăng lên khoảng trắng khi kéo qua cột mới sẽ tăng lên một đơn vị (vị trí bắt đầu trích ký tự của hàm MID), hàm MID sẽ bắt đầu trích ở một vị trí nào đó trước "b" một ký tự và lấy n khoảng trắng phía sau, và hàm TRIM làm nhiệm vụ còn lại, gọt bỏ khoảng trắng, chỉ còn "b", ... tương tự như thế.
Tôi diễn giải như một người đang học để các bạn mới tiếp cận có thể hiểu.
 
Bạn có thấy Data/Text to columns không?
Chọn dữ liệu rồi làm như trên, sau đó có vài bước nữa bằng tiếng Anh (chắc bạn dịch được, đơn giản thôi mà).
Cách này dùng được cho các phiên bản excel + dữ liệu vài chục đến hàng trăm Text mà không phải copy công thức.
Ờ, mình hiểu rồi, nhưng mình không dùng cách này. Sử dụng công thức nó tự động hơn.
 
Ờ, mình hiểu rồi, nhưng mình không dùng cách này. Sử dụng công thức nó tự động hơn.
Bạn tự tay thử tách text ra được rồi chứ?
Cách này có thể thay cho rất nhiều các công thức khác nhau do có nhiều lựa chọn để phân tách trong Delimiters là : Tab, Semiconlon, Comma, Space, Other...
 
Không biết có ai giải thích công thức này hay chưa, sẵn tiện tôi giải thích một chút theo khả năng hiểu biết của mình.
Hàm TRIM để cắt khoảng trắng thừa.
Hàm MID để tách chuỗi con trong chuỗi lớn.
Hàm SUBSTITUTE để thay thế một chuỗi ký tự nào đó cho một chuỗi ký tự có trong chuỗi.
Hàm REPT để lặp lại chuỗi ký tự với số lần nhất định.
Hàm COLUMN để lấy số cột.
Mục đích tách chuỗi theo các khoảng trắng (" "), hàm SUBSTITUTE và hàm REPT biến chuỗi "a b" thành "a " và n khoảng trắng và "b", hàm MID sẽ lấy "vừa đủ" ký tự "a" và số khoảng trắng nhất định nào đó, miễn là chưa tới "b", hàm TRIM có nhiệm vụ gọt bỏ khoảng trắng, kết quả còn lại "a". Tiếp tục, hàm COLUMN nhân với số lần tăng lên khoảng trắng khi kéo qua cột mới sẽ tăng lên một đơn vị (vị trí bắt đầu trích ký tự của hàm MID), hàm MID sẽ bắt đầu trích ở một vị trí nào đó trước "b" một ký tự và lấy n khoảng trắng phía sau, và hàm TRIM làm nhiệm vụ còn lại, gọt bỏ khoảng trắng, chỉ còn "b", ... tương tự như thế.
Tôi diễn giải như một người đang học để các bạn mới tiếp cận có thể hiểu.
Cũng hơi khó hiểu. Con số 255 trong công thức của bạn có phải là số lớn nhất có thể không.
Bây giờ nếu mình chèn thêm cột giữa phần tên và phần tách từ thì kết quả thì nó bị sai đi
 
Cũng hơi khó hiểu. Con số 255 trong công thức của bạn có phải là số lớn nhất có thể không.
Bây giờ nếu mình chèn thêm cột giữa phần tên và phần tách từ thì kết quả thì nó bị sai đi
Bạn chú ý hàm COLUMN, khi chèn cột hàm COLUMN sẽ nhảy thêm một số, bỏ hàm COLUMN ra và thay vào số, 1, 2, 3, 4, 5 cho 5 ô chứa công thức.
Số 255 là số ký tự có thể chứa trong một ô đối với Excel 2003, số này có thể tăng lên nếu dùng Excel 2007 trở lên (tránh lỗi vượt quá số ký tự cho phép), có thể giảm xuống miễn là đừng nhỏ quá, để hàm MID chỉ cắt ở giữa khoảng trắng được chèn vào.
 
Khi nhập liệu vào bảng tính Excel, thông thường ta nhập cả họ và tên vào cùng một ô. Tuy nhiên, có khi sau đó ta cần phải tách riêng tên ra khỏi họ và tên đệm, nếu làm thủ công bằng thao tác sao chép rồi dán qua ô khác thì sẽ rất bất tiện. Ngoài ra có những lúc bạn phải xắp xếp lại theo thứ tự A,B,C,...
Nếu sử dụng hàm Right kết hợp với một vài hàm khác thì cũng có thể cho ra kết quả như bạn muốn, nhưng trong một số trường hợp sẽ cho kết quả không chính xác. Có một phương pháp tối ưu hơn sẽ giúp bạn hoàn thành tốt công việc này, cách thực hiện cũng khá đơn giản như sau:
- Trên bảng tính chứa cột họ tên cần tách, bạn chọn menu Tools > Macro > Visual Basic Editor, lập tức xuất hiện chương trình Microsoft Visual Basic.
- Tiếp theo, bạn nhấn menu Insert và chọn Module sẽ xuất hiện một cửa sổ soạn thảo.
Mã:
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

Bạn nhập đoạn mã lệnh sau vào cửa sổ soạn thảo:

- Bạn nhấn Ctrl+S để lưu lại và quay trở về bảng tính Excel.
- Bây giờ để tiến hành tách riêng họ và tên đệm vào một ô mới, bạn đặt con trỏ tại ô mới chứa họ và tên đệm rồi nhập vào công thức =TachTen(B3,0) và nhấn Enter sẽ thấy ngay kết quả.
- Để tách riêng tên vào một ô mới, bạn đặt con trỏ tại ô sẽ chứa tên cần tách và nhập vào công thức =TachTen(B3,1) rồi nhấn Enter là xong.
Ghi chú: B3 chính là địa chỉ của ô ban đầu chứa cả họ, tên đệm và tên.



Có mấy góp ý sau :
- Bạn nên hướng dẫn mọi người cách sử dụng, hàm này có tác dụng như thế nào ??
- Việc khai báo các biến cần đầy đủ và tường minh hơn
- Dòng : CatTen = "" là thừa, biến l là thừa
- Hãy bẫy lỗi khi HoVaTen = ""
- Nếu hàm này chỉ cắt mỗi tên thôi thì e rằng . . phí quá. hãy cho cái Option để có thể lấy HỌ - TÊN ĐỆM - TÊN
- Trên GPE có các hàm như thế này rất nhiều rồi và đã tối ưu, bạn nên tham khảo nhé.

--Chúc vui--
Chỉ có tách họ và tên thành họ lót và tên thôi mà phải xây dựng nguyên cả hàm vậy sao?
Mình chỉ cần dùng hàm SUBSTITUTE La duoc roi: ví dụ ô A1 có chứa họ và tên thì dùng hàm SUBSTITUTE để chèn thêm nhiều khoảng trắng vào chỗ có khoảng trắng sẵn trong họ và tên (VD: Nguyễn Văn Thanh chèn thêm vô thành Nguyễn_____________Văn____________Thanh) lúc này dùng hàm Right lấy bên phải 20 kí tự (phòng cho dư các tên dài luôn), rồi tiếp tục dùng hàm TRIM để cắt bỏ khoảng trắng dư thì ta được tên rồi, còn họ lót thì dùng LEFT lấy ra
Vậy chỉ cần gõ vào C1(cột tên)
=TRIM(RIGHT(SUBSTITUE(A1," "," "),20)
là lấy được tên Thanh
Còn Nguyễn Văn (họ lót) thì dùng công thức
=TRIM(LEFT(A1,LEN(A1)-LEN(C1)))
Thế là xong rồi!
Đơn giãn còn phức tạp hơn nhưng không sợ tên dài cỡ nào đi nữa thì dùng
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",LEN(A1))),LEN(A1)))
để lấy tên Thanh}}}}}}}}}}-\\/.-\\/.-\\/.
 
Lần chỉnh sửa cuối:
Chỉ có tách họ và tên thành họ lót và tên thôi mà phải xây dựng nguyên cả hàm vậy sao?
Mình chỉ cần dùng hàm SUBSTITUTE La duoc roi: ví dụ ô A1 có chứa họ và tên thì dùng hàm SUBSTITUTE để chèn thêm nhiều khoảng trắng vào chỗ có khoảng trắng sẵn trong họ và tên (VD: Nguyễn Văn Thanh chèn thêm vô thành Nguyễn_____________Văn____________Thanh) lúc này dùng hàm Right lấy bên phải 20 kí tự (phòng cho dư các tên dài luôn), rồi tiếp tục dùng hàm TRIM để cắt bỏ khoảng trắng dư thì ta được tên rồi, còn họ lót thì dùng LEFT lấy ra
Vậy chỉ cần gõ vào C1(cột tên)
=TRIM(RIGHT(SUBSTITUE(A1," "," "),20)
là lấy được tên Thanh
Còn Nguyễn Văn (họ lót) thì dùng công thức
=TRIM(LEFT(A1,LEN(A1)-LEN(C1)))
Thế là xong rồi!
Đơn giãn còn phức tạp hơn nhưng không sợ tên dài cỡ nào đi nữa thì dùng
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",LEN(A1))),LEN(A1)))
để lấy tên Thanh}}}}}}}}}}-\\/.-\\/.-\\/.
ss111111111cccccccccccccccccccccccccccccccccccccccccc111111
 
Không biết có ai giải thích công thức này hay chưa, sẵn tiện tôi giải thích một chút theo khả năng hiểu biết của mình.
Hàm TRIM để cắt khoảng trắng thừa.
Hàm MID để tách chuỗi con trong chuỗi lớn.
Hàm SUBSTITUTE để thay thế một chuỗi ký tự nào đó cho một chuỗi ký tự có trong chuỗi.
Hàm REPT để lặp lại chuỗi ký tự với số lần nhất định.
Hàm COLUMN để lấy số cột.
Mục đích tách chuỗi theo các khoảng trắng (" "), hàm SUBSTITUTE và hàm REPT biến chuỗi "a b" thành "a " và n khoảng trắng và "b", hàm MID sẽ lấy "vừa đủ" ký tự "a" và số khoảng trắng nhất định nào đó, miễn là chưa tới "b", hàm TRIM có nhiệm vụ gọt bỏ khoảng trắng, kết quả còn lại "a". Tiếp tục, hàm COLUMN nhân với số lần tăng lên khoảng trắng khi kéo qua cột mới sẽ tăng lên một đơn vị (vị trí bắt đầu trích ký tự của hàm MID), hàm MID sẽ bắt đầu trích ở một vị trí nào đó trước "b" một ký tự và lấy n khoảng trắng phía sau, và hàm TRIM làm nhiệm vụ còn lại, gọt bỏ khoảng trắng, chỉ còn "b", ... tương tự như thế.
Tôi diễn giải như một người đang học để các bạn mới tiếp cận có thể hiểu.
Mình cảm ơn bạn!
Đa số mình đều thấy các bạn giải thích công thức kiểu này. Nhưng mình nghĩ giải thích kiểu này chỉ dễ hiểu vs những người có nghề thôi.
Còn vs bọn mình trước khi làm đã tìm hiểu các hàm rồi, bọn mình cần giải thích cách làm ấy. Giải thích như bạn @hoankhai198 đã giải thích đấy bạn. Rất dễ hiểu. Đấy là giải thích tại sao lại làm thế. Mà thể hiện sự rất bài bản luôn.
 
Xin chào các anh chị! e dang muốn tìm công thức để tách chuổi số liệu trong bảng như sau:
Từ: Thành: ô1 ô2 ô3 ô4
(197)121415 197 121415
(168)121415-(77)121615 168 121415 77 121615
(154)011316-(105)012016 154 011316 105 012016
(38)121615-(165)122815 38 121615 165 122815
e muốn tách số liệu ra như vậy thì dùng công thức ra sao, mong các anh chị giúp dùm e! xin chân thành cảm ơn
 
Xin chào các anh chị! e dang muốn tìm công thức để tách chuổi số liệu trong bảng như sau:
Từ: Thành: ô1 ô2 ô3 ô4
(197)121415 197 121415
(168)121415-(77)121615 168 121415 77 121615
(154)011316-(105)012016 154 011316 105 012016
(38)121615-(165)122815 38 121615 165 122815
e muốn tách số liệu ra như vậy thì dùng công thức ra sao, mong các anh chị giúp dùm e! xin chân thành cảm ơn

Bạn coi file này xem được khônng

Mình làm bằng công thức còn nếu bạn đang xài Excel 2013 hoặc 2016 thì sử dụng chức năng Flas fill trong trường hợp này sẽ rất hữu ích
 

File đính kèm

Bạn coi file này xem được khônng

Mình làm bằng công thức còn nếu bạn đang xài Excel 2013 hoặc 2016 thì sử dụng chức năng Flas fill trong trường hợp này sẽ rất hữu ích

Cảm ơn khuongvietphong rất nhiều! rất hữu ích! Cho mình hỏi thêm nếu có thêm
(118)110315-(86)110515-(48)110615
hoặc
(118)110315-(86)110515-(48)110615-(5)021516
thì công thức triển khai như thế nào? xin bạn chỉ giúp
Một lần nửa xin cảm ơn rất nhiều!
 
Các bạn trên GPE giúp mình viết hàm tách họ tên để tạo mã theo nguyên tác sau:

Mã:
Ngô Bảo Chí         => NBC
Nguyễn Du           => NJD
Nguyễn Thị Viết Hòa => NVH
Ngô Trần Vy Hải     => NVH
Đăng Ngữ            => FJN
Đỗ Đông             => FJF
Đồng Đức Điện       => FFF
Ung Thư             => UJT
Ôn Như Hầu          => ONH

Xin cảm ơn các bạn nhiều!
 
Mã:
Ngô Bảo Chí         => NBC
Nguyễn Du           => NJD
Nguyễn Thị Viết Hòa => NVH
Ngô Trần Vy Hải     => NVH
Đăng Ngữ            => FJN
Đỗ Đông             => FJF
Đồng Đức Điện       => FFF
Ung Thư             => UJT
Ôn Như Hầu          => ONH

Xin cảm ơn các bạn nhiều!
bạn nên nói rõ quy luật làm thì người ta mới có cơ sở giúp bạn được, nhìn vô yêu cầu bạn thì cũng hiểu được sơ sơ chứ chưa lường trước hết các trường hợp bạn phát sinh thêm
 
Bạn nêu rõ quy luật làm thì người khác mới có cơ sở giúp bạn được;
Nhìn vô yêu cầu bạn thì cũng hiểu được sơ sơ chứ chưa lường trước hết các trường hợp bạn phát sinh thêm

Chuyển chuỗi họ tên (CHT) bất kỳ thành chuỗi gồm 3 kí tự viết hoa (VH), mà trong đó:

(*) Nếu CHT chỉ có 2 từ thì thêm kí tự 'J' vô giữa
Như Võ Trữ => VJT

(*) Nếu CHT gồm hơn 3 từ thì chỉ lấy ký tự đầu tiên (VH) của từ đầu & 2 kí tự (VH) đầu tiên của 2 từ cuối
Như Ngô Ngọc Bảo Trâm => NBT

(*) Nếu Kí tự cần lấy là chữ 'Đ' thì chuyển thành 'F'
Nhằm mục đích tạo mã toàn chữ cái tiếng Anh & cũng để bớt trùng mã CHT tiếng Việt
Như Đỗ Đại Việt => FFV

(*) Các nguyên âm đầu từ cần lấy làm mã sẽ chuyển sang nguyên âm tiếng Anh tương ứng.
Như Ôn => O; Âu => A; Ửng => U,. . . . .

Nếu các bạn thấy còn trường hợp nào khác, thì đưa lên giúp tôi, để chúng ta cùng trao đổi

Rất cảm ơn các bạn!
 
Chuyển chuỗi họ tên (CHT) bất kỳ thành chuỗi gồm 3 kí tự viết hoa (VH), mà trong đó:

(*) Nếu CHT chỉ có 2 từ thì thêm kí tự 'J' vô giữa
Như Võ Trữ => VJT


(*) Nếu CHT gồm hơn 3 từ thì chỉ lấy ký tự đầu tiên (VH) của từ đầu & 2 kí tự (VH) đầu tiên của 2 từ cuối
Như Ngô Ngọc Bảo Trâm => NBT

(*) Nếu Kí tự cần lấy là chữ 'Đ' thì chuyển thành 'F'
Nhằm mục đích tạo mã toàn chữ cái tiếng Anh & cũng để bớt trùng mã CHT tiếng Việt
Như Đỗ Đại Việt => FFV

(*) Các nguyên âm đầu từ cần lấy làm mã sẽ chuyển sang nguyên âm tiếng Anh tương ứng.
Như Ôn => O; Âu => A; Ửng => U,. . . . .

Nếu các bạn thấy còn trường hợp nào khác, thì đưa lên giúp tôi, để chúng ta cùng trao đổi

Rất cảm ơn các bạn!
có trường hợp tên có 5 từ hay 6 từ thì sao
Công Tằng Tôn Nữ Cẩm Tuân
chưa kể khi mã hóa sẽ có những ký tự giống nhau nữa, sau khi mã hóa xong dò lại bằng cách nào?
 
có trường hợp tên có 5 từ hay 6 từ thì sao
Công Tằng Tôn Nữ Cẩm Tuân
(*) Chưa kể khi mã hóa sẽ có những ký tự giống nhau nữa, sau khi mã hóa xong dò lại bằng cách nào?

Công Tằng Tôn Nữ Ái Như => CAN

(*) Việc trùng mã sẽ có sẩy ra; khi đó ta lại thêm 2 kí tự hay kí số fía sau để phân biệt, như
Ngô Viết Toàn := NVT00
Nguyễn Thị Vũ Thư := NVT99
Nhưng trước khi thêm ta sẽ phải sắp xếp dữ liệu theo cột mã mới tạo này & kiểm tra tính chính xác của hàm tạo mã này.
 
Công Tằng Tôn Nữ Ái Như => CAN

(*) Việc trùng mã sẽ có sẩy ra; khi đó ta lại thêm 2 kí tự hay kí số fía sau để phân biệt, như
Ngô Viết Toàn := NVT00
Nguyễn Thị Vũ Thư := NVT99
Nhưng trước khi thêm ta sẽ phải sắp xếp dữ liệu theo cột mã mới tạo này & kiểm tra tính chính xác của hàm tạo mã này.
cái này của bạn cũng khá rõ ràng, để một số thành viên khác vào sẽ giúp bạn vì tôi không sử dụng máy tính
tôi chỉ nói cách làm
kiểm tra tên có 2 từ hay hơn
nếu có 2 từ thì thêm ký tự J
nếu có hơn 2 từ thì lấy ký tự của từ đầu và 2 ký tự của 2 từ cuối( có thể mã hóa ký tự Đ)
đưa vào DIC các ký tự mã hóa kèm theo ký số tăng theo, thứ tự từ 0 đến 99 thì sẽ tạo ra được danh sách mã theo yêu cầu của bạn
 
Lần chỉnh sửa cuối:
cái này của bạn cũng khá rõ ràng, để một số thành viên khác vào sẽ giúp bạn vì tôi không sử dụng máy tính
tôi chỉ nói cách làm
kiểm tra tên có 2 từ hay hơn
nếu có 2 từ thì thêm ký tự J
nếu có hơn 2 từ thì lấy ký tự của từ đầu và 2 ký tự của 2 từ cuối( có thể mã hóa ký tự Đ)
đưa vào DIC các ký tự mã hóa kèm theo ký số tăng theo, thứ tự từ 0 đến 99 thì sẽ tạo ra được danh sách mã theo yêu cầu của bạn

Cũng không biết chủ Topic dùng để làm gì, chứ nếu chỉ là việc tạo mã thì việc có 1 table tham chiếu từ mã sang tên là rất bình thường với mã số được đánh thứ tự lần lượt.

Việc tách họ tên ra tạo mã theo ý kiến cá nhân là không ổn và nhìn vào số lượng mã số lớn thì nó lổn nhổn, nhấp nhô, không đẹp.

Nếu bạn chủ Topic dùng phương pháp table mã số - họ tên với mã số theo quy luật tăng dần thì sẽ thuận tiện hơn.
 
Cảm ơn khuongvietphong rất nhiều! rất hữu ích! Cho mình hỏi thêm nếu có thêm
(118)110315-(86)110515-(48)110615
hoặc
(118)110315-(86)110515-(48)110615-(5)021516
thì công thức triển khai như thế nào? xin bạn chỉ giúp
Một lần nửa xin cảm ơn rất nhiều!

Nếu thế thì phải làm bằng VBA thôi chứ công thức chắc "chớt" quá. Bạn xem File này nha
 

File đính kèm

Công Tằng Tôn Nữ Ái Như => CAN

(*) Việc trùng mã sẽ có sẩy ra; khi đó ta lại thêm 2 kí tự hay kí số fía sau để phân biệt, như
Ngô Viết Toàn := NVT00
Nguyễn Thị Vũ Thư := NVT99
Nhưng trước khi thêm ta sẽ phải sắp xếp dữ liệu theo cột mã mới tạo này & kiểm tra tính chính xác của hàm tạo mã này.
Gởi bạn bài tham khảo. tôi viết code theo cây nhà lá vườn, các lỗi lầm bạn tự bẫy. tôi chỉ làm theo ý tưởng của bài thôi, hy vọng đúng yêu cầu của bạn

Function MATEN(HoTen As String) As String
Dim temp As String
Dim SoKhoanTrang As Byte
Dim Dem As Byte
HoTen = Trim(HoTen)
HoTen = Replace(HoTen, ChrW(272), "F")
temp = Replace(HoTen, " ", "")

SoKhoanTrang = Len(HoTen) - Len(temp)
If SoKhoanTrang = 1 Then
For i = 1 To Len(HoTen)
If (Mid(HoTen, i, 1) = " ") Then
MATEN = Mid(HoTen, i + 1, 1)
End If
Next
MATEN = Left(HoTen, 1) & "J" & MATEN
Else
For i = Len(HoTen) To 2 Step -1
If (Mid(HoTen, i, 1) = " ") Then
MATEN = Mid(HoTen, i + 1, 1) & MATEN
Dem = Dem + 1
End If
If (Dem = 2) Then Exit For

Next
MATEN = Left(HoTen, 1) & MATEN

End If

End Function
Sub MaHoa()
Dim Arr_N()
Dim Arr_D()
Dim i As Long
Dim J As Long
Dim temp As String
Dim dongcuoi as Long
Arr_N = Sheet1.Range("A1:A28")
ReDim Arr_D(1 To 28, 1 To 3)

For i = 1 To 28
temp = Arr_N(i, 1)
Arr_D(i, 1) = MATEN(temp)
Next
dongcuoi = 1
While (dongcuoi <= 28)
Dem = 0
For i = 1 To dongcuoi
If Arr_D(dongcuoi, 1) = Arr_D(i, 1) Then
Dem = Dem + 1
End If
Next
Arr_D(dongcuoi, 2) = Dem
dongcuoi = dongcuoi + 1
Wend
For i = 1 To 28
Arr_D(i, 1) = Arr_D(i, 1) & Format(Arr_D(i, 2), "00")
Next
Sheet1.Range("B1").Resize(28, 1) = Arr_D
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Gởi bạn bài tham khảo. tôi viết code theo cây nhà lá vườn, các lỗi lầm bạn tự bẫy. tôi chỉ làm theo ý tưởng của bài thôi, hy vọng đúng yêu cầu của bạn
Chú Phi chưa làm cái này (công nhận code....hoành tráng thật)
Nguyên văn bởi Hoang2013
Chuyển chuỗi họ tên (CHT) bất kỳ thành chuỗi gồm 3 kí tự viết hoa (VH), mà trong đó:

.................

(*) Các nguyên âm đầu từ cần lấy làm mã sẽ chuyển sang nguyên âm tiếng Anh tương ứng.
Như Ôn => O; Âu => A; Ửng => U,. . . . .

..........

Nếu giữa 3 ký tự đầu và 2 ký tự "số" đằng sau có thêm dấu "-" thì có thể sẽ dễ nhìn hơn nhỉ ???
Đến ngày 8/3 đem....mực lên chơi tiếp nhé (nhớ cắt gọn ghẽ, đừng để dính như vừa rồi, "nguy hiểm" quá)
Thân
 
Chú Phi chưa làm cái này (công nhận code....hoành tráng thật)

Nếu giữa 3 ký tự đầu và 2 ký tự "số" đằng sau có thêm dấu "-" thì có thể sẽ dễ nhìn hơn nhỉ ???
Đến ngày 8/3 đem....mực lên chơi tiếp nhé (nhớ cắt gọn ghẽ, đừng để dính như vừa rồi, "nguy hiểm" quá)
Thân
mấy cái bỏ dấu đó để cho người ta tự làm đi thầy, mấy cái bỏ dấu đó người ta biết làm mà, 8/3 này thì hơi gấp, nhưng mà nếu thầy rảnh thì ok thôi, 90% là chắc chắn có mồi
 
Mình thấy cách làm của bạn khá hay với đơn giản
 
Toán: 4.50 Ngữ văn: 2.50 Vật lí: 6.00 Hóa học: 5.20 Sinh học: 5.60 Tiếng Anh: 3.40
[TABLE="width: 56"]
[TR]
[TD="width: 56"][/TD]
[/TR]
[/TABLE]
dùng công thúc gì tách lấy điểm thi môn toán, hóa, sinh
mong các cao thủ giúp dùm e
 
Toán: 4.50 Ngữ văn: 2.50 Vật lí: 6.00 Hóa học: 5.20 Sinh học: 5.60 Tiếng Anh: 3.40
[TABLE="width: 56"]
[TR]
[TD="width: 56"][/TD]
[/TR]
[/TABLE]
dùng công thúc gì tách lấy điểm thi môn toán, hóa, sinh
mong các cao thủ giúp dùm e

Xem File này được không
 

File đính kèm

Code VBA Tách tên:

'yeu Cau: Full Name dang "Ho [Lot ]Ten"
Function Tach_Ten(Ten As String)
Tach_Ten = Split(Ten, " ")(UBound(Split(Ten, " ")))
End Function
 

File đính kèm

Theo mình thì nên linh động trong cách sử dụng hàm:
- Nếu chỉ thao tác trên lượng data ít, thì chỉ cần sử dụng các hàm LEFT, RIGHT, FIND như bạn tedaynui
- Còn ngược lại, nếu có một danh sách họ tên thật dài, thì nên viết macro.
 
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 loại bỏ các chữ đó và lấy từ cuối cùng trước chữ HT hoặc (HT) 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
aa bb cc dd (HT) - muốn lấy chữ dd
 
mình dùng hàm như bạn tedaynui

Nhưng trong ô tên ví dụ có chữ HT hoặc (HT) nằm cuối cùng thì mình muốn loại bỏ các chữ đó và lấy từ cuối cùng trước chữ HT hoặc (HT) 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
aa bb cc dd (HT) - muốn lấy chữ dd
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," ","")))))
 

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

Back
Top Bottom