理查德希望能够在单元格中最左边的位置搜索撇号(’),但Excel不允许他这样做。换句话说,如果一个单元格包含’123或’a34tp,Richard希望能够找到该前导撇号,并可以选择将其替换为其他内容。

理查德想要做的事情需要一些初步的解释。

从技术上讲,将撇号称为“前导字符”或提及其位于单元格的“最左位置”是错误的说法。即使您可以查看“公式”栏并在公式的开头看到撇号,该撇号实际上也不是单元格内容的一部分;这就是为什么您不能使用“查找并替换”来查找和替换它的原因。

实际上,撇号被认为是单元格的“前缀字符”。

前缀字符的可能值由Excel中的“过渡导航键”设置来设置,并且该设置的值在每个工作簿的基础上保存。您可以使用“ Excel选项”对话框(位于对话框底部)的高级区域来更改此设置。

如果清除了设置(设置的默认条件),则每个单元格的前缀字符的值可以为空白或撇号。如果单元格包含文本,则前缀字符的设置实际上并没有多大关系。如果单元格内容不是文本,则将前缀字符设置为撇号会强制Excel将单元格内容视为文本。因此,例如,数字123被视为文本(而不是数字),并在公式栏中显示为’123。

如果选择“过渡导航键”设置(复选框中有一个复选标记),则每个单元格的前缀字符的值可以具有五个不同值之一。这些值与Lotus 1-2-3中使用的前缀一致,并且奇怪的是,Excel中仅支持它们作为对程序中常规用法的过渡性辅助。

可能的值是撇号(左对齐),引号(右对齐),克拉(居中),反斜杠(重复)或空白(非文本项)。

现在,回到Richard的原始问题:如何搜索并摆脱那个主要的撇号。您不能使用“查找并替换”来进行编辑,因为撇号实际上并不是单元格内容的一部分。

因此,您必须在宏中进行更改。更改相对容易。首先,您需要确保工作簿已清除“过渡导航键”设置。为什么?因为如果工作簿可以在将来的某个地方再次与Lotus 1-2-3一起使用,您可能不想弄乱单元格的前缀字符。您可以使用以下行在宏中确保设置正确:

Application.TransitionNavigKeys = False

然后,您可以逐步选择一个单元格,并检查每个单元格的前缀字符是否为撇号。如果是这样,那么您需要做的就是让宏按照以下方式手动重新键入单元格的内容:

For Each c In Selection     If c.PrefixCharacter = "'" Then         c.Value = c.Value     End If Next c

请注意,宏会检查PrefixCharacter属性中的内容。可以在VBA中读取此属性,但不能直接更改。这就是为什么宏需要使用看似简单的行将每个单元格的值分配回该单元格中的原因-本质上是重新键入内容。

如果您不想使用宏摆脱撇号前缀字符,则可以利用“选择性粘贴”一个奇怪的小怪癖。请遵循以下一般步骤:

。选择一个空白单元格并将其复制到剪贴板(使用Ctrl + C)。

。选择要从中删除前缀字符的单元格范围。

。显示“选择性粘贴”对话框。

。单击添加单选按钮。

。单击确定。

将空白单元格“添加”到每个目标单元格后,将删除前缀字符(如果有)。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10675)适用于Microsoft Excel 2007和2010。您可以在以下旧版Excel菜单界面中找到该技巧的版本: