簡體   English   中英

如何在excel中使用一列作為另一列中的搜索參數,以僅輸出某些字符串

[英]How to use one column in excel as a search parameter in another column to output only certain strings

這個問題源於我的另一篇文章。 (請參閱excel中的列搜索特定字符串,其中字符串在每個單元格中是隨機的

工作簿示例

使用上面的圖像作為參考,我試圖使用列E作為“查找值”搜索列B(實際上超過1000行)。 最終目標是“僅”顯示在C列中顯示的名稱。技巧是所有隨機生成的字符包含名稱。 以下是我希望數據表的樣子。 公式或模塊應該工作,但vlookup和其他查找功能我無法工作。

在此輸入圖像描述

對於工作表函數方法,您可以輸入C3並填寫此公式:

=LOOKUP(8^5,SEARCH(E$3:E$7,B3),E$3:E$7)

選擇常數8 ^ 5 = 32768大於最大可能的字符串長度,以便LOOKUP返回最后一個匹配值。 如果沒有找到字符串,則公式返回#N / A.

另一種可能性,可能更容易理解,然后最初的assylias發布,但也可能是更多的時間消費(雖然有1000行,我認為它不會很重要)是下面。

這要求您將E列中的范圍命名為myNames(或任何您想要的名稱,只需更新代碼 - 或者,您只需編寫Range(“E1:E6”))。 此外,如果您從列B移動隨機值,也要在代碼中更新它。

Sub findString()

Dim celString As Range, rngString As Range, celSearch As Range, rngSearch As Range
Dim wks As Worksheet

Set wks = Sheets("Sheet1") 'change sheet reference to whatever your sheet name is

Set rngString = wks.Range("myNames")
Set rngSearch = Intersect(wks.UsedRange, wks.Range("B1").EntireColumn)

For Each celString In rngString
    For Each celSearch In rngSearch
        If InStr(1, celSearch.Text, celString.Value) > 0 Then
            celSearch.Offset(, 1) = celString.Value
        End If
    Next
Next

End Sub

既然,我也在處理你的原始問題,我建議通過Siddharth的答案來計算,然后運行這個,或上面的assylias代碼來獲取列旁邊的名字。 您可以在工作表上放置一個按鈕,或者只使用“宏”對話框來運行宏。

暫無
暫無

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

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