Đổi điểm từ số sang chữ (1 người xem)

  • Thread starter Thread starter quangqm
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

quangqm

Thành viên mới
Tham gia
10/5/09
Bài viết
5
Được thích
0
Tôi có vấn đề này cần hỏi các bạn:
- Đổi điểm từ số sang chữ. Ví dụ: 8-> Tám ; 7,5-> Bảy phẩy năm......
Mình đã dùng thử hàm IF lồng nhau nhưng Excel 2003 chỉ cho phép tối đa 8 hàm IF lồng nhau nên không bao quát hết được các trường hợp.
Vậy bác nào có cách gì giúp được không.
Cảm ơn các bác trước.
 
Vlookup tìm được nhiều hơn IF.

Tôi có vấn đề này cần hỏi các bạn:
- Đổi điểm từ số sang chữ. Ví dụ: 8-> Tám ; 7,5-> Bảy phẩy năm......
Mình đã dùng thử hàm IF lồng nhau nhưng Excel 2003 chỉ cho phép tối đa 8 hàm IF lồng nhau nên không bao quát hết được các trường hợp.
Thử dùng Hàm Vlookup xem sao.
 
Tôi có vấn đề này cần hỏi các bạn:
- Đổi điểm từ số sang chữ. Ví dụ: 8-> Tám ; 7,5-> Bảy phẩy năm......
Mình đã dùng thử hàm IF lồng nhau nhưng Excel 2003 chỉ cho phép tối đa 8 hàm IF lồng nhau nên không bao quát hết được các trường hợp.
Vậy bác nào có cách gì giúp được không.
Cảm ơn các bác trước.

Điều kiện: - Thang điểm: 10 & làm tròn 0.5
 

File đính kèm

Thử dùng Hàm Vlookup xem sao.
Bạn Ba Tê à, chỉ đúng với mỗi "Một phẩy năm" thôi sao?
Tôi thử nhập 1.75 (hay là bất kỳ số lẻ nào khác 1.5) vào trong F5, công thức của bạn la làng liền!

-----------------------
To Quangqm. Vấn đề của bạn, tôi chợt nghĩ cách xử như sau, với những phương tiện sẵn có trên diễn đàn và trong Excel:

Đầu tiên, mời bạn download Addin này về máy: Accounting Helper v2.0.3

Sau khi đã cài đặt vào Excel thành công, bạn hãy thoát Excel, rồi vào trong chỗ mà bạn đã chép và giải nén chương trình Accounting Helper v2.0.3, chạy file AcchelperOptions.exe, bạn sẽ thấy cái này:
000-1336.jpg
Bạn hãy xóa hết những gì đang có trong các ô mà tôi khoanh đỏ dưới đây, rồi nhấn Chấp nhận:
001-70.jpg


Mở Excel lên. Ví dụ ô nhập điểm của bạn là ô B1, và ô C1 là ô sẽ đọc con số trong ô B1 thành chữ, bạn nhập công thức này vào trong ô C1:
=VND(INT(B1)) & IF(B1-INT(B1)>0, " phẩy " & LOWER(VND((B1-INT(B1))*10^(LEN(B1)-2))), "")​

Viết được bài này, xin chân thành cảm ơn TuanVNUI, tác giả của Accounting Helper v2.0.3.
Tuy nhiên, ước gì tác giả cho thêm một cái Option "không viết hoa chữ đầu câu" để tôi khỏi phải dùng đến hàm LOWER trong công thức ở trên...
 
bổ sung làm tròn 0.5

Bạn Ba Tê à, chỉ đúng với mỗi "Một phẩy năm" thôi sao?
Tôi thử nhập 1.75 (hay là bất kỳ số lẻ nào khác 1.5) vào trong F5, công thức của bạn la làng liền!
Tôi ví dụ thử 1 dòng để tác giả tiếp tục thực hiện, nếu làm sẵn hết thì mất hứng thú cho người ta - tôi nghĩ vậy.
 
Tôi ví dụ thử 1 dòng để tác giả tiếp tục thực hiện, nếu làm sẵn hết thì mất hứng thú cho người ta - tôi nghĩ vậy.
Công nhận cách làm của bạn cũng là một cách hay.. Nó giống như "tra từ điển" vậy.
Nhưng như thế thì "mắc công" quá... Chẳng lẽ dời sang Sheet khác, hoặc mở file khác, lại phải chép cái cuốn từ điển này mang theo sao?

Có thể bạn nói rằng cách của tôi trình bày ở trên còn mắc công hơn gấp bội.. nào là tải Addin về, giải nén nó ra, cài vào Excel, rồi thoát Excel, sửa Option, rồi khi đó mới xài được cái công thức dài ngoằng đó.

Vâng, cũng mắc công thật, vì tạm thời tôi chưa nghĩ ra cách gì nhanh hơn, mà cũng tại vì trong máy tôi đã có sẵn cái Addin này. Nhưng, chỉ mắc công một lần thôi, sau đó thì "phẻ re"... Và ngoài cái chuyện "phẩy" này, Addin mà tôi giới thiệu còn làm được nhiều chuyện khác, nếu như các bạn có sẵn nó trong Excel, thật đấy!

Cái công thức của tôi, không chỉ đọc được 0.25, 0.5 mà thôi đâu.. nó đọc tuốt... 1,1 là "một phẩy một", 3,46 là "ba phẩy bốn mươi sáu", ví dụ thế... Chỉ có điều, thiết nghĩ rằng điểm trong lớp học chỉ có 2 số lẻ là tối đa, nên tôi chỉ cho nó đọc tới 2 số lẻ thôi, còn nhiều hơn thì hỏng đúng đâu nghe.

À, nói thêm, chính xác thì nó vẫn đọc mấy số có nhiều hơn 2 số lẻ, nhưng hơi tức cười. Ví dụ: thường chúng ta đọc 5.125 là "năm phẩy một hai lăm", còn công thức của tôi đọc là "năm phẩy một trăm hai mươi lăm"... vậy đó.

Đã nói thì nói cho hết. Công thức của tôi, không dám nói là đúng nhất đâu nghe... Tôi nghĩ rằng sẽ có nhiều bạn khác nghĩ ra cái gì đó "ngon" hơn nhiều, không dùng đến Addin chẳng hạn!

Thuật toán của bài toán này, theo tôi nghĩ, là tách con số thành 2 phần (nếu như điểm không phải là số nguyên), sau đó dùng hàm đọc số ra chữ, cho đọc 2 lần, một lần cho phần nguyên, và một lần cho phần lẻ, ghép lại với nhau với chữ "phẩy" ở giữa, là xong. Với điểm chạy từ 1 đến 10, có lẽ sẽ có ai đó viết dùm một cái UDF ngắn ngủn và hay hơn nhiều... mong thay!
 
Lần chỉnh sửa cuối:
Làm tròn như thế nào mới đúng.

Điều kiện: - Thang điểm: 10 & làm tròn 0.5
Nếu làm tròn 0.5 thì tôi hiểu như thế này:
<.25 --> không làm tròn.
>=.25<.75 --> làm tròn thành .5
>=.75 làm tròn lên điểm tròn.
Vd: 3.2 --> 3.0
3.25 --> 3.5
4.6 --> 4.5
4.8 --> 5.0
Chẳng biết có phải thế không?
Trong bài của bạn 9.8 --> 9.5 thì thiệt quá.
 
Công nhận cách làm của bạn cũng là một cách hay.. Nó giống như "tra từ điển" vậy.
Nhưng như thế thì "mắc công" quá... Chẳng lẽ dời sang Sheet khác, hoặc mở file khác, lại phải chép cái cuốn từ điển này mang theo sao?

Có thể bạn nói rằng cách của tôi trình bày ở trên còn mắc công hơn gấp bội.. nào là tải Addin về, giải nén nó ra, cài vào Excel, rồi thoát Excel, sửa Option, rồi khi đó mới xài được cái công thức dài ngoằng đó.

Vâng, cũng mắc công thật, vì tạm thời tôi chưa nghĩ ra cách gì nhanh hơn, mà cũng tại vì trong máy tôi đã có sẵn cái Addin này. Nhưng, chỉ mắc công một lần thôi, sau đó thì "phẻ re"... Và ngoài cái chuyện "phẩy" này, Addin mà tôi giới thiệu còn làm được nhiều chuyện khác, nếu như các bạn có sẵn nó trong Excel, thật đấy!

Cái công thức của tôi, không chỉ đọc được 0.25, 0.5 mà thôi đâu.. nó đọc tuốt... 1,1 là "một phẩy một", 3,46 là "ba phẩy bốn mươi sáu", ví dụ thế... Chỉ có điều, thiết nghĩ rằng điểm trong lớp học chỉ có 2 số lẻ là tối đa, nên tôi chỉ cho nó đọc tới 2 số lẻ thôi, còn nhiều hơn thì hỏng đúng đâu nghe.

À, nói thêm, chính xác thì nó vẫn đọc mấy số có nhiều hơn 2 số lẻ, nhưng hơi tức cười. Ví dụ: thường chúng ta đọc 5.125 là "năm phẩy một hai lăm", còn công thức của tôi đọc là "năm phẩy một trăm hai mươi lăm"... vậy đó.

Đã nói thì nói cho hết. Công thức của tôi, không dám nói là đúng nhất đâu nghe... Tôi nghĩ rằng sẽ có nhiều bạn khác nghĩ ra cái gì đó "ngon" hơn nhiều, không dùng đến Addin chẳng hạn!

Thuật toán của bài toán này, theo tôi nghĩ, là tách con số thành 2 phần (nếu như điểm không phải là số nguyên), sau đó dùng hàm đọc số ra chữ, cho đọc 2 lần, một lần cho phần nguyên, và một lần cho phần lẻ, ghép lại với nhau với chữ "phẩy" ở giữa, là xong. Với điểm chạy từ 1 đến 10, có lẽ sẽ có ai đó viết dùm một cái UDF ngắn ngủn và hay hơn nhiều... mong thay!
------------
> BNTT: Tôi chưa nghĩ đến việc đọc tất cả các số, đề bài chỉ nêu đọc đại khái một vài số, tiện tay làm luôn chứ không nghĩ là hoàn thiện và tiện dụng, rất cảm ơn bạn đóng góp, tôi sẽ "nghiền ngẫm" lại cái tự điển này xem có cách nào hay hơn không.
Sẽ nghiên cứu bài giới thiệu của bạn.
Chào trân trọng.
 
Tôi có vấn đề này cần hỏi các bạn:
- Đổi điểm từ số sang chữ. Ví dụ: 8-> Tám ; 7,5-> Bảy phẩy năm......
Mình đã dùng thử hàm IF lồng nhau nhưng Excel 2003 chỉ cho phép tối đa 8 hàm IF lồng nhau nên không bao quát hết được các trường hợp.
Vậy bác nào có cách gì giúp được không.
Cảm ơn các bác trước.
Nếu chỉ đọc số từ 0 > 10 và 1 số thập phân, bạn thử dùng hàm này :

Mã:
Function DocDiem(number) As String
Dim nguyen As Long, thapphan As Long
arNum = Array("không", "m" & ChrW(7897) & "t", "hai", "ba", "b" & ChrW(7889) & "n", "n" & ChrW(259) & "m", "sáu", "b" & ChrW(7843) & "y", "tám", "chín", "m" & ChrW(432) & ChrW(7901) & "i")
If number <> "" Then
  nguyen = Int(number)
  thapphan = (number - nguyen) * 10
  DocDiem = arNum(nguyen)
  If thapphan > 0 Then DocDiem = DocDiem & " ph" & ChrW(7849) & "y " & arNum(thapphan)
End If
End Function
 
Cảm ơn các bác Ba Tê và BNTT. Tôi đã làm được rồi
 
Nếu làm tròn 0.5 thì tôi hiểu như thế này:
<.25 --> không làm tròn.
>=.25<.75 --> làm tròn thành .5
>=.75 làm tròn lên điểm tròn.
Vd: 3.2 --> 3.0
3.25 --> 3.5
4.6 --> 4.5
4.8 --> 5.0
Chẳng biết có phải thế không?
Trong bài của bạn 9.8 --> 9.5 thì thiệt quá.

Mình không can thiệp vào việc làm tròn như thế nào để khỏi thiệt mà chỉ giúp tác giả dọc điểm và công thức chỉ đúng khi thỏa mãn điều kiện:
- Thang điểm:10 => muốn lơn hơn phải mở rộng
- Làm tròn 0,5: số thập phân (nếu có) chỉ là số 5. Còn nếu muốn chi li thì phải dùng công thức khác.
 
Cảm ơn Phamduylong,
Mình thử code của bạn thấy trường hợp đọc điểm theo thang 10 và chỉ có tối đa 01 chữ thập phân thì rất ok rồi... mình muốn bạn bổ sung cho trường hợp có thể có 02 chữ số thập phân có được không bạn? Mình không rành về code nên muốn nhận được sự trợ giúp của bạn, cảm ơn bạn rất nhiều.
 

Bài viết mới nhất

Back
Top Bottom