Hai cách tốt nhất để chuyển đổi dạng số sang chữ trong Excel

Trong bài này, Học Excel Online sẽ giới thiệu cho các bạn hai cách để chuyển từ số sang chữ trong excel hay chuyển từ dạng số tiền tệ sang các từ tiếng Anh trong Excel 2010, 2013 và các phiên bản khác ngay sau đây.

SpellNumber VBA macro để chuyển từ số sang chữ trong Excel

Như tôi đã đề cập, Microsoft không muốn thêm một công cụ cho nhiệm vụ này. Tuy nhiên, khi họ thấy có nhiều người dùng cần nó, họ đã tạo và xuất bản macro VBA đặc biệt trên trang web của họ.

Bạn có thể tìm thấy các macro được xem là “công thức spellnumber”. Tuy nhiên, nó không phải là một công thức, mà là một hàm macro, hoặc chính xác hơn là hàm được người dùng định nghĩa (UDF).

Tùy chọn đánh vần số có thể viết đô la và cent. Nếu bạn cần một loại tiền tệ khác, bạn có thể thay đổi ” đô la ” và ” cent ” bằng đơn vị bạn cần.

Nếu bạn không phải là một người hiểu biết VBA, dưới đây bạn sẽ tìm thấy một bản sao của mã.

  1. Mở bảng tính mà bạn cần đánh vần các con số.
  2. Nhấn Alt + F11 để mở cửa sổ trình soạn thảo Visual Basic.
  3. Nếu bạn đang mở nhiều tệp tin, hãy chọn bảng tính cần thiết bằng cách sử dụng danh sách các tệp ở bên trái của trình soạn thảo (tệp sẽ được đánh dấu màu xanh).
  4. Trong trình đơn chỉnh sửa hãy vào Insert-> Module .
Excel Visual Basic editor - insert module
Hai cách tốt nhất để chuyển đổi dạng số sangf chữ trong Excel
  1. Bạn sẽ thấy cửa sổ có tên YourBook – Module1. Chọn tất cả mã trong khung bên dưới và dán nó vào cửa sổ này.

Option Explicit

'Main Function
Function SpellNumber(ByVal MyNumber)
	Dim Dollars, Cents, Temp
	Dim DecimalPlace, Count
	
	ReDim Place(9) As String
	
	Place(2) = " Thousand "
	Place(3) = " Million "
	Place(4) = " Billion "
	Place(5) = " Trillion "
	
	MyNumber = Trim(Str(MyNumber))
	DecimalPlace = InStr(MyNumber, ".")
	
	If DecimalPlace > 0 Then
		Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
		MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
	End If
		Count = 1
		Do While MyNumber <> ""
			Temp = GetHundreds(Right(MyNumber, 3))
			If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
			If Len(MyNumber) > 3 Then
				MyNumber = Left(MyNumber, Len(MyNumber) - 3)
			Else
				MyNumber = ""
			End If
			Count = Count + 1
		Loop
		Select Case Dollars
			Case ""
			Dollars = "No Dollars"
			Case "One"
			Dollars = "One Dollar"
			Case Else
			Dollars = Dollars & " Dollars"
		End Select
		Select Case Cents
			Case ""
			Cents = " and No Cents"
			Case "One"
			Cents = " and One Cent"
			Case Else
			Cents = " and " & Cents & " Cents"
		End Select
		
	SpellNumber = Dollars & Cents
End Function

Function GetHundreds(ByVal MyNumber)
	Dim Result As String
	
	If Val(MyNumber) = 0 Then Exit Function
	
	MyNumber = Right("000" & MyNumber, 3)
	
	' Convert the hundreds place.
	If Mid(MyNumber, 1, 1) <> "0" Then
		Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
	End If
	
	' Convert the tens and ones place.
	If Mid(MyNumber, 2, 1) <> "0" Then
		Result = Result & GetTens(Mid(MyNumber, 2))
	Else
		Result = Result & GetDigit(Mid(MyNumber, 3))
	End If
	
	GetHundreds = Result
End Function

Function GetTens(TensText)
	Dim Result As String
	Result = "" ' Null out the temporary function value.

	If Val(Left(TensText, 1)) = 1 Then   ' If value between 10-19...
		Select Case Val(TensText)
			Case 10: Result = "Ten"
			Case 11: Result = "Eleven"
			Case 12: Result = "Twelve"
			Case 13: Result = "Thirteen"
			Case 14: Result = "Fourteen"
			Case 15: Result = "Fifteen"
			Case 16: Result = "Sixteen"
			Case 17: Result = "Seventeen"
			Case 18: Result = "Eighteen"
			Case 19: Result = "Nineteen"
			Case Else
		End Select
	Else ' If value between 20-99...
		Select Case Val(Left(TensText, 1))
			Case 2: Result = "Twenty "
			Case 3: Result = "Thirty "
			Case 4: Result = "Forty "
			Case 5: Result = "Fifty "
			Case 6: Result = "Sixty "
			Case 7: Result = "Seventy "
			Case 8: Result = "Eighty "
			Case 9: Result = "Ninety "
		Case Else
		End Select
	Result = Result & GetDigit _
	(Right(TensText, 1))  ' Retrieve ones place.
	End If
	
	GetTens = Result
End Function

Function GetDigit(Digit)
	Select Case Val(Digit)
		Case 1: GetDigit = "One"
		Case 2: GetDigit = "Two"
		Case 3: GetDigit = "Three"
		Case 4: GetDigit = "Four"
		Case 5: GetDigit = "Five"
		Case 6: GetDigit = "Six"
		Case 7: GetDigit = "Seven"
		Case 8: GetDigit = "Eight"
		Case 9: GetDigit = "Nine"
		Case Else: GetDigit = ""
	End Select
End Function
  1. Nhấn Ctrl + S để lưu bảng tính đã cập nhật.

Bạn sẽ cần phải lưu lại bảng tính của bạn. Khi bạn cố gắng lưu bảng tính với một macro, bạn sẽ nhận được thông báo ” Các tính năng sau đây không thể được lưu trong bảng tính macro”

The following features cannot be saved in macro-free Workbook : VB project
Các tính năng sau đây không thể được lưu trong bảng tính macro

Nhấp vào NO. Khi bạn thấy một hộp thoại mới, chọn tùy chọn ” Save as type ” và “Excel macro-enabled workbook “.

 Save as type " và "Excel macro-enabled workbook
 Save as type ” và “Excel macro-enabled workbook

Sử dụng macro SpellNumber trong bảng tính của bạn

Bây giờ bạn có thể sử dụng hàm SpellNumber. Nhập =SpellNumber(A2) vào ô nơi bạn cần lấy số được viết bằng từ. Ở đây A2 là địa chỉ của ô có số hoặc số.

Spelled out numbers to dollars and cents
Spelled out numbers to dollars and cents

Ở đây bạn có thể thấy kết quả:

Spelled out numbers to dollars and cents
Sử dụng macro SpellNumber trong bảng tính của bạn

Được rồi !

Sao chép nhanh chức năng SpellNumber sang các ô khác.

Nếu bạn cần chuyển đổi toàn bộ bảng, không chỉ 1 ô, đặt con trỏ chuột đến góc dưới bên phải của ô với công thức cho đến khi nó biến thành một chữ thập nhỏ màu đen:

Quickly copy the SpellNumber function to other cells

Nhấp chuột trái và kéo nó qua cột để điền vào công thức. Nhả nút để xem kết quả:

Spelled out numbers to dollars and cents

Chú thích. Hãy ghi nhớ rằng nếu bạn sử dụng SpellNumber với một liên kết đến một ô khác, số tiền bằng văn bản sẽ được cập nhật mỗi khi số trong ô nguồn được thay đổi.
Bạn cũng có thể nhập số trực tiếp vào hàm, ví dụ, =SpellNumber(29.95) (29,95 – không có dấu ngoặc kép và dấu đô la).

Nhược điểm của việc sử dụng macro để đánh vần số trong Excel

Trước hết, bạn phải biết VBA sửa đổi mã theo nhu cầu của bạn. Bạn cần dán mã cho mỗi bảng tính, nơi bạn muốnh thay đổi nó. Nếu không, bạn sẽ cần phải tạo tệp mẫu có macro và định cấu hình Excel để tải tệp này vào mỗi lần bắt đầu.

Bất lợi chính của việc sử dụng macro là nếu bạn gửi bảng tính tới người khác, người này sẽ không nhìn thấy văn bản trừ khi macro được tích hợp vào bảng tính. Và ngay cả khi nó được tích hợp, họ sẽ nhận được cảnh báo rằng có những macro trong bảng tính.

Add a macro to your workbook


Tác giả: dtnguyen (Nguyễn Đức Thanh)

@ Học Excel Online | DTNguyen.business
· · ·

Khóa học mới xuất bản