LợiSeven

Giao lưu - học hỏi

Responsive Ads Here

Thứ Hai, 7 tháng 2, 2022

Chuyển Đổi Số Thành Chữ Trong Excel Bằng Macro

Chuyển Đổi Số Thành Chữ Trong Excel Bằng Macro


Nhấn phím tắt Alt + F11 để gọi chương trình Micosoft Visual Basic Applications.

Vào Insert - Module


Dán code bên dưới vào khung soạn thảo

Function DocSoVni(conso) As String
s09 = Array("", " moät", " hai", " ba", " boán", " naêm", " saùu", " baûy", " taùm", " chín")
lop3 = Array("", " trieäu", " nghìn", " tyû")
If Trim(conso) = "" Then
DocSoVni = ""
ElseIf IsNumeric(conso) = True Then
If conso < 0 Then dau = "aâm " Else dau = ""
conso = Application.WorksheetFunction.Round(Abs(conso), 0)
conso = " " & conso
conso = Replace(conso, ",", "", 1)
vt = InStr(1, conso, "E")
If vt > 0 Then
sonhan = Val(Mid(conso, vt + 1))
conso = Trim(Mid(conso, 2, vt - 2))
conso = conso & String(sonhan - Len(conso) + 1, "0")
End If
conso = Trim(conso)
sochuso = Len(conso) Mod 9
If sochuso > 0 Then conso = String(9 - (sochuso Mod 12), "0") & conso
docso = ""
i = 1
lop = 1
Do
n1 = Mid(conso, i, 1)
n2 = Mid(conso, i + 1, 1)
n3 = Mid(conso, i + 2, 1)
baso = Mid(conso, i, 3)
i = i + 3
If n1 & n2 & n3 = "000" Then
If docso <> "" And lop = 3 And Len(conso) - i > 2 Then s123 = " tyû" Else s123 = ""
Else
If n1 = 0 Then
If docso = "" Then s1 = "" Else s1 = " khoâng traêm"
Else
s1 = s09(n1) & " traêm"
End If
If n2 = 0 Then
If s1 = "" Or n3 = 0 Then
s2 = ""
Else
s2 = " linh"
End If
Else
If n2 = 1 Then s2 = " möôøi" Else s2 = s09(n2) & " möôi"
End If
If n3 = 1 Then
If n2 = 1 Or n2 = 0 Then s3 = " moät" Else s3 = " moát"
ElseIf n3 = 5 And n2 <> 0 Then
s3 = " laêm"
Else
s3 = s09(n3)
End If
If i > Len(conso) Then
s123 = s1 & s2 & s3
Else
s123 = s1 & s2 & s3 & lop3(lop)
End If
End If
lop = lop + 1
If lop > 3 Then lop = 1
docso = docso & s123
If i > Len(conso) Then Exit Do
Loop
If docso = "" Then DocSoVni = "khoâng" Else DocSoVni = dau & Trim(docso)
Else
DocSoVni = conso
End If
End Function
Function DocSoUni(conso) As String
s09 = Array("", " m" & ChrW(7897) & "t", " hai", " ba", " b" & ChrW(7889) & "n", " n" & ChrW(259) & "m", " s" & ChrW(225) & "u", " b" & ChrW(7843) & "y", " t" & ChrW(225) & "m", " ch" & ChrW(237) & "n")
lop3 = Array("", " tri" & ChrW(7879) & "u", " ngh" & ChrW(236) & "n", " t" & ChrW(7927))
'Stop
If Trim(conso) = "" Then
DocSoUni = ""
ElseIf IsNumeric(conso) = True Then
If conso < 0 Then dau = ChrW(226) & "m " Else dau = ""
conso = Application.WorksheetFunction.Round(Abs(conso), 0)
conso = " " & conso
conso = Replace(conso, ",", "", 1)
vt = InStr(1, conso, "E")
If vt > 0 Then
sonhan = Val(Mid(conso, vt + 1))
conso = Trim(Mid(conso, 2, vt - 2))
conso = conso & String(sonhan - Len(conso) + 1, "0")
End If
conso = Trim(conso)
sochuso = Len(conso) Mod 9
If sochuso > 0 Then conso = String(9 - (sochuso Mod 12), "0") & conso
docso = ""
i = 1
lop = 1
Do
n1 = Mid(conso, i, 1)
n2 = Mid(conso, i + 1, 1)
n3 = Mid(conso, i + 2, 1)
baso = Mid(conso, i, 3)
i = i + 3
If n1 & n2 & n3 = "000" Then
If docso <> "" And lop = 3 And Len(conso) - i > 2 Then s123 = " t" & ChrW(7927) Else s123 = ""
Else
If n1 = 0 Then
If docso = "" Then s1 = "" Else s1 = " kh" & ChrW(244) & "ng tr" & ChrW(259) & "m"
Else
s1 = s09(n1) & " tr" & ChrW(259) & "m"
End If
If n2 = 0 Then
If s1 = "" Or n3 = 0 Then
s2 = ""
Else
s2 = " linh"
End If
Else
If n2 = 1 Then s2 = " m" & ChrW(432) & ChrW(7901) & "i" Else s2 = s09(n2) & " m" & ChrW(432) & ChrW(417) & "i"
End If
If n3 = 1 Then
If n2 = 1 Or n2 = 0 Then s3 = " m" & ChrW(7897) & "t" Else s3 = " m" & ChrW(7889) & "t"
ElseIf n3 = 5 And n2 <> 0 Then
s3 = " l" & ChrW(259) & "m"
Else
s3 = s09(n3)
End If
If i > Len(conso) Then
s123 = s1 & s2 & s3
Else
s123 = s1 & s2 & s3 & lop3(lop)
End If
End If
lop = lop + 1
If lop > 3 Then lop = 1
docso = docso & s123
If i > Len(conso) Then Exit Do
Loop
If docso = "" Then DocSoUni = "kh" & ChrW(244) & "ng" Else DocSoUni = dau & Trim(docso)
Else
DocSoUni = conso
End If
End Function

Save và turn off cửa sổ Microsoft Visual Basic

Hàm đổi số thành chữ

=DocSoUni(A1) hoặc =DocSoVni(A1)

Xong

Thứ Bảy, 8 tháng 1, 2022

Sử dụng Hàm Unique Cho Các Phiên Bản trước Office 2016

Sử dụng Hàm Unique Cho Các Phiên Bản trước Office 2016

Hàm Unique dành cho những phiên bản office thấp như là office 2007, 2010, 2013, 2016

nhấn phím tắt Alt + F11 để gọi chương trình Micosoft Visual Basic Applications.

Vào Insert - Module


Dán code bên dưới vào khung soạn thảo

Function UNIQUES(rng As Range) As Variant()
Dim list As New Collection
Dim Ulist() As Variant
On Error Resume Next
For Each Value In rng
List.Add CStr(Value), CStr(Value)
Next
On Error GoTo 0
ReDim Ulist(list.Count - 1, 0)
For i = 0 To list.Count - 1
Ulist(i, 0) = list(i + 1)
Next
UNIQUES = Ulist
End Function

Quay lại file excel lúc nãy, các bạn gõ vào ô C2  là =UNIQUES
=UNIQUE(array, by_col, occurs_once)
array: Là một vùng, cột hoặc hàng mà bạn cần lọc ra những giá trị duy nhất.

Chú Ý
Nếu các bạn sử dụng phiên bản office từ 2016 trở về trước thì bạn phải bôi chọn các ô mà bạn muốn kết quả hiển thị lên đó trước sau đó mới nhập công thức và kết thúc bằng phím CTRL+SHIFT+ENTER thì công thức mới hoạt động, cụ thể ở ví dụ trên các bạn bôi chọn từ ô C2 đến ô C7 sau đó nhấn F2 và gõ công thức sau đó nhấn CTRL+SHIFT+ENTER để kết thúc, bạn cũng có thể chọn nhiều ô hơn và nếu kết quả trả về là #N/A nghĩa là giá trị duy nhất là những kết quả có ở phía trên, nếu không hiển thị #N/A thì các bạn có thể chọn nhiều ô hơn để khỏi bị sót.