Excel - 文本转换保持罗马数字大写

Excel - 文本转换保持罗马数字大写

我有一个从另一个程序导出的 CSV 文件,其中有一列是标题。原始程序中的标题字段数据全部为大写,因此导出时,标题看起来是这样的:“COLUMN TITLE IV”。如果我尝试将文本转换为大写,标题最终看起来会像这样:“Column Title Iv”。

有什么方法可以保留标题中的罗马数字为大写,而将其余部分转换为正确的大写?

我的文件有大约 5,000 个条目,因此我需要一种非手动的方式来完成此操作。

编辑:如果我的标题是“CPR 基础 IV”,会发生什么情况?有没有办法保留 CPR 上限,并将“基础”改为“基础”?

答案1

首先在标准模块中安装以下用户定义函数:

Public Function Properize(s As String) As String
    Dim temp As String, i As Long, L As Long, U As Long
    ary = Split(UCase(s), " ")
    U = UBound(ary)
    L = LBound(ary)
    With Application.WorksheetFunction
        For i = L To U
            If IsRoman(ary(i)) Then
            Else
                ary(i) = .Proper(ary(i))
            End If
        Next i
    End With
    Properize = Join(ary, " ")
End Function


Public Function IsRoman(s As Variant) As Boolean
    Dim i As Long, L As Long
    For i = 1 To Len(s)
        ch = Mid(s, i, 1)
        If InStr(1, "IVXLCDM", Mid(s, i, 1)) = 0 Then
            IsRoman = False
            Exit Function
        End If
    Next i
    IsRoman = True
End Function

然后在单元格中使用文本A1B1进入:

=Properize(A1)

在此处输入图片描述

该功能将“大写”罗马数字和“看起来像”罗马数字的单词(例如 CCCCCCCCCCCCCCCCCCCCCCCCCCC)

用户定义函数 (UDF) 非常容易安装和使用:

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要从 Excel 使用 UDF:

=我的函数(A1)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!

相关内容