修改大写字母(Microsoft Excel)
与许多人一样,柯克将信息复制到源自其他地方的Excel工作表中。柯克通常复制的信息全部用大写字母表示,他想将其转换为Excel所称的“适当大小写”(仅每个单词的第一个字母大写)。问题是,进行转换的PROPER工作表函数没有注意其大写的单词。因此,像“ a”,“ an”,“ in”,“ and”,“ the”和“ with”之类的词均以首字母为上限。柯克不希望这些词(也许还有其他)大写。
有几种方法可以解决此问题。一种是使用相当长的公式进行转换:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( SUBSTITUTE(SUBSTITUTE(PROPER($B$13);" A ";" a "); " An ";" an ");" In ";" in ");" And ";" and "); " The ";" the ");" With ";" with ")
记住,这都是一个单一的公式。它进行大小写转换,但随后用所需的小写单词替换(a,an,in和the,with)。尽管这相对容易,但是随着您增加应进行替换的单词数,该公式的实用性将受到限制。
也许更好的方法是使用用户定义的函数宏为您执行大小写转换。以下函数检查不应该有首字母大写的一些常用单词,以确保它们是小写的。
Function MyProper(str As String) Dim vExclude Dim i As Integer vExclude = Array("a", "an", "in", "and", _ "the", "with", "is", "at") Application.Volatile str = StrConv(str, vbProperCase) For i = LBound(vExclude) To UBound(vExclude) str = Application.WorksheetFunction. _ Substitute(str, " " & _ StrConv(vExclude(i), vbProperCase) _ & " ", " " & vExclude(i) & " ") Next MyProper = str End Function
可以将单词添加到数组中,并且代码自动感测添加的内容并检查那些添加的单词。还要注意,代码在执行检查时会在数组中的每个单词前后添加一个空格。这样一来,您就无需更改部分单词(例如“ and”位于“ stand”之内)或句子开头的单词的代码。您可以通过以下方式在工作表中使用该函数:
=MyProper(B7)
此用法返回修改后的文本,而无需调整B7中的原始文本。
如果愿意,可以使用一个函数,该函数从工作簿中的指定范围获取其单词列表。以下函数使用一系列名为MyList的单元格,每个单元格只有一个单词。假定此列表位于名为WordList的工作表中。
Function ProperSpecial(cX As Range) ' rng = target Cell Dim c As Range Dim sTemp As String sTemp = Application.WorksheetFunction.Proper(cX.Value) For Each c In Worksheets("WordList").Range("MyList") sTemp = Application.WorksheetFunction.Substitute( _ sTemp, Application.WorksheetFunction.Proper( _ " " & c.Value & " "), (" " & c.Value & " ")) Next c ProperSpecial = sTemp End Function
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(11267)适用于Microsoft Excel 2007和2010。您可以在以下旧版Excel菜单界面中找到本技巧的版本: