search - Excel VBA - 查找一组字符并设置为字符串

标签 search excel find vba

我有一组描述,其中包含排列成一列的 ID 号。例如:

A栏

这是一个 ID 号 ID12345 的描述。

这是一个包含 ID 号的描述 ID66666。

这是 ID99999 的描述,其中包含 ID 号。

ID 号码始终采用“IDXXXXX”格式我想以某种方式修剪每个单元格中的所有文本并只留下那个 ID 号码。

我的想法:
这可以通过找到像“ID?????”这样的字符串来完成并将其设置为变量,然后用该变量替换单元格的内容?或者通过删除单元格中的所有字符 - 除了“ID?????”

任何帮助将不胜感激,谢谢。

最佳答案

我为您编写的这段代码将遍历 A 列中的所有项目。它将每个单元格中的所有单词拆分为一个数组。如果单词长度为 7 或 8 个字符,那么它可能是 IDxxxxx .它将执行一些检查以查看它是否真的匹配 IDxxxxx句法。如果确实如此,它将仅用删除所有剩余文本的 ID 替换单元格的内容。

Sub ReplaceContentWithIDs()

    Dim ws As Worksheet
    Set ws = Sheets("Sheet1") ' or your sheet name
    Dim rng As Range
    Dim i&, lr&, j&
    Dim arr
    Dim str$

    lr = ws.Range("A" & Rows.Count).End(xlUp).Row
    ' starting from 1 - if you have headers change to 2
    For i = 1 To lr
        Set rng = ws.Range("A" & i)
        arr = Split(CStr(rng.Value), " ")
        For j = LBound(arr) To UBound(arr)
            str = arr(j)
            If (Len(str) = 7) Or (Len(str) = 8) Then
                If (StrComp(Left(str, 2), "ID", vbTextCompare) = 0) And _
                IsNumeric(Right(Left(str, 7), 5)) Then
                    ' found it
                    If Len(str) = 8 Then
                        rng.Value = Left(str, 7)
                    ElseIf Len(str) = 7 Then
                        rng.Value = str
                    End If
                End If
            End If
        Next j
        Set rng = Nothing
    Next i

End Sub

关于search - Excel VBA - 查找一组字符并设置为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16684945/

相关文章:

java - 在 Java 中导出为 CSV/Excel

linux - FInd patternf 用于多个文件模式

java - 有没有一种方法可以搜索搜索结果?

javascript - 如何使用 JavaScript 创建包含多个可选参数的搜索?

search - 使用通配符和词干的组合

c++ - 用于快速插入和删除的堆 O(log n)

vba - 从字符串 VBA 或函数的开头删除零

excel - 除非手动输入,否则使用串联形成的公式不会计算/激活

mysql - 查找行并将其插入到另一个表mysql触发器

c# - 在 C# 中模仿 findstr 功能的最佳方法是什么?