Thomas的列仅包含文本值(例如句子和短语),仅包含一列。一些单元格以红色显示其文本,其余单元格以黑色显示。他想要一种分隔文本的方法,以使黑色文本单元格保留在该列中,而红色文本单元格移至下一列。

有两种方法可以解决此问题。也许最简单的方法是简单地对其中包含文本值的列进行排序或过滤。 Excel允许您根据文本颜色进行过滤和排序,这意味着您可以只看到红色文本单元格,也可以将所有红色文本单元格置于连续范围内。然后,剪切红文本单元格并将其粘贴到下一列是一项容易的任务。

例如,这是您进行排序的方式:

。选择包含您的文本值的单元格。

。显示功能区的“数据”选项卡。

。单击“排序和筛选”组中的“排序”工具。 Excel将显示“排序”对话框。

。使用“排序依据”下拉列表,选择“字体颜色”。

。使用“顺序”下拉列表指示要在排序列表中首先显示的颜色。 (在这里可以选择红色。下拉列表包括在步骤1中选择的范围内检测到的每种颜色。)

。单击确定。

现在,您的单元格将按照颜色进行排序,并在单元格范围的开始处使用步骤5中指定的颜色。您可以轻松地将其复制或移动到其他列。如果要基于字体颜色过滤文本值,可以使用相同的常规步骤。

如果愿意,还可以使用宏来移动红色文本单元格。

这是一个将单元格值和字体颜色复制到右侧一个单元格的示例。

Sub MoveRedText1()

Dim c As Range

If Selection.Columns.Count > 1 Then Exit Sub

For Each c In Selection         If c.Font.Color = vbRed Then             c.Offset(0, 1) = cell.Value             c.Offset(0, 1).Font.Color = vbRed             c.ClearContents             c.Font.Color = vbBlack         End If     Next c End Sub

要使用宏,只需选择要分析的单元格,然后运行宏。它不会复制正在移动的单元格的所有格式。如果这很关键,您实际上可以使用简单得多的宏进行移动。

Sub MoveRedText2()

Dim c As Range

For Each c In Selection         If c.Font.Color = vbRed Then _           c.Cut Destination:=c.Offset(0, 1)

Next c End Sub

如果您使用这些宏中的任何一个而您的红色文本单元格都没有移动,则可能是因为这些单元格实际上并未使用红色文本。 Excel中可以显示许多不同的红色阴影,因此您需要调整宏以确保检查正确的字体颜色。

注意:

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

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

本技巧(12604)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。