在文本中搜索關鍵字

在源文本中搜索關鍵字是處理數據時最常見的任務之一。 讓我們使用以下示例以多種方式查看其解決方案:

在文本中搜索關鍵字

假設你和我有一個關鍵字列表——汽車品牌的名稱——和一張包含各種備件的大表,其中描述有時可以同時包含一個或多個這樣的品牌,如果備件適合多個品牌的話汽車品牌。 我們的任務是通過給定的分隔符(例如,逗號)在相鄰單元格中查找並顯示所有檢測到的關鍵字。

方法 1. 電源查詢

當然,首先我們使用鍵盤快捷鍵將表格變為動態(“智能”) 按Ctrl+T 或命令 主頁 – 格式為表格 (首頁——表格格式),給他們起名字(例如 郵票и 備件) 並通過在選項卡上選擇將一個一個加載到 Power Query 編輯器中 數據 – 來自表/範圍 (數據——來自表/範圍). 如果您有舊版本的 Excel 2010-2013,其中 Power Query 作為單獨的加載項安裝,則所需的按鈕將位於選項卡上 電源查詢. 如果您有全新版本的 Excel 365,則按鈕 從表/範圍 現在打電話給那裡 有葉子 (來自工作表).

在 Power Query 中加載每個表後,我們使用命令返回到 Excel Home — 關閉並加載 — 關閉並加載到... — 僅創建連接 (主頁 — 關閉並加載 — 關閉並加載至…… — 僅創建連接).

現在讓我們創建一個重複的請求 備件通過右鍵單擊它並選擇 重複請求 (重複查詢),然後將生成的複制請求重命名為 結果 我們將繼續與他合作。

動作邏輯如下:

  1. 在高級選項卡上 添加列 選擇一個團隊 自定義列 (添加列 - 自定義列) 並輸入公式 = 品牌. 點擊後 OK 我們將得到一個新列,其中每個單元格中都會有一個嵌套表格,其中包含我們的關鍵字列表 – 汽車製造商品牌:

    在文本中搜索關鍵字

  2. 使用添加列標題中的雙箭頭按鈕展開所有嵌套表格。 同時,帶有備件描述的行將乘以品牌數的倍數,我們將得到所有可能的“備件-品牌”對組合:

    在文本中搜索關鍵字

  3. 在高級選項卡上 添加列 選擇一個團隊 條件列 (條件欄) 並設置檢查源文本(部分描述)中關鍵字(品牌)出現的條件:

    在文本中搜索關鍵字

  4. 要使搜索不區分大小寫,請在公式欄中手動添加第三個參數 比較.OrdinalIgnoreCase 發生檢查功能 文本.包含 (如果公式欄不可見,則可以在選項卡上啟用它 評論):

    在文本中搜索關鍵字

  5. 我們過濾結果表,只留下最後一列的,即匹配並刪除不需要的列 發生次數.
  6. 使用命令對相同的描述進行分組 通過...分組 選項卡 轉型 (變換——分組). 作為聚合操作,選擇 所有線路 (所有行). 在輸出中,我們得到一個包含表格的列,其中包含每個備件的所有詳細信息,包括我們需要的汽車製造商的品牌:

    在文本中搜索關鍵字

  7. 要提取每個部分的成績,請在選項卡上添加另一個計算列 添加列 - 自定義列 (添加列 - 自定義列) 並使用由表格組成的公式(它們位於我們的列中 更多資訊) 和提取列的名稱:

    在文本中搜索關鍵字

  8. 我們單擊結果列標題中帶有雙箭頭的按鈕,然後選擇命令 提取值 (提取值)使用您想要的任何分隔符輸出郵票:

    在文本中搜索關鍵字

  9. 刪除不需要的列 更多資訊.
  10. 要將從中消失的部分添加到結果表中,在描述中找不到品牌,我們執行合併查詢的過程 結果 與原始請求 備件 按鍵 結合 選項卡 首頁 (主頁 — 合併查詢). 連接類型 - 外連接權 (右外連接):

    在文本中搜索關鍵字

  11. 剩下的就是刪除多餘的列並重命名 - 移動剩餘的 - 我們的任務就解決了:

    在文本中搜索關鍵字

方法 2. 公式

如果您有 Excel 2016 或更高版本,那麼我們的問題可以使用新功能以非常緊湊和優雅的方式解決 結合 (文本連接):

在文本中搜索關鍵字

這個公式背後的邏輯很簡單:

  • 功能 搜索 (尋找) 在零件的當前描述中依次搜索每個品牌的出現,並返回符號的序列號(從找到品牌開始)或錯誤#VALUE! 如果品牌不在描述中。
  • 然後使用函數 IF (如果) и 歐芝卡 (錯誤) 我們將錯誤替換為空文本字符串“”,並將字符的序號替換為品牌名稱本身。
  • 使用函數通過給定的分隔符將空單元格和找到的品牌的結果數組組裝成單個字符串 結合 (文本連接).

性能比較和用於加速的 Power Query 查詢緩衝

對於性能測試,讓我們以包含 100 個備件描述的表格作為初始數據。 在上面我們得到以下結果:

  • 通過公式(方法 2)重新計算時間 - 9 秒。 當您第一次將公式複製到整個列和 2 秒時。 在重複(緩衝影響,可能)。
  • Power Query 查詢(方法 1)的更新時間要差得多——110 秒。

當然,這在很大程度上取決於特定 PC 的硬件以及安裝的 Office 版本和更新,但我認為總體情況是清楚的。

為了加速 Power Query 查詢,讓我們緩衝查找表 郵票,因為它在查詢執行的過程中不會改變,也沒有必要不斷地重新計算它(就像 Power Query 事實上所做的那樣)。 為此,我們使用函數 表.緩衝區 來自內置的 Power Query 語言 M。

為此,請打開一個查詢 結果 並在選項卡上 評論 按下按鈕 高級編輯器 (查看 - 高級編輯器). 在打開的窗口中,添加帶有新變量的行 馬克2,這將是我們 automaker 目錄的緩衝版本,稍後在以下查詢命令中使用這個新變量:

在文本中搜索關鍵字

經過這樣的細化,我們請求的更新速度提高了近 7 倍——最多 15 秒。 完全不同的事情🙂

  • Power Query 中的模糊文本搜索
  • 使用公式進行批量文本替換
  • 使用 List.Accumulate 函數在 Power Query 中進行批量文本替換

發表評論