Note: The other languages of the website are Google-translated. Back to English

如何基於其他文本突出顯示單元格中的特定文本?

在Excel中,我們可以很容易地基於特定文本突出顯示單元格,但是在這裡,我想突出顯示單元格中的特定文本以使其突出而不是整個單元格。 這對於我們大多數人來說可能是一個麻煩。 在本文中,我將討論在Excel中解決此工作的一些技巧。


使用VBA代碼突出顯示多個單元格中的一個或多個特定文本

例如,我有一系列文本字符串,現在,我要突出顯示特定文本“天空在這些單元格中獲取“”,結果如下所示:

要僅突出顯示單元格中的部分文本,以下VBA代碼可以為您提供幫助。

1. 選擇要突出顯示特定文本的單元格,然後按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。

2。 點擊 插入 > 模塊,然後將以下代碼粘貼到 模塊 窗口。

VBA代碼:突出顯示單元格中的一部分文本:

Sub HighlightStrings()
'Updateby Extendoffice
Application.ScreenUpdating = False
Dim Rng As Range
Dim cFnd As String
Dim xTmp As String
Dim x As Long
Dim m As Long
Dim y As Long
cFnd = InputBox("Enter the text string to highlight")
y = Len(cFnd)
For Each Rng In Selection
  With Rng
    m = UBound(Split(Rng.Value, cFnd))
    If m > 0 Then
      xTmp = ""
      For x = 0 To m - 1
        xTmp = xTmp & Split(Rng.Value, cFnd)(x)
        .Characters(Start:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
        xTmp = xTmp & cFnd
      Next
    End If
  End With
Next Rng
Application.ScreenUpdating = True
End Sub

3。 然後按 F5 鍵來運行此代碼,然後會彈出一個提示框,提醒您輸入僅要突出顯示的文本,請參見屏幕截圖:

4。 然後點擊 OK 按鈕,您指定的所有文本僅在單元格中突出顯示,請參見屏幕截圖:

保養竅門:如果您需要突出顯示文本字符串中的多個關鍵字,請應用以下代碼:
VBA代碼:從文本字符串中突出顯示多個關鍵字:
Sub HighlightStrings()
'Updateby Extendoffice
Application.ScreenUpdating = False
Dim Rng As Range
Dim cFnd As String
Dim xTmp As String
Dim x As Long
Dim m As Long
Dim y As Long
Dim xFNum As Integer
Dim xArrFnd As Variant
Dim xStr As String
cFnd = InputBox("Please enter the text, separate them by comma:")
If Len(cFnd) < 1 Then Exit Sub
xArrFnd = Split(cFnd, ",")
For Each Rng In Selection
With Rng
For xFNum = 0 To UBound(xArrFnd)
xStr = xArrFnd(xFNum)
y = Len(xStr)
m = UBound(Split(Rng.Value, xStr))
If m > 0 Then
xTmp = ""
For x = 0 To m - 1
xTmp = xTmp & Split(Rng.Value, xStr)(x)
.Characters(Start:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
xTmp = xTmp & xStr
Next
End If
Next xFNum
End With
Next Rng
Application.ScreenUpdating = True
End Sub

然後,在彈出的框中,輸入您要突出顯示的關鍵字(用逗號分隔單詞),請參見屏幕截圖:

然後,單擊 OK 按鈕,指定的單詞立即突出顯示,請參見屏幕截圖:

備註:以上代碼區分大小寫。


以驚人的功能突出顯示多個單元格中的一個或多個特定文本

如果您不熟悉Excel中的代碼,在這裡,我將介紹一個簡單的工具- Excel的Kutools,其 標記關鍵字 功能,您可以一次突出顯示單元格中的特定一個或多個關鍵字。

備註:應用這些 標記關鍵字 功能,首先,您應該下載 Excel的Kutools,然後快速輕鬆地應用這些功能。

安裝後 Excel的Kutools,請執行以下操作:

1。 點擊 庫工具 > 文本 > 標記關鍵字,請參見屏幕截圖:

2。 在 標記關鍵字 對話框,請執行以下操作:

  • 從中選擇要使用的數據范圍 範圍 文本框;
  • 選擇包含要突出顯示的關鍵字的單元格,也可以將關鍵字手動輸入(以逗號分隔)到 關鍵詞 文本框
  • 最後,您應指定一種字體顏色以通過選中來突出顯示文本 標記關鍵字顏色 選項。 (要為整個包含關鍵字的單元格上色,請選擇 標記單元格內容顏色 選項)

3。 然後,點擊 Ok 按鈕,所有指定的文本均已突出顯示,如下圖所示:

備註:此功能不區分大小寫,如果要突出顯示區分大小寫的文本,請檢查 區分大小寫標記關鍵字 對話框。


使用VBA代碼根據其他文本突出顯示單元格中的特定文本

這是另一種情況,我有兩列,第一列包含文本字符串,第二列是特定文本,現在,我需要根據第二列中的特定文本分別突出顯示第一列中的相對文本行。

1。 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。

2。 點擊 插入 > 模塊,然後將以下代碼粘貼到 模塊 窗口。

VBA代碼:根據其他文本突出顯示單元格中的部分文本:

Sub highlight()
'Updateby Extendoffice
    Dim xStr As String
    Dim xRg As Range
    Dim xTxt As String
    Dim xCell As Range
    Dim xChar As String
    Dim I As Long
    Dim J As Long
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
LInput:
    Set xRg = Application.InputBox("please select the data range:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    If xRg.Areas.Count > 1 Then
        MsgBox "not support multiple columns"
        GoTo LInput
    End If
    If xRg.Columns.Count <> 2 Then
        MsgBox "the selected range can only contain two columns "
        GoTo LInput
    End If
    For I = 0 To xRg.Rows.Count - 1
        xStr = xRg.Range("B1").Offset(I, 0).Value
        With xRg.Range("A1").Offset(I, 0)
            .Font.ColorIndex = 1
            For J = 1 To Len(.Text)
                If Mid(.Text, J, Len(xStr)) = xStr Then .Characters(J, Len(xStr)).Font.ColorIndex = 3
            Next
        End With
    Next I
End Sub

3。 粘貼代碼後,按 F5 要運行它,請彈出一個提示框,提醒您選擇包含文本字符串和要突出顯示並基於的特定文本的數據范圍,請參見屏幕截圖:

4。 然後點擊 OK 按鈕,基於第二列中的特定文本,第一列中的所有相應文本已被染成紅色,如以下屏幕截圖所示:


更多相關文章:

  • 在Excel中連接兩列時的粗體文本
  • 在Excel工作表中,將兩個單元格值與公式連接起來後,您可能會發現它不會在組合的公式單元格中加粗文本的一部分。 有時這可能很煩人,當在Excel中連接兩列時如何加粗零件文本?
  • 連接單元格列並在Excel中保留文本顏色
  • 眾所周知,將單元格列連接或組合為一列時,單元格格式(例如文本字體顏色,數字格式等)將丟失。 本文,我將介紹一些技巧,以將單元格列合併為一個,並在Excel中盡可能輕鬆地保持文本顏色。
  • 根據另一列中的值顯示特定的文本
  • 假設我有一個數字列表,現在,我想根據此列號在另一列中顯示一些特定的文本。 例如,如果單元格號在1-100之間,則我希望在相鄰的單元格中顯示文本“減少”,如果該數字在101-200之間,則顯示文本“穩定”,並且該數字大於200 ,顯示“ Increase”(增加)文本,如下圖所示。 要在Excel中解決此任務,本文中的以下公式可能會對您有所幫助。
  • 在Excel中用文本和數字求和的單元格
  • 例如,我有一個包含數字和文本字符串的值列表,現在,我只想對基於相同文本的數字求和,請看以下屏幕截圖。 通常,您不能直接使用文本字符串將列表中的值求和,在這裡,我將向您介紹一些公式來處理此任務。

最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (39)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
非常感謝您的提示和宏。 我無法想像沒有他們我會做什麼。
網站主持人對此評論進行了最小化
我在 excel 2016 中檢查了兩個給定的代碼,但沒有工作。
網站主持人對此評論進行了最小化
我用的是 Excel365。 第一個 VBA 不工作。 第二個無法突出顯示正確的關鍵字,即也不起作用
網站主持人對此評論進行了最小化
謝謝!!!
網站主持人對此評論進行了最小化
我收到一個錯誤,當我調試它時,它會突出顯示這部分 m = UBound(Split(Rng.Value, cFnd))
網站主持人對此評論進行了最小化
它對我很有用,謝謝你與世界分享這個。
網站主持人對此評論進行了最小化
任何人都可以幫我提供一個代碼來“將那些突出顯示的單詞複製到不同的列中”。
網站主持人對此評論進行了最小化
我怎樣才能讓這段代碼工作,但讓它以紅色以外的顏色突出顯示?
網站主持人對此評論進行了最小化
你好,
如果要用其他顏色突出顯示文本,只需在以下腳本中將顏色索引號 3 更改為其他顏色索引號:
.Characters(開始:=Len(xTmp) + 1, 長度:=y).Font.ColorIndex = 3

請嘗試一下。 謝謝!
網站主持人對此評論進行了最小化
你好,
使用相同的宏,我想用不同的顏色突出顯示其他一些文本:綠色,請幫助我
網站主持人對此評論進行了最小化
嗨,蘇庫瑪,
抱歉,無法解決您的問題。
如果其他人有解決方案,請在此處發表評論。
感謝您!
網站主持人對此評論進行了最小化
感謝您“使用 VBA 代碼突出顯示多個單元格中的特定文本”效果很好。 請您解釋一下:
第 18 行 xTmp = xTmp & Split(Rng.Value, cFnd)(x)
為什麼idoes“(x)”必須出現在它的位置? x 的值是否作為沒有名稱的命名參數傳遞給 Split 函數? 我真的很想了解這個概念。感謝您的幫助和此功能。 我學到了一些我不知道的東西。
網站主持人對此評論進行了最小化
嗨,我注意到這是區分大小寫的高升。 我在哪裡可以更改它會在 deired 單詞中突出顯示小寫和大寫
網站主持人對此評論進行了最小化
你好,洛斯特,

在上面的兩個代碼中,你要識別哪個代碼區分大小寫?
我們將為您修改代碼!
網站主持人對此評論進行了最小化
嗨,在以下情況下,我想問同樣的問題以突出顯示小寫和大寫:

“在所有文本字符串中查找並標記關鍵字 1、關鍵字 2 和關鍵字 3,即使一個字符串包含多個這些關鍵字(所有這些關鍵字都應在特定文本字符串中突出顯示)”
網站主持人對此評論進行了最小化
子高亮字符串()
Application.ScreenUpdating = False
昏暗範圍
將 cFnd 變暗為字符串
將 xTmp 調暗為字符串
暗淡 x 長
暗淡
昏暗的一樣長
將 xFNum 調暗為整數
將 xArrFnd 調暗為變體
將 xStr 調暗為字符串
cFnd = InputBox("請輸入文字,用逗號隔開:")
如果 Len(cFnd) < 1 則退出 Sub
xArrFnd = 拆分(cFnd,“,”)
對於選擇中的每個 Rng
與 Rng
對於 xFNum = 0 到 UBound(xArrFnd)
xStr = xArrFnd(xFNum)
y = Len(xStr)
m = UBound(拆分(Rng.Value,xStr))
如果 m > 0 那麼
xTmp = ""
對於 x = 0 到 m - 1
xTmp = xTmp & Split(Rng.Value, xStr)(x)
.Characters(開始:=Len(xTmp) + 1, 長度:=y).Font.ColorIndex = 3
xTmp = xTmp & xStr
下一頁
如果結束
下一個 xFNum
結束
下一環
Application.ScreenUpdating = True
END SUB
網站主持人對此評論進行了最小化
你好,馬亨德拉
如果您希望代碼不區分大小寫,請應用以下代碼:
Sub HighlightStrings()
'Updateby Extendoffice
Application.ScreenUpdating = False
Dim Rng As Range
Dim cFnd As String
Dim xTmp As String
Dim x As Long
Dim m As Long
Dim y As Long
Dim xFNum As Integer
Dim xArrFnd As Variant
Dim xStr As String
cFnd = InputBox("Please enter the text, separate them by comma:")
If Len(cFnd) < 1 Then Exit Sub
xArrFnd = Split(UCase(cFnd), ",")
For Each Rng In Selection
With Rng
For xFNum = 0 To UBound(xArrFnd)
xStr = xArrFnd(xFNum)
y = Len(xStr)
m = UBound(Split(UCase(Rng.Value), UCase(xStr)))
If m > 0 Then
xTmp = ""
For x = 0 To m - 1
xTmp = xTmp & Split(UCase(Rng.Value), UCase(xStr))(x)
.Characters(Start:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
xTmp = xTmp & xStr
Next
End If
Next xFNum
End With
Next Rng
Application.ScreenUpdating = True
End Sub


請試一試,希望對您有所幫助!
網站主持人對此評論進行了最小化
有沒有辦法在沒有提示框的情況下使用固定的關鍵字列表來製作第一個 VBA 代碼? 例如,當一個字符串包含多個這些關鍵字時(所有這些關鍵字都應在特定文本字符串中突出顯示),我總是想在所有文本字符串中查找並標記關鍵字 1、關鍵字 2 和關鍵字 3。 是否可以將關鍵字 1 和關鍵字 2 設為紅色,而第三個只是粗體?
網站主持人對此評論進行了最小化
你好,阿圖斯,

要突出顯示單元格中的多個關鍵字,以下 vba 代碼可以幫助您:(您應該在彈出的輸入框中用分號分隔單詞)

子高亮字符串()
Application.ScreenUpdating = False
昏暗範圍
將 cFnd 變暗為字符串
將 xTmp 調暗為字符串
暗淡 x 長
暗淡
昏暗的一樣長
將 xFNum 調暗為整數
將 xArrFnd 調暗為變體
將 xStr 調暗為字符串
cFnd = InputBox("請輸入文字,用分號隔開:")
如果 Len(cFnd) < 1 則退出 Sub
xArrFnd = 拆分(cFnd,“;”)
對於選擇中的每個 Rng
與 Rng
對於 xFNum = 0 到 UBound(xArrFnd)
xStr = xArrFnd(xFNum)
y = Len(xStr)
m = UBound(拆分(Rng.Value,xStr))
如果 m > 0 那麼
xTmp = ""
對於 x = 0 到 m - 1
xTmp = xTmp & Split(Rng.Value, xStr)(x)
.Characters(開始:=Len(xTmp) + 1, 長度:=y).Font.ColorIndex = 3
xTmp = xTmp & xStr
下一頁
如果結束
下一個 xFNum
結束
下一環
Application.ScreenUpdating = True
END SUB
網站主持人對此評論進行了最小化
你好天陽! 我發現如果運行代碼會出現錯誤 - 它無法指定冒號後面的單詞。 你有什麼改進的建議嗎? 非常感謝你!
網站主持人對此評論進行了最小化
你好,常春藤,
如果您想用冒號指定單詞,只需將分號符號更改為冒號,請應用以下代碼:

子高亮字符串()
Application.ScreenUpdating = False
昏暗範圍
將 cFnd 變暗為字符串
將 xTmp 調暗為字符串
暗淡 x 長
暗淡
昏暗的一樣長
將 xFNum 調暗為整數
將 xArrFnd 調暗為變體
將 xStr 調暗為字符串
cFnd = InputBox("請輸入文字,用冒號隔開:")
如果 Len(cFnd) < 1 則退出 Sub
xArrFnd = 拆分(cFnd,“:”)
對於選擇中的每個 Rng
與 Rng
對於 xFNum = 0 到 UBound(xArrFnd)
xStr = xArrFnd(xFNum)
y = Len(xStr)
m = UBound(拆分(Rng.Value,xStr))
如果 m > 0 那麼
xTmp = ""
對於 x = 0 到 m - 1
xTmp = xTmp & Split(Rng.Value, xStr)(x)
.Characters(開始:=Len(xTmp) + 1, 長度:=y).Font.ColorIndex = 3
xTmp = xTmp & xStr
下一頁
如果結束
下一個 xFNum
結束
下一環
Application.ScreenUpdating = True
END SUB
網站主持人對此評論進行了最小化
謝謝你的回复,天陽!

但它仍然沒有工作。
也許我的問題很混亂。 一個例子可能會更清楚。
例如,我的關鍵字之一是“保護”。 單元格中的文本可能顯示為“我們解決問題的方法:保護和 blablabla...”“:”和“保護”之間可能存在空格,因為文本的格式並不總是相同。 在這裡,上面的代碼無法突出顯示關鍵字“保護”。 那就是問題所在。

我已經嘗試了幾次,但都失敗了。 我也考慮過刪除單元格中的標點符號,但這會影響對文本的理解。 所以我問了這個問題。 希望你不要介意。

非常感謝您!

最誠摯的問候!
網站主持人對此評論進行了最小化
有沒有辦法刪除所有這些突出顯示的單詞?
網站主持人對此評論進行了最小化
嗨,艾斯,
要刪除基於另一列單元格的文本,下面的 vba 代碼可能會對您有所幫助,請嘗試一下。
子刪除Str()
將 xStr 調暗為字符串
將 xRg 調暗為範圍
將 xTxt 調暗為字符串
將 xCell 調暗為範圍
將 xChar 調暗為字符串
昏暗的我只要
昏暗J只要
在錯誤恢復下一頁
如果 ActiveWindow.RangeSelection.Count > 1 那麼
xTxt = ActiveWindow.RangeSelection.AddressLocal
其他
xTxt = ActiveSheet.UsedRange.AddressLocal
如果結束
輸入:
Set xRg = Application.InputBox("請選擇數據范圍:", "Kutools for Excel", xTxt, , , , , 8)
如果 xRg 什麼都不是,則退出 Sub
如果 xRg.Areas.Count > 1 那麼
MsgBox "不支持多列"
轉到 LInput
如果結束
如果 xRg.Columns.Count <> 2 那麼
MsgBox "所選範圍只能包含兩列"
轉到 LInput
如果結束
對於 i = 0 到 xRg.Rows.Count - 1
xStr = xRg.Range("B1").Offset(i, 0).Value
使用 xRg.Range("A1").Offset(i, 0)
.Font.ColorIndex = 1
對於 J = 1 到 Len(.Text)
如果 Mid(.Text, J, Len(xStr)) = xStr 則
.Characters(J, Len(xStr)).刪除
如果結束
下一頁
結束
接下來,我
END SUB
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
HI
我是您網站的常客。 你的網站對我很有用。 此代碼更改字體顏色。 我想在黃色背景中突出顯示特定的單詞(例如插入、空白)。 我想強調這一點。 不僅僅是字體顏色。 繼續偉大的工作!!! 非常感謝。
網站主持人對此評論進行了最小化
嗨,馬杜蘇達南,
可能沒有直接的方法來突出顯示 Excel 工作表中具有背景顏色的單元格中的部分文本。
如果你有其他好的方法,請在這裡評論。
網站主持人對此評論進行了最小化
我收到運行時錯誤“13”,運行腳本時鍵入不匹配。 有什麼建議麼?
網站主持人對此評論進行了最小化
我遇到過同樣的問題; 我發現我的一個列是公式,它正在查看它們,這是觸發錯誤 13 的原因。選擇了一個沒有公式的範圍,其中包含要突出顯示的文本並且它起作用了。
網站主持人對此評論進行了最小化
嗨,
誰能幫我解決以下問題

我在“G”列中的單元格包含從 Z 列到 AN 的文本,不強制 g 列包含從 Z 到 AN 的所有文本。

我在這裡的工作是突出顯示 G 列中的文本,如果它在 Z 列的任何一個中都不可用 - AN

例如:單元格 G1 包含(您好,先生,我做得很好)但“Z1”到“AN1”列中不存在文本“先生”

所以我需要突出顯示文本“先生”
網站主持人對此評論進行了最小化
嗨,任何人都可以幫助我。 我想在同一個句子中突出顯示單元格中的特定數字。 例如:“2 天休假掃描”在這句話中要突出顯示數字。
網站主持人對此評論進行了最小化
嗨,
請任何人幫助我。 我想在同一個句子中突出顯示特定的數字。 例如:“2 天休假掃描”只想在句子中突出顯示“2”。
網站主持人對此評論進行了最小化
這非常有用,非常感謝!
網站主持人對此評論進行了最小化
驚人的。 謝謝
網站主持人對此評論進行了最小化
哇! 謝謝!
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護