Hỏi về công thức - Lấy tên tắt của 1 tên đầy đủ?

Liên hệ QC

feelingyes

Thành viên tiêu biểu
Tham gia
24/9/07
Bài viết
459
Được thích
395
Nghề nghiệp
Economic
Hỏi về công thức - Lấy tên tắc của 1 tên đầy đủ

Chào các bạn và anh chị GPE
Ví dụ trong một Cell ta có dòng chữ sau "Vu Van Sang" Vây có hàm nào để em có thể lấy được 3 chữ viết hoa VVS không?
Cám ơn anh chị
 
Trong excel chắc không có hàm nào lấy ký tự viết hoa đâu. Tôi nghĩ chắc là bạn muốn lấy ký tự đầu của các từ họ, đệm, tên thì bạn dùng các hàm text để tách ra như các công thức tách họ tên trên diễn đàn đó. sau đó chuyển nó thành chữ hoa là được.
Thân!
 
Chạy thử code củ chuối này xem:
PHP:
Sub Tach()
  For j = 1 To Range("A1000").End(xlUp).Row
      Dai = Len(Cells(j, 1).Value) - 1
      Chwt = " " & Cells(j, 1).Value
      Chw = ""
      For i = 1 To Dai
          Chw1 = Mid(Chwt, i, 1)
          If Chw1 = " " Then
             Chw2 = Mid(Chwt, i + 1, 1)
             Chw = Chw & Chw2
          End If
      Next i
      Cells(j, 2).Value = Chw
  Next j
End Sub
Với cột nhập liệu là cột A, bắt đầu từ cell A1, cột trích là cột B, dòng tương ứng


Cho 1 ví dụ cụ thể luôn... mất công lại hỏi!
ANH TUẤN
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Hoặc là bạn dùng cách kết hợp như này, bạn có thể gộp công thức và làm gọn lại theo ý bạn (files gốc tách tên họ của bác nào trên diễn đàn ko nhớ nữa...)
 

File đính kèm

Tigertiger đã viết:
Đúng là củ chuối atuan ah?
He... he... Bởi vậy đang vừa làm vừa tức cười đây!
Vậy thì dùng công thức mãng này xem... Nó đúng với tên có 3 từ... Tigertiger nghiên cứu pháp triển lên xem...
Thật ra công thức mãng này cũng chính là thuật toán FOR giống như code trên

Tiếp chiêu với công thức mới này... Có thể tách dc tên 5 từ với 1 công thức duy nhất ko cột phụ...
Và cũng theo thuật toán trên thì về nguyên tắc có thể tách tên bao nhiêu từ tùy thích (chỉ cần đặt name thích hợp)
ANH TUẤN
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
(hịu khó xài hàm người dùng sau:

PHP:
Option Explicit

Function UcaseW(Chw As String) As String
 Dim bJ As Byte, Dai As Integer, StrC As String
 Dai = Len(Chw)
 For bJ = 1 To Dai
    StrC = UCase$(Mid$(Chw, bJ, 1))
    If Mid$(Chw, bJ, 1) = StrC And Mid$(Chw, bJ, 1) <> " " _
        Then UcaseW = UcaseW & Mid$(Chw, bJ, 1)
 Next bJ
End Function
 
Rất hay, công thức mảng, tigertiger nghĩ có thể tổng quát (cho tên độ dài bất kỳ) được chứ nhỉ
Nếu dùng cho họ tên có 3 từ (hoặc dài hơn nhưng chỉ lấy tắt 3 từ gồm HỌ, từ ĐỆM đầu tiên, & TÊN) thì dùng công thức sau

PHP:
=UPPER(LEFT(A1,1)&MID(A1,FIND(" ",A1)+1,1)&MID(A1,1+FIND("#",SUBSTITUTE(A1," ","#",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))),1))

-Nếu muốn chắc ăn về ký tự trắng ở 2 đâu thì thêm TRIM(A1) thì CT dài thêm như sau:
PHP:
=UPPER(LEFT(TRIM(A1),1)&MID(TRIM(A1),FIND(" ",TRIM(A1))+1,1)&MID(TRIM(A1),1+FIND("#",SUBSTITUTE(TRIM(A1)," ","#",LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1)," ","")))),1))
 
Góp thêm một hàm người dùng nữa
Mã:
Function TachTen(HoTen As String) As String
Ten = Ucase(Trim(HoTen))
TachTen = Left(Ten,1)
VT = InStr(1,Ten,Space(1))
Do While VT>0
       TachTen = TachTen & Mid(Ten,VT+1,1)
       VT = InStr(VT+1,Ten,Space(1))
Loop
End Function
 
Lần chỉnh sửa cuối:
anhtuan1066 đã viết:
Uh... bạn phát triển thêm đi (vì tôi ko có nhu cầu này nên cũng ko mấy thích)... cái file cuối cùng tách 5 từ của tôi đó
Hi.. hi...
Ngồi buồn nghĩ những chuyện vớ vẫn...
ANH TUẤN

Thế là như post#11 tốt rồi, a AH
Tên cùng lắm là 5 từ là cùng, Ai cần có phát triển thêm hic
 
Tôi cũng xin đóng góp 1 đoạn code nhỏ cho thêm phân sinh động:
Mã:
Option Explicit
 
Public Function Layhoten(HovaTen As String)
Dim strText() As String
Dim ChuCai As String
Dim i
strText = Split(HovaTen, Space(1))
For i = 0 To UBound(strText)
    ChuCai = ChuCai & Left(strText(i), 1)
Next i
Layhoten = ChuCai
End Function

P/S: Các bác không nên dùng vòng lặp For... Next để chạy hết chiều dài của chữ (làm như vậy chương trình sẽ chạy chậm đi 1 chút). Số lần lặp là số chữ được tách ra mà thôi...
 
Nè... Từ thuật toán này tôi nghĩ rằng việc tách họ tên, chử lót sẽ dễ như ăn cháo ấy...
Thử nghĩ xem thuật toán trong file ở trên:
1> Đầu tiên ghép khoảng trắng vào chuổi
2> Đặt điều kiện khi quét toàn chuổi bằng hàm MID, nếu gặp khoảng trắng thì sẽ lấy ký tự sau nó và lấy 1 ký tự...
Vậy nếu lấy nguyên 1 từ HO, CHU LOT hoặc TEN thì vẫn theo nguyên tắc trên, có điều khi dùng MID ta sẽ ko lấy 1 ký tự mà lấy 1 số ký tự nào đó.. Số này = độ dài ký tự tính từ nó đến khoảng trắng tiếp theo...
He... he...
Có lẽ rất dễ đấy!
ANH TUẤN
 
Sử dụng hàm này:
Mã:
Function TenTat(hoten As String) As String
hoten = Application.WorksheetFunction.Trim(hoten) & " "
vitri = 1
Do
  tenmoi = tenmoi & UCase(Mid(hoten, vitri, 1))
  vitri = InStr(vitri, hoten, " ") + 1
Loop While vitri < Len(hoten)
TenTat = tenmoi
End Function
 
anhtuan1066 đã viết:
Tiếp chiêu với công thức mới này... Có thể tách dc tên 5 từ với 1 công thức duy nhất ko cột phụ...
Và cũng theo thuật toán trên thì về nguyên tắc có thể tách tên bao nhiêu từ tùy thích (chỉ cần đặt name thích hợp)
ANH TUẤN
Công thức của anh Tuấn quá ổn mỗi tội nhìn vào đau hết cả mắt-(công thức dài quá (trong phần name ấy)
Híc

Điêu Kiên_!
=(MID(" "&Sheet1!$A47,ROW(INDIRECT("1:"&LEN(" "&Sheet1!$A47))),1)=" ")*(ROW(INDIRECT("1:"&LEN(" "&Sheet1!$A47)))+1)

LO1
=IF(ISERROR(MID(Sheet1!$A47,SMALL(DK,1)-1,1)),"",MID(Sheet1!$A47,SMALL(DK,1)-1,1))
Anh giúp em hiểu công thức trên với AnhTuan ơi

Tks Anh
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bạn ơi... nếu bảo tôi giãi thích thì thật là khổ cho tôi quá...
Mãng luôn luôn huyền bí... có lúc tôi cãm nhận nó như 1 bài thơ hay mà tác giã cần phải đặt hết tâm trí vào mới có thể sáng tác ra dc...
Hic... hic...
Đoạn này:
MID(" "&Sheet1!$A47,ROW(INDIRECT("1:"&LEN(" "&Sheet1!$A47))),1)
có thể xem như vòng lập FOR.. đầu tiên thêm ký tự rổng vào chuỗi, rồi dùng MID quét từng ký tự đến hết chuỗi (hết chuỗi ngay chổ LEN(..) ấy).. hàm ROW(INDIRECT(...) sẽ tạo ra 1 mãng số thứ tự từ 1 đến LEN
Nguyên đoạn:
=(MID(" "&Sheet1!$A47,ROW(INDIRECT("1:"&LEN(" "&Sheet1!$A47))),1)=" ")*(ROW(INDIRECT("1:"&LEN(" "&Sheet1!$A47)))+1)
Có thể tạm giãi thích rằng: khi quét bằng MID như vậy, em nào = rổng thì sẽ nhân với số thứ tự đễ đánh dấu... rồi lát nữa ta sẽ từ các dấu hiệu đánh dấu này mà trích bằng hàm SMALL
Thật là khó giãi thích.. mong rằng bạn cố hiểu.. chủ yếu là thuật toán như tôi nói ở trên (dòng chử in nghiêng).. bạn ko nên quá đặt nặng vào sự phức tạp của công thức.. vì đàng nào cũng sẽ về địch
Hảy xuất phát từ thuật toán của riêng mình mà xây dựng hàm bạn nhé, ngay cả lập trình cũng vậy thôi! Tôi nghĩ bạn sẽ làm dc.. và cãm giác tự mình tạo ra sản phẩm cho riêng mình mới thú vị làm sao!
ANH TUẤN
 
anhtuan1066 đã viết:
He... he... Bởi vậy đang vừa làm vừa tức cười đây!
Vậy thì dùng công thức mãng này xem... Nó đúng với tên có 3 từ... Tigertiger nghiên cứu pháp triển lên xem...
Thật ra công thức mãng này cũng chính là thuật toán FOR giống như code trên

Tiếp chiêu với công thức mới này... Có thể tách dc tên 5 từ với 1 công thức duy nhất ko cột phụ...
Và cũng theo thuật toán trên thì về nguyên tắc có thể tách tên bao nhiêu từ tùy thích (chỉ cần đặt name thích hợp)
ANH TUẤN

Hàm này của bạn mod, làm sao mà dc như vậy vậy =LOL1&LOL2.... nó phải thêm cái gì nữa chứ, trong excel kô có công thức này. Xin lỗi vì wá gà
 
dlink500t đã viết:
Hàm này của bạn mod, làm sao mà dc như vậy vậy =LOL1&LOL2.... nó phải thêm cái gì nữa chứ, trong excel kô có công thức này. Xin lỗi vì wá gà
Bạn vào Menu Insert/Name/Define, ở đây bạn sẽ thấy các Name mà Anhtuan đặt LOI1, LOI2....., bạn tìm hiểu nhé, tôi cũng đang tìm hiểu mà cũng chưa thể hiểu hết đây hic hic
 
Xin hỏi về loi1, loi2..

He... he... Bởi vậy đang vừa làm vừa tức cười đây!
Vậy thì dùng công thức mãng này xem... Nó đúng với tên có 3 từ... Tigertiger nghiên cứu pháp triển lên xem...
Thật ra công thức mãng này cũng chính là thuật toán FOR giống như code trên

Tiếp chiêu với công thức mới này... Có thể tách dc tên 5 từ với 1 công thức duy nhất ko cột phụ...
Và cũng theo thuật toán trên thì về nguyên tắc có thể tách tên bao nhiêu từ tùy thích (chỉ cần đặt name thích hợp)
ANH TUẤN
Bác Tuấn ơi , em gà quá không hiểu mấy cái LOI1, LOI2... DK_1...là gì
Em làm trên excel, muốn thể hiện ngay = công thức có được không
A1: Thuỷ hải sản Hoàng Gia ---> THSHG
bác vui lòng chỉ dẫn cụ thể chi tiết với ạ
THANKS
 

File đính kèm

Web KT

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

Back
Top Bottom