tttngoc2021
Thành viên mới

- Tham gia
- 14/10/21
- Bài viết
- 8
- Được thích
- 3
Mình muốn tách toàn bộ ký tự đầu để tạo chuỗi có hàm nào không xin chỉ giúp: Phan Thanh Nhan tách thành PTN (chỉ giữ ký tự đầu). Cảm ơn
cảm ơn bạn nhéNếu bạn sử dụng Excel 2016 trở lên thì bạn làm cách này nhanh lắm nè bạn:
View attachment 267726
Mà mình office 2010 thì làm sao nhỉCảm ơn bạn nhé
cảm ơn bạn nhé
Bạn nếu Excel 2010 thì làm như thế nào xin chỉ giúpNếu bạn sử dụng Excel 2016 trở lên thì bạn làm cách này nhanh lắm nè bạn:
View attachment 267726
Flash fill như xuongrongdat là tốt nhất trong trường hợp này rồi nhưng lại có từ version 2016 trở lênMình muốn tách toàn bộ ký tự đầu để tạo chuỗi có hàm nào không xin chỉ giúp: Phan Thanh Nhan tách thành PTN (chỉ giữ ký tự đầu). Cảm ơn
Với excel đồ cổ thì việc nối ký tự luôn là một mớ bòng bong, đi gỡ oải lắm. Xài tạm hàm chạy bằng cơm vậy, tên viết tắt chắc dài không quá 5 ký đâu nhỉ (dài hơn chạy bằng cơm cho nhanh) A4 là ô chứa dữ liệu.Bạn nếu Excel 2010 thì làm như thế nào xin chỉ giúp
=LEFT(A4;1)&MID(A4;FIND(" ";A4)+1;1)&IF(ISERR(FIND(" ";A4;FIND(" ";A4)+1));"";MID(A4;FIND(" ";A4;FIND(" ";A4)+1)+1;1))&IF(ISERR(FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1));"";MID(A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1)+1;1))&IF(ISERR(FIND(" ";A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1)+1));"";MID(A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1)+1)+1;1))
cảm ơn bạn nhéVới excel đồ cổ thì việc nối ký tự luôn là một mớ bòng bong, đi gỡ oải lắm. Xài tạm hàm chạy bằng cơm vậy, tên viết tắt chắc dài không quá 5 ký đâu nhỉ (dài hơn chạy bằng cơm cho nhanh) A4 là ô chứa dữ liệu.
Mã:=LEFT(A4;1)&MID(A4;FIND(" ";A4)+1;1)&IF(ISERR(FIND(" ";A4;FIND(" ";A4)+1));"";MID(A4;FIND(" ";A4;FIND(" ";A4)+1)+1;1))&IF(ISERR(FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1));"";MID(A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1)+1;1))&IF(ISERR(FIND(" ";A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1)+1));"";MID(A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1)+1)+1;1))
cảm ơn nhéFlash fill như xuongrongdat là tốt nhất trong trường hợp này rồi nhưng lại có từ version 2016 trở lên
Hàm thì nó không tối ưu bằng VBA, nhưng nếu tên không dài thì dùng tạm hàm này vậy.
@SA_DQ : đây là 1 trong những bước để con tạo Mã nhân viên cho công ty con theo cách bác gợi ý á. Con làm thủ công 1 lần. hiNếu bạn sử dụng Excel 2016 trở lên thì bạn làm cách này nhanh lắm nè bạn:
View attachment 267726
=TEXTJOIN("",TRUE,IFERROR(MID(" "&A3,FIND("@",SUBSTITUTE(" "&A3," ","@",ROW($A$1:$A$10)))+1,1),""))
Function GetFirstCharacters(SourceString As String)
Dim Temp, Res()
Dim I As Byte, K As Byte
Temp = Split(" " & SourceString, " ")
For I = LBound(Temp) To UBound(Temp)
If Len(Temp(I)) Then
K = K + 1
ReDim Preserve Res(1 To K)
Res(K) = Left(Temp(I), 1)
End If
Next I
GetFirstCharacters = Join(Res, "")
End Function
=CONCAT(REPLACE(FILTERXML("<m><n>"&SUBSTITUTE($A1," ","</n><n>")&"</n></m>","//n"),2,20,""))
Code này rắc rối và nhiều kẽ hở lắm....
Thêm 1 cách sử dụng VBA:
PHP:Function GetFirstCharacters(SourceString As String) Dim Temp, Res() Dim I As Byte, K As Byte Temp = Split(" " & SourceString, " ") For I = LBound(Temp) To UBound(Temp) If Len(Temp(I)) Then K = K + 1 ReDim Preserve Res(1 To K) Res(K) = Left(Temp(I), 1) End If Next I GetFirstCharacters = Join(Res, "") End Function
Dùng hàm tự tạo trên GPE.Mình muốn tách toàn bộ ký tự đầu để tạo chuỗi có hàm nào không xin chỉ giúp: Phan Thanh Nhan tách thành PTN (chỉ giữ ký tự đầu). Cảm ơn
Option Explicit
Function AbbName(ByVal Text As String, Optional ByVal Delimiter As String = vbNullString, Optional ByVal IncName As Boolean = False) As String
Dim sPart1 As String, sPart2 As String, sp As String, lPos As Long
sp = Space(1)
If InStr(1, Text, sp) Then
With WorksheetFunction
sPart1 = .Trim(Text)
lPos = InStrRev(sPart1, Space(1))
sPart2 = Mid(sPart1, lPos + 1, Len(sPart1))
sPart1 = Mid(sPart1, 1, lPos - 1)
sPart1 = "{""" & Replace(sPart1, " ", """;""") & """}"
sPart1 = Join(Evaluate("Transpose(LEFT(" & sPart1 & ",1))"), Delimiter)
End With
AbbName = sPart1 & Delimiter & IIf(IncName, Left(sPart2, 1), sPart2)
End If
End Function
=AbbName(C3,"",TRUE)
Em cám ơn bác đã chỉ dạy.Code này rắc rối và nhiều kẽ hở lắm.
Điều đáng ghi nhớ: nếu split với dấu cách thì nên trim chuỗi trước. Trừ phi cần giữ lại đúng số dấu cách.
Dim e
For Each e in Split(Application.Trim(SourceString), " ")
GetFirstCharacters = GetFirstCharacters & Left(e, 1)
Next e
Cái hàm này sao bạn lại chọn hướng redim preserve rồi join lại mình thấy hơi cồng kềnh.Góp vui công thức dùng cho Excel 2016 trở lên có hàm TEXTJOIN()
Giả sử Họ tên ở ô A3:
Ctrl + Shift + EnterPHP:=TEXTJOIN("",TRUE,IFERROR(MID(" "&A3,FIND("@",SUBSTITUTE(" "&A3," ","@",ROW($A$1:$A$10)))+1,1),""))
Thêm 1 cách sử dụng VBA:
PHP:Function GetFirstCharacters(SourceString As String) Dim Temp, Res() Dim I As Byte, K As Byte Temp = Split(" " & SourceString, " ") For I = LBound(Temp) To UBound(Temp) If Len(Temp(I)) Then K = K + 1 ReDim Preserve Res(1 To K) Res(K) = Left(Temp(I), 1) End If Next I GetFirstCharacters = Join(Res, "") End Function
Cám ơn bạn đã góp ý.Cái hàm này sao bạn lại chọn hướng redim preserve rồi join lại mình thấy hơi cồng kềnh.
Vì chỉ xử lý chuỗi nên mình nghĩ khai báo biến txt, sau đó txt = txt & left(temp(i),1). kết quả hàm GetFirstCharacters = txt là được.
Mà theo mình biết, nếu có hướng làm khác thì không nên redim preserve mảng từng phần tử
Sớm nay mình mới tình cờ đọc được bài này của bạn & mình rất vui!@SA_DQ : đây là 1 trong những bước để con tạo Mã nhân viên cho công ty con theo cách bác gợi ý á. Con làm thủ công 1 lần. hi
STT | Mã NV | Họ & Tên | ||
1 | TTT01 | Trần Thành Trai | ||
2 | TTT00 | Từ Thanh Tuấn | ||
3 | TMH04 | Trần Thị Minh Hà | ||
4 | TMH03 | Tạ Thị Minh Hà | ||
5 | TMH02 | Trần Minh Hà | ||
6 | TMH01 | Từ Mạnh Hóa | ||
7 | TMH00 | Trần Minh Hồng | ||
8 | TJD00 | Trần Dương | ||
9 | THH00 | Trần Minh Hồng Hà | ||
10 | NHB92 | Nhữ Thái Hải Hà | ||
11 | NHBAZ | Ngô Thị Hòa Biền | ||
12 | NHB00 | Nguyễn Hòa Bình | ||
13 | LTF00 | Lê Công Thành Đạt |
Cảm ơn bạn nhiều nhéVới excel đồ cổ thì việc nối ký tự luôn là một mớ bòng bong, đi gỡ oải lắm. Xài tạm hàm chạy bằng cơm vậy, tên viết tắt chắc dài không quá 5 ký đâu nhỉ (dài hơn chạy bằng cơm cho nhanh) A4 là ô chứa dữ liệu.
Mã:=LEFT(A4;1)&MID(A4;FIND(" ";A4)+1;1)&IF(ISERR(FIND(" ";A4;FIND(" ";A4)+1));"";MID(A4;FIND(" ";A4;FIND(" ";A4)+1)+1;1))&IF(ISERR(FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1));"";MID(A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1)+1;1))&IF(ISERR(FIND(" ";A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1)+1));"";MID(A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4;FIND(" ";A4)+1)+1)+1)+1;1))