替换单元格末尾的字符(Microsoft Excel)
Sam在工作表中有大量地址。在这些地址中,他需要确保所有罗盘方向(NE,SE,NW和SW)
都是大写的。如果Sam可以弄清楚如何更改仅出现在单元格末尾且带有大写字母的任何小写(或大小写混合)方向,将非常有帮助。他不能只搜索后跟“ ne”的空格,因为那样会将Newton更改为NEwton,因此他想知道如何确保仅当字母出现在单元格末尾时才进行替换。
使用Excel中的“查找和替换”工具无法完成此任务。这意味着您需要使用公式或宏来执行任务。可以使用公式来确保单元格的最后两个字符为大写:
=LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2))
然而,这种公式的问题在于它是非歧视性的。只要使用的任何单元格的最后两个字符都具有罗盘方向,就没有问题。但是,如果某些单元格没有指南针方向,那么您很快就会遇到问题。在这种情况下,您实际上需要让公式检查最后一个字符:
=IF(LOWER(RIGHT(A1,3))=" ne", LEFT(A1,LEN(A1)-2) & "NE", IF(LOWER(RIGHT(A1,3))=" se", LEFT(A1,LEN(A1)-2) & "SE", IF(LOWER(RIGHT(A1,3))=" nw", LEFT(A1,LEN(A1)-2) & "NW", IF(LOWER(RIGHT(A1,3))=" sw", LEFT(A1,LEN(A1)-2) & "SW", A1))))
此公式检查后三个字符是否为空格,后跟ne,se,nw或sw。如果是这种情况,那么后两个字符将变为大写。如果采用不同的方法,则可以将公式缩短一点:
=IF(OR(LOWER(RIGHT(A1,3))=" ne", LOWER(RIGHT(A1,3))=" se", LOWER(RIGHT(A1,3))=" nw", LOWER(RIGHT(A1,3))=" sw"), LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2)), A1)
如果您不想使用公式,则可以轻松地创建一个宏来为您执行检查和转换:
Sub CapDirections() For Each RCell In Selection CText = UCase(Right(RCell.Value, 3)) If CText = " NE" Or CText = " SE" _ Or CText = " SW" Or CText = " NW" Then RCell.Value = Left(RCell.Value, _ Len(RCell.Value) - 3) + CText End If Next End Sub
要使用宏,只需选择包含地址的单元格,然后运行它。它检查看四个罗盘点之一是否在单元格值的末尾,如果是,则确保罗盘方向为大写。
您应该注意,这些解决方案基于您的地址中只有四个可能的指南针方向。如果您的地址具有更广泛的指南针方向(例如N或SSE),则您肯定要使用基于宏的解决方案,因为对于公式而言,检查很快变得非常复杂。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(9745)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: