1 搜尋字串:

1 搜尋字串:

我有一個很大的用戶群組列表及其各自的用戶名。現在,我想進一步過濾它們。每個使用者的使用者群組都位於一個單元中(使用者名稱 - 使用者群組),因此這表示單一單元中可能有 10-15 個使用者群組。我只想要由“WTS”組成的行,然後將由“WTS”組成的用戶組行放入新單元格中。

我該怎麼做呢?

範例資料:

使用者群組 1 WTS_A、BTS_B、WTS_C、

我想要 WTS_A 和 WTS_C。

答案1

根據我對你的問題的理解,我建議一個兩步驟解決方案。

步驟1- 使用 Excel 中的文字分列功能,將單列文字轉換為多列。使用空格和逗號作為分隔符號。

第2步- 使用自訂 VBA 函數僅將所需儲存格連接到以逗號分隔的單一儲存格。

完成「文字到列」程序後,在工作表上按 ALT + F11 開啟 VBA 編輯器。從插入選單插入模組。將建立 Module1 並且其程式碼編輯器將會開啟。如果沒有,請雙擊左側窗格中的 Module1 以開啟其程式碼編輯器。

將以下程式碼貼到相同的內容中。

Public Function TXTJOIN(argument1 As Range)      'Accept input range
   result = ""
   colcounter = argument1.Columns.Count
   rowcounter = argument1.Rows.Count
   If rowcounter > 1 Then
        TXTJOIN = CVErr(xlErrValue)  'If row counter > 1 return #VALUE! Error
        Exit Function
   End If

   If colcounter > 255 Then
        TXTJOIN = CVErr(xlErrValue)  'If col counter > 255 return #VALUE! Error
        Exit Function
   End If


        For Each element In argument1
            If Left(element, 3) = "WTS" And Len(element) > 3 Then
                result = result & element & ","
            End If
        Next element

        If result = "" Then
            TXTJOIN = result
        Else
            TXTJOIN = Left(result, Len(result) - 1)
        End If
End Function

這將建立一個自訂 TXTJOIN 函數來檢查起始字串是否為「WTS」並連接所有由逗號分隔的此類列

儲存並退出 VBA 編輯器。返回工作表,現在轉到最右列並輸入此函數,指定適用的列範圍。沿著適用行的長度複製或向下拖曳它。您應該在相應的單元格中獲得預期的字串。僅複製其他位置的值並刪除其餘列以清理工作表。

您將獲得#VALUE!在類似情況下此函數會出錯。

  • 您將多維數組傳遞給它,例如 A1:D12

  • 您向其傳遞超過 255 個列範圍。

  • 您將多行數組傳遞給它,例如 A1:A12

讓我知道這是否適合您。

限制 - 假設使用者 ID 以空格或逗號分隔。如果兩者在一起且沒有逗號或空格,則此函數將無法單獨識別兩者。

在此輸入影像描述

答案2

您有兩個任務:搜尋有效(有趣)的數據,然後對其進行格式化。

1 搜尋字串:

可以使用「尋找」或「搜尋」功能來搜尋 WTS 等字串。當找到字串時,它們都會向您顯示一個數值,如下所示:FIND("WTS";A1) 或 SEARCH("WTS";A1)

對第一行執行此操作。選擇包含公式副本的儲存格,然後為所有資料行選擇其下方的儲存格並貼上。公式將自動更新為 FIND("WTS";B1)...FIND("WTS";C1)...

我建議此時手動過濾以隱藏出現錯誤的行:#VALUE!

只需刪除那些不提供結果的行即可。

2 拆分用戶群組資料:

當儲存格中有多個由字串(例如破折號“-”)分隔的項目時,請選擇儲存格並使用資料 -> 文字到列 -> 分隔符號 -> 新增分隔符號 - 選擇其他並輸入破折號。

這將獲取您的資料並將其放在多個單元格中,例如 Usergroup1 Usergroup2 Usergroup3 ...

3 額外提示:

如果您想對剛剛拆分的多個儲存格使用查找或搜尋功能,請將這些儲存格串聯成一個儲存格(基本上反轉分割過程),然後搜尋串聯的值。 A7 = 連接(A1;A2;A3) A8 = 尋找(「WTS」;A7)

相關內容