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 由空格或逗号分隔。如果两个用户 ID 连在一起而没有逗号或空格,则此函数不会分别识别这两个用户 ID。

在此处输入图片描述

答案2

您有两个任务:搜索有效(有趣)的数据,然后对其进行格式化。

1 搜索字符串:

可以使用 Find 或 Search 函数来搜索字符串(例如 WTS)。当找到字符串时,它们都会显示一个数值,如下所示:FIND("WTS";A1) 或 SEARCH("WTS";A1)

对第一行执行此操作。选择包含公式副本的单元格,然后选择其下方的所有数据行的单元格并粘贴。公式将自动更新为 FIND("WTS";B1)...FIND("WTS";C1)...

我建议此时手动过滤以隐藏出现错误的行:#VALUE!

只需删除那些没有给出结果的行即可。

2 拆分用户组数据:

当单元格中有多个由字符串分隔的条目(例如破折号“-”)时,请选择您的单元格并使用数据->文本到列->分隔->添加分隔符 - 选择其他并输入破折号。

这会将您的数据放在多个单元格中,例如 Usergroup1 Usergroup2 Usergroup3 ...

3 额外提示:

如果您想对刚刚拆分的多个单元格使用查找或搜索功能,请将这些单元格连接成一个单元格(基本上是反转拆分),然后搜索连接的值。A7 = CONCATENATE(A1;A2;A3) A8 = FIND("WTS";A7)

相关内容