G-LEARNING
G-LEARNING
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 312 lượt xem

Giới thiệu hai cách hiệu quả nhất để chuyển đổi dạng số sang chữ trong Excel

Jun 14 2017

Trong bài này, Gitiho.com sẽ giới thiệu cho các bạn hai cách để chuyển đổi 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.

SpellNumber VBA macro để chuyển đổi số sang chữ

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 .
Vào Insert chọn Module 

Vào Insert chọn Module

  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.
Xuất hiện cửa sổ có tên YourBook - Module1

Xuất hiện cửa sổ có tên YourBook – Module1

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”

Thông báo

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 “.

Chọn " Save as type " và "Excel macro-enabled workbook ".

Chọn ” 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ố.

Sử dụng hàm SpellNumber

Sử dụng hàm SpellNumber

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

Bảng kết quả

Bảng kết quả

Đượ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:

đặt con trỏ chuột đến góc dưới bên phải để chuyển đổi toàn bộ ô

đặt con trỏ chuột đến góc dưới bên phải để chuyển đổi toàn bộ ô

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.

Cảnh báo

Đánh giá bài viết này

Cùng tham gia cộng đồng hỏi đáp về chủ đề Excel Nâng Cao

Thảo luận 0 câu trả lời
Lượt xem 312 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội