簡體   English   中英

如何使用格式化文本查找和替換單元格的一部分

[英]How to find and replace part of a cell with formatted text

在 Excel 2007 電子表格中,我想通過突出顯示單元格中的部分文本進行查找替換。 使用查找替換重新格式化整個單元格。

例如,如果單元格包含:

Pellentesque vel massa 坐在 amet magna eleifend placerat。 Pellentesque dictum,nibh vitae tincidunt placerat,elit libero tristiquetellus,vel imperdiet nulla tortor id diam。 Mauris porta blandit 前庭。

我想找到“Pellentesque”並將其替換為Pellentesque

這可以在沒有 VBE 或公式的情況下完成嗎?

也許這適合(確保在運行之前不再選擇不必要的單元格,否則這可能需要一段時間):

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. Excel中選定的單元格(我一次選擇1266個 - 不知道是否有任何限制)

  2. 單擊COPY

  3. 打開一個空白的word文件,然后單擊PASTE

  4. 使用CNTL + H獲取查找和替換

  5. 輸入要查找的字符和要替換的字符,添加所需的任何格式並選擇全部替換(該過程花費不到2秒)

  6. 選擇Edit-Select-Select All在Word文件中,然后按住shift鍵並按下左箭頭(我認為不這樣做會在下一個操作中添加一行)

  7. 返回Excel並在備用區域中選擇“粘貼 - 保留源格式”選項

這正是我想要的東西到Excel。 從那里我可以將它移動到我想要的任何地方。

使用標准的查找和替換CTRL + F命令執行此操作的絕對最簡單方法是“臨時”加載“Calibri字體”字符•aka。 “黑色子彈點”

像這樣:•樣品•

從插入選項卡 - >符號 - > Calibri字體 - >並在最后)

因此,您可以更輕松地閱讀許多行的Excel數據,

並且稍后再輕輕地將它再次移回原件,只需再次查找和替換。

希望這有助於某人,它確實幫助我的眼睛更快地掃描。


舊的回應

這種簡單的非編程方式是:

  1. 將文本粘貼到MS Word中

  2. 然后在那里運行查找和替換(CTRL + F)(在“更多>>”下左下角的自定義格式更改,然后“格式化”到您需要的定制) - 然后將完美地完成所有更改。 。

  3. 然后而不是在Excel中進行PASTE SPECIAL(通過主頁選項卡 - >粘貼 - >選擇性粘貼 - >粘貼為HTML(以便保留格式)(這可能並且過於內存密集且對任何事情都太慢)以上1000行)

最好簡單地從文檔“另存為”將文檔轉換為RTF文件,然后通過簡單的“打開文件”將該文件重新導入Excel。

Excel有一個非常好的“重復模式細胞結構”識別,但當然,這種解決方法可能無法在每次復制所需的細胞分裂時完美地工作,但它應該在大多數時間保持細胞順序。

這么簡單的方法就是這么做,直到微軟停止限制一個選項,在一個單元格中“突出顯示/加粗”一個找到結果文本,而不是總是粗加工整個單元格。

問候馬可

要使搜索項與案例無關,您可以使用:

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

@pnuts 的代碼有個小bug... 修復版:

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.Value2, SearchText)
  TestPos = 0
  Do While StartPos > TestPos
    With cl.Characters(StartPos, TotalLen).Font
      .FontStyle = "Bold"
      .ColorIndex = 3
    End With
    EndPos = StartPos + TotalLen
    TestPos = EndPos + 1
    StartPos = InStr(TestPos, cl.Value2, SearchText)
  Loop
Next cl
End If
End Sub

實際上問題在於這條線TestPos = EndPos + 1 - 以前的TestPos = TestPos + EndPos

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM