Strawberry1312
Thành viên mới
- Tham gia
- 14/2/19
- Bài viết
- 38
- Được thích
- 12
Dạ, em có thử nhưng kết quả không chính xác ạ, nên em nhờ có công thức nào có thể áp dụngDùng "Flash fill" nhé ( hoặc Ctrl E ).
Tham khảo cách dùng code vba và kiểm tra kết quả nhaEm chào Anh chị GPE,
Em có 1 vấn đề cần giúp đỡ, mong anh chị hướng dẫn ạ. Em có 1 danh sách họ tên, sau khi bỏ dấu em cần lọc ra Tên (đầy đủ), Họ (chữ cái đầu), Tên đệm (chữ cái đầu) theo file có sẵn kết quả
Em xin cảm ơn Anh/Chị nhiều!
Option Explicit
Sub Join_Name()
Dim Lr&, i&, Arr(), Res(), k&, a&, b&, c&, Tmp$
With Sheets("Sheet1")
Lr = .Range("B" & Rows.Count).End(xlUp).Row
Arr = .Range("B5:B" & Lr).Value
ReDim Res(1 To UBound(Arr), 1 To 3)
For i = 1 To UBound(Arr)
k = k + 1
Res(k, 1) = Cvt_vn(Arr(i, 1))
Res(k, 2) = LCase(Res(k, 1))
For a = 1 To Len(Res(k, 2))
If Mid(Res(k, 2), a, 1) = " " Then b = b + 1
Next a
For c = 0 To b - 1
Tmp = Tmp & Left(Split(Res(k, 2), " ")(c), 1)
Next c
Res(k, 3) = Split(Res(k, 2), " ")(b) & Tmp
b = 0: Tmp = ""
Next i
If k Then
.Range("G5:I2000").ClearContents
.Range("G5").Resize(k, 3).Value = Res
MsgBox "Done"
Else
MsgBox "No Data"
End If
End With
End Sub
Function Cvt_vn(ByVal sContent As String) As String
Dim i&, intCode&, sChar$, sConvert$
Cvt_vn = AscW(sContent)
For i = 1 To Len(sContent)
sChar = Mid(sContent, i, 1)
If sChar <> "" Then
intCode = AscW(sChar)
End If
Select Case intCode
Case 273
sConvert = sConvert & "d"
Case 272
sConvert = sConvert & "D"
Case 224, 225, 226, 227, 259, 7841, 7843, 7845, 7847, 7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863
sConvert = sConvert & "a"
Case 192, 193, 194, 195, 258, 7840, 7842, 7844, 7846, 7848, 7850, 7852, 7854, 7856, 7858, 7860, 7862
sConvert = sConvert & "A"
Case 232, 233, 234, 7865, 7867, 7869, 7871, 7873, 7875, 7877, 7879
sConvert = sConvert & "e"
Case 200, 201, 202, 7864, 7866, 7868, 7870, 7872, 7874, 7876, 7878
sConvert = sConvert & "E"
Case 236, 237, 297, 7881, 7883
sConvert = sConvert & "i"
Case 204, 205, 296, 7880, 7882
sConvert = sConvert & "I"
Case 242, 243, 244, 245, 417, 7885, 7887, 7889, 7891, 7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907
sConvert = sConvert & "o"
Case 210, 211, 212, 213, 416, 7884, 7886, 7888, 7890, 7892, 7894, 7896, 7898, 7900, 7902, 7904, 7906
sConvert = sConvert & "O"
Case 249, 250, 361, 432, 7909, 7911, 7913, 7915, 7917, 7919, 7921
sConvert = sConvert & "u"
Case 217, 218, 360, 431, 7908, 7910, 7912, 7914, 7916, 7918, 7920
sConvert = sConvert & "U"
Case 253, 7923, 7925, 7927, 7929
sConvert = sConvert & "y"
Case 221, 7922, 7924, 7926, 7928
sConvert = sConvert & "Y"
Case Else
sConvert = sConvert & sChar
End Select
Next
Cvt_vn = sConvert
End Function
Bạn thử ví dụ: "Đỗ Đại Học"https://docs.google.com/spreadsheet...tTAcRPH10Kb2xM1GphklyNOUzI/edit#gid=282200792
mình làm trên gg sheet , bạn xem đc ko
Dạ, em cảm ơn ạ!Tham khảo cách dùng code vba và kiểm tra kết quả nha
Mã:Option Explicit Sub Join_Name() Dim Lr&, i&, Arr(), Res(), k&, a&, b&, c&, Tmp$ With Sheets("Sheet1") Lr = .Range("B" & Rows.Count).End(xlUp).Row Arr = .Range("B5:B" & Lr).Value ReDim Res(1 To UBound(Arr), 1 To 3) For i = 1 To UBound(Arr) k = k + 1 Res(k, 1) = Cvt_vn(Arr(i, 1)) Res(k, 2) = LCase(Res(k, 1)) For a = 1 To Len(Res(k, 2)) If Mid(Res(k, 2), a, 1) = " " Then b = b + 1 Next a For c = 0 To b - 1 Tmp = Tmp & Left(Split(Res(k, 2), " ")(c), 1) Next c Res(k, 3) = Split(Res(k, 2), " ")(b) & Tmp b = 0: Tmp = "" Next i If k Then .Range("G5:I2000").ClearContents .Range("G5").Resize(k, 3).Value = Res MsgBox "Done" Else MsgBox "No Data" End If End With End Sub Function Cvt_vn(ByVal sContent As String) As String Dim i&, intCode&, sChar$, sConvert$ Cvt_vn = AscW(sContent) For i = 1 To Len(sContent) sChar = Mid(sContent, i, 1) If sChar <> "" Then intCode = AscW(sChar) End If Select Case intCode Case 273 sConvert = sConvert & "d" Case 272 sConvert = sConvert & "D" Case 224, 225, 226, 227, 259, 7841, 7843, 7845, 7847, 7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863 sConvert = sConvert & "a" Case 192, 193, 194, 195, 258, 7840, 7842, 7844, 7846, 7848, 7850, 7852, 7854, 7856, 7858, 7860, 7862 sConvert = sConvert & "A" Case 232, 233, 234, 7865, 7867, 7869, 7871, 7873, 7875, 7877, 7879 sConvert = sConvert & "e" Case 200, 201, 202, 7864, 7866, 7868, 7870, 7872, 7874, 7876, 7878 sConvert = sConvert & "E" Case 236, 237, 297, 7881, 7883 sConvert = sConvert & "i" Case 204, 205, 296, 7880, 7882 sConvert = sConvert & "I" Case 242, 243, 244, 245, 417, 7885, 7887, 7889, 7891, 7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907 sConvert = sConvert & "o" Case 210, 211, 212, 213, 416, 7884, 7886, 7888, 7890, 7892, 7894, 7896, 7898, 7900, 7902, 7904, 7906 sConvert = sConvert & "O" Case 249, 250, 361, 432, 7909, 7911, 7913, 7915, 7917, 7919, 7921 sConvert = sConvert & "u" Case 217, 218, 360, 431, 7908, 7910, 7912, 7914, 7916, 7918, 7920 sConvert = sConvert & "U" Case 253, 7923, 7925, 7927, 7929 sConvert = sConvert & "y" Case 221, 7922, 7924, 7926, 7928 sConvert = sConvert & "Y" Case Else sConvert = sConvert & sChar End Select Next Cvt_vn = sConvert End Function
Dạ, em cảm ơn ạ!Bạn thử ví dụ: "Đỗ Đại Học"