![Excel - 文本转换保持罗马数字大写](https://linux22.com/image/1553957/Excel%20-%20%E6%96%87%E6%9C%AC%E8%BD%AC%E6%8D%A2%E4%BF%9D%E6%8C%81%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97%E5%A4%A7%E5%86%99.png)
我有一个从另一个程序导出的 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
然后在单元格中使用文本A1,B1进入:
=Properize(A1)
该功能将“大写”罗马数字和“看起来像”罗马数字的单词(例如 CCCCCCCCCCCCCCCCCCCCCCCCCCC)
用户定义函数 (UDF) 非常容易安装和使用:
- ALT-F11 打开 VBE 窗口
- ALT-I ALT-M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx
要删除 UDF:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 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
必须启用宏才能使其工作!