Đúng là hơi phí, vì cái này dùng hàm cũng ra mà:...
- 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
=TRIM(RIGHT(SUBSTITUTE(Hovaten," ",REPT(" ",100)),100))
Đúng là hơi phí, vì cái này dùng hàm cũng ra mà:...
- 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
Muốn Option thì có option liền:- 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 --Chúc vui--
Function tachten(ten As String, Optional k As String = "ten") As String Dim arr() As String If ten = "" Then tachten = "Error": Exit Function arr() = Split(ten, " ") If UCase(k) = "HO" Then tachten = arr(0) ElseIf UCase(k) = "TEN DEM" Then tachten = Trim(WorksheetFunction.Substitute(WorksheetFunction.Substitute(ten, arr(Len(ten) - Len _ (WorksheetFunction.Substitute(ten, " ", ""))), ""), arr(0), "")) ElseIf UCase(k) = "TEN" Then tachten = arr(Len(ten) - Len(WorksheetFunction.Substitute(ten, " ", ""))) End If End Function
Cái này sao gọi ngắn nhất được. Po_pikachu xem code này nhé:Đây là UDF hàm tách tên ngắn nhất!
PHP:Function tachten(ten As String) As String Dim arr() As String If ten = "" Then tachten = "Error": Exit Function arr() = Split(ten, " ") tachten = arr(Len(ten) - Len(Application.WorksheetFunction.Substitute(ten, " ", ""))) End Function
Function tachten(ten As String, Optional k As String = "ten") As String
Dim arr() As String
If ten = "" Then tachten = "Error": Exit Function
arr() = Split(ten, " ")
If k = 1 Then
tachten = arr(0)
ElseIf k = 2 Then
tachten = Trim(WorksheetFunction.Substitute(WorksheetFunction.Substitute(ten, arr(Len(ten) - Len _
(WorksheetFunction.Substitute(ten, " ", ""))), ""), arr(0), ""))
ElseIf k = 3 Then
tachten = arr(Len(ten) - Len(WorksheetFunction.Substitute(ten, " ", "")))
End If
End Function
Function tachten(ten As String, Optional k As String = "ten") As String Dim arr() As String If ten = "" Then tachten = "Error": Exit Function arr() = Split(ten, " ") If UCase(k) = "HO" Then tachten = arr(0) ElseIf UCase(k) = "TEN DEM" Then tachten = Trim(Replace(Replace(ten, arr(Len(ten) - Len _ (Replace(ten, " ", ""))), ""), arr(0), "")) ElseIf UCase(k) = "TEN" Then tachten = arr(Len(ten) - Len(Replace(ten, " ", ""))) End If End Function
Anh chọn tham số Vitri theo như code bên dưới nhé!Cho hỏi Cadafi tí, muốn lấy cái ở giữa thui, thì option bằng bi nhiu?
Với lại, Cadafi làm hay đó. Hàm nào VBE có thì xài, mắc gì phải lôi Application.WorksheetFunction ra hơ...
Function SubStr(ByVal st As String, Optional [COLOR=red]iPos[/COLOR] As Integer = 0) As String
Dim i As Long, lB As Long, uB As Long
Dim aStr() As String
st = WorksheetFunction.Trim(st) 'DelSpace(st)'
If st = Empty Then Exit Function
aStr = Split(st, Space(1))
lB = LBound(aStr): uB = UBound(aStr)
iPos = IIf(iPos > uB, uB, IIf(iPos < lB, lB, iPos))
SubStr = aStr(iPos)
End Function
Có ai biết cách Test hôn, Test hộ code của em tí (bài #13), test 50.000 cell nha!Hàm ngắn hàm dài chưa quan trọng.
Bây giờ các bác thử với dữ liệu khoảng 30.000 cell xem hàm nào chạy nhanh hơn ??
Thân!
Function TachTen(HoTen As String, Optional Vitri As Byte = 1) As String 'Vtri = 1: Ho ; Vtri = 2: TenLot ; Vtri = 3: Ten ; Vtri = 4: HoTenlot Dim arr() As String arr() = Split(HoTen, " ") k = UBound(arr) TachTen = Choose(Vitri, arr(0), Trim(Replace(Replace(HoTen, arr(k), ""), arr(0), "")), _ arr(k), Trim(Replace(HoTen, arr(k), ""))) End Function
Có ai biết cách Test hôn, Test hộ code của em tí (bài #13), test 50.000 cell nha!
Vẫn chưa ngắn ---> cái này nè:Cái này sao gọi ngắn nhất được. Po_pikachu xem code này nhé:
[highlight=vb]
Function TachTen(HoTen As String)
If HoTen = "" Then TachTen = "error": Exit Function
TachTen = Trim(Right(Replace(HoTen, " ", Space(100)), 100))
End Function
[/highlight]
Function TachTen(Hovaten As String) As String
TachTen = Trim(Right(Replace(Hovaten, " ", Space(255)), 255))
End Function
Các bạn cho tôi hỏi: Giữa cái UDF ở trên của anh Tuấn và cái công thức này:Vẫn chưa ngắn ---> cái này nè:
Các bạn thử xem, bào đãm hàm này sẽ không báo lổi gì, cho dù Hovaten = ""PHP:Function TachTen(Hovaten As String) As String TachTen = Trim(Right(Replace(Hovaten, " ", Space(255)), 255)) End Function
---> Khỏi cần IF
Vẫn chưa ngắn ---> cái này nè:
Các bạn thử xem, bào đãm hàm này sẽ không báo lổi gì, cho dù Hovaten = ""PHP:Function TachTen(Hovaten As String) As String TachTen = Trim(Right(Replace(Hovaten, " ", Space(255)), 255)) End Function
---> Khỏi cần IF
Đúng vậy! 2 cái hoàn toàn như nhauCác bạn cho tôi hỏi: Giữa cái UDF ở trên của anh Tuấn và cái công thức này:=TRIM(RIGHT(SUBSTITUTE(Hovaten," ",REPT(" ",255)),255))là tương đương nhau phải không.
Vậy với cùng một dữ liệu, thì nên dùng cái nào, và cái nào nhanh hơn?
Function TachTenPo(HoTen As String, Optional Vitri As Byte = 1) As String
' Po_PiKachu
'Vtri = 1: Ho ; Vtri = 2: TenLot ; Vtri = 3: Ten ; Vtri = 4: HoTenlot
Dim arr() As String
Dim K As Long
arr() = Split(HoTen, " ")
K = UBound(arr)
TachTenPo = Choose(Vitri, arr(0), Trim(Replace(Replace(HoTen, arr(K), ""), arr(0), "")), _
arr(K), Trim(Replace(HoTen, arr(K), "")))
End Function
Function TachTenCa(HoTen As String, Optional Vitri As Byte = 1)
'ca dafi
'Vtri = 1: Ten ; Vtri = 2: Ho ; Vtri = 3: TenLot ; Vtri = 4: HoTenlot
If IsNull(HoTen) Or HoTen = "" Then TachTenCa = "error": Exit Function
Dim Ten, Ho, TenLot, HoTenlot
Ten = Trim(Right(Replace(HoTen, " ", Space(100)), 100))
Ho = Trim(Left(Replace(HoTen, " ", Space(100)), 100))
TenLot = Trim(Replace(Replace(HoTen, Ten, ""), Ho, ""))
HoTenlot = Trim(Left(HoTen, Len(HoTen) - Len(Ten)))
TachTenCa = Choose(Vitri, Ten, Ho, TenLot, HoTenlot)
End Function
Function TachTenNDU(Hovaten As String) As String
' Bac NDU
TachTenNDU = Trim(Right(Replace(Hovaten, " ", Space(255)), 255))
End Function
=TRIM(RIGHT(SUBSTITUTE(A2;" ";REPT(" ";255));255))
Function TachTenPo(HoTen As String) As String '' Po_PiKachu Dim arr() As String IF HoTen = "" then TachTenPo = "Error": Exit Function arr() = Split(HoTen, " ") TachTenPo = arr(UBound(arr)) End Function
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2