我有一组描述,其中包含排列成一列的 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/