如何使用格式化文本查找和替换部分单元格

时间:2013-06-06 14:06:22

标签: excel excel-vba excel-2007 vba

在Excel 2007电子表格中,我想查找 - 替换为突出显示单元格中文本的一部分。使用find-replace重新格式化整个单元格。

例如,如果单元格包含:

  

Pellentesque vel massa坐在地板上。 Pellentesque   dictum,nibh vitae tincidunt placerat,elit libero tristique tellus,   vel imperdiet nulla tortor id diam。 Mauris porta blandit vestibulum。

我想找到“Pellentesque”并将其替换为 Pellentesque

这可以在没有VBE或公式的情况下完成吗?

4 个答案:

答案 0 :(得分:6)

也许这适合(确保在运行前不再选择不必要的单元格,否则可能需要一段时间):

Sub FormatSelection()

Dim cl As Range
Dim SearchText As String
Dim StartPos As Integer
Dim EndPos As Integer
Dim TestPos As Integer
Dim TotalLen As Integer

On Error Resume Next
Application.DisplayAlerts = False
SearchText = Application.InputBox _
(Prompt:="Enter string.", Title:="Which string to format?", Type:=2)
On Error GoTo 0
Application.DisplayAlerts = True
If SearchText = "" Then
Exit Sub
Else
For Each cl In Selection
  TotalLen = Len(SearchText)
  StartPos = InStr(cl, SearchText)
  TestPos = 0
  Do While StartPos > TestPos
    With cl.Characters(StartPos, TotalLen).Font
      .FontStyle = "Bold"
      .ColorIndex = 3
    End With
    EndPos = StartPos + TotalLen
    TestPos = TestPos + EndPos
    StartPos = InStr(TestPos, cl, SearchText, vbTextCompare)
  Loop
Next cl
End If
End Sub

应该加重并涂上红色。如果重新运行宏,则不会覆盖更改。注释掉.ColorIndex = 3,如果不改变颜色。

(基于@Skip Intro指向SO15438731问题的修正案以及SO10455366答案中的一些代码。)

答案 1 :(得分:2)

这对我来说非常有用:

  1. Excel中选定的单元格(我一次选择1266个 - 不知道是否有任何限制)

  2. 点击COPY

  3. 打开一个空白的word文件,然后点击PASTE

  4. 使用CNTL + H获取Find&替换

  5. 输入要查找的字符和要替换的字符,添加所需的任何格式并选择全部替换(此过程不到2秒)

  6. 在Word文件中选择编辑 - 选择 - 全选,然后按住Shift键并按下左箭头(我认为不这样做会在下一个操作中添加一行)

  7. 返回Excel并在备用区域中选择“粘贴 - 保留源格式”选项

  8. 将我想要的完全放入Excel中。从那里我可以将它移动到我想要的任何地方。

答案 2 :(得分:1)

绝对最轻松的方式来做到这一点 使用标准的Find&替换CTRL + F命令 是“临时”加载“Calibri字体”字符•又名。 “黑色子弹点”

像这样:•样本•

来自“插入”标签的

- >符号 - > Calibri字体 - >并在最后)

因此,您可以使眼睛更容易 读取多行excel数据,

然后也很容易将它再次移回原来的状态 简单地再说一个Find&替换逆转。

希望这有助于某人,它确实帮助我的眼睛更快地扫描。


旧回应

这种简单的非编程方式是:

  1. 将文本粘贴到MS Word

  2. 然后运行Find&替换(CTRL + F)那里(自定义格式更改在“更多>>”下面的左下角按钮,然后“格式化”到您需要的定制) - 这将完美地完成所有更改...

  3. 然后而不是在Excel中进行PASTE SPECIAL(通过主页选项卡 - >粘贴 - >选择性粘贴 - >粘贴为HTML(以便保留格式)(可以和对于1000行以上的任何事情而言,内存密集,速度太慢)

  4. 最好简单地将“另存为”从Word文档转换为RTF文件,然后通过简单的“打开文件”将该文件重新导入Excel。

    Excel具有非常好的“重复模式细胞结构”识别功能,但当然,这种解决方法可能无法在每次复制所需的细胞分裂时完美地发挥作用,但它应该在大多数情况下保持细胞顺序。 / p>

    这么简单的方法可以做到这一点,直到微软停止限制一个选项,在一个单元格中“突出显示/加粗”一个找到结果文本,而不是总是用粗体表示整个单元格。

    问候 马尔科

答案 3 :(得分:0)

要使搜索项与案例无关,您可以使用:

Sub FormatSelection()

Dim cl As Range
Dim SearchText As String
Dim StartPos As Integer
Dim EndPos As Integer
Dim TestPos As Integer
Dim TotalLen As Integer

On Error Resume Next
Application.DisplayAlerts = False
SearchText = Application.InputBox _
(Prompt:="Enter string.", Title:="Which string to format?", Type:=2)
On Error GoTo 0
Application.DisplayAlerts = True
If SearchText = "" Then
Exit Sub
Else
For Each cl In Selection
  TotalLen = Len(SearchText)
  StartPos = InStr(Ucase(cl), Ucase(SearchText))
  TestPos = 0
  Do While StartPos > TestPos
    With cl.Characters(StartPos, TotalLen).Font
      .FontStyle = "Bold"
      .ColorIndex = 3
    End With
    EndPos = StartPos + TotalLen
    TestPos = TestPos + EndPos
    StartPos = InStr(TestPos, cl, SearchText, vbTextCompare)
  Loop
Next cl
End If
End Sub