Thay đổi chữ số La Mã sang tiếng Ả Rập (Microsoft Word)
Bradley có một tài liệu có nhiều chữ số La Mã bên trong văn bản. Anh ta cần một cách dễ dàng để thay đổi hàng nghìn chữ số La Mã này sang tiếng Ả Rập.
Đây không phải là các lĩnh vực thuộc bất kỳ bản chất nào; chúng chỉ đơn giản được nhập vào văn bản dưới dạng số La Mã. Anh ấy tự hỏi liệu có cách nào để dễ dàng thay đổi chúng thành các từ tương đương tiếng Ả Rập của chúng không.
Thật không may, không có chức năng nào trong Word sẽ chuyển đổi chữ số La Mã sang tiếng Ả Rập. Bạn có thể, nếu muốn, chỉ cần sử dụng Tìm và Thay thế để tìm kiếm các chữ số La Mã, nhưng bạn sẽ phải thực hiện một tìm kiếm riêng lẻ cho từng chữ số. Bạn có thể sử dụng tìm kiếm theo thẻ đại diện để tìm kiếm một từ hoàn toàn bao gồm các chữ số La Mã viết hoa, điều này sẽ làm cho việc tìm kiếm dễ dàng hơn một chút. Tất cả những gì bạn cần làm là tìm kiếm “<[CDILMVX] \ {1,}>” (không có dấu ngoặc kép) và đảm bảo rằng bạn đã chọn hộp kiểm Sử dụng ký tự đại diện. Khi bạn nhấp vào Tìm tiếp theo, chữ số La Mã tiếp theo sẽ được đặt và sau đó bạn có thể thay đổi thủ công thành chữ số Ả Rập tương đương.
Một cách khác để cố gắng thực hiện chuyển đổi là sử dụng macro. Bạn có thể tạo macro xem xét từng từ trong tài liệu của mình và cố gắng xác định xem nó có phải là ứng cử viên để bao gồm các chữ số La Mã hay không. Tuy nhiên, bạn có thể nhận được một số kết quả dương tính giả, đặc biệt nếu tài liệu của bạn chứa các từ viết tắt có thể bị nhầm lẫn là số La Mã. (Ví dụ: nếu bạn sử dụng từ viết tắt CC cho thẻ tín dụng, đó có thể được coi là chữ số La Mã của 200.)
Tập hợp các macro sau sẽ xem xét từng từ trong một tài liệu và nếu từ đó chỉ chứa các chữ số La Mã (I, V, X, L, C, D và M) thì người dùng sẽ được hỏi liệu macro có nên chuyển đổi chữ số.
Sub ConvertRoman() Dim wrdX Dim wrd As String Dim tstSW As Boolean Dim J As Long For Each wrdX In ActiveDocument.Words wrd = UCase(Trim(wrdX)) If wrd = "" Or wrd = "I" Or wrd = vbCr Then tstSW = False Else tstSW = True End If For J = 1 To Len(wrd) If InStr("MDCLXVI",Mid(wrd, J, 1)) = 0 Then tstSW = False Exit For End If Next J If tstSW Then wrdX.Select Selection.MoveLeft unit:=wdCharacter, _ Count:=Len(wrdX) - Len(wrd), _ Extend:=wdExtend J = MsgBox("Convert " & wrd & " to Arabic", vbYesNoCancel) If J = vbCancel Then Exit Sub If J = vbYes Then Selection.TypeText Text:=RomanToArabic(wrd) End If Next wrdX End Sub
Function RomanToArabic(Rm As String) As String Dim J As Long Dim ab As Long Dim cc As Long Dim dd As Long ab = 0 Rm = Trim(Rm) J = 1 Do cc = GetValue(Mid(Rm, J, 1)) dd = GetValue(Mid(Rm, J + 1, 1)) If cc < dd Then ab = ab + dd - cc J = J + 1 Else ab = ab + cc End If J = J + 1 Loop Until J >= Len(Rm) If J = Len(Rm) Then ab = ab + GetValue(Mid(Rm, J, 1)) End If RomanToArabic = Trim(Str(ab)) End Function
Function GetValue(ss As String) As Long Dim Cde() Dim Cvalue() Dim J As Long Cde = Array("M", "D", "C", "L", "X", "V", "I") Cvalue = Array(1000, 500, 100, 50, 10, 5, 1) For J = 0 To 6 If ss = Cde(J) Then GetValue = Cvalue(J) Exit Function End If Next J GetValue = 999999 End Function
Vì chữ hoa I là một từ rất phổ biến trong văn bản, các macro sẽ không dừng lại trên mỗi chữ để xác định xem có nên thực hiện chuyển đổi hay không.
Tuy nhiên, nếu chữ viết hoa I là một phần của từ dài hơn chỉ bao gồm các chữ số La Mã (chẳng hạn như XLVII), thì nó được coi là một ứng cử viên để chuyển đổi. Các macro cũng giả định rằng tất cả các chữ số La Mã của bạn đều là chữ hoa.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên các trang WordTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
WordTips là nguồn của bạn để đào tạo Microsoft Word hiệu quả về chi phí.
(Microsoft Word là phần mềm xử lý văn bản phổ biến nhất trên thế giới.) Mẹo này (12509) áp dụng cho Microsoft Word 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Word (Word 2007 và sau này) tại đây: