Excel - 在工作表中搜索包含特定文本的单元格,并用特定值替换文本的脚本

Excel - 在工作表中搜索包含特定文本的单元格,并用特定值替换文本的脚本

我想根据原始单元格中的数据将包含数据的单元格拆分为其他单元格。原始单元格中的数据如下所示(所有内容都在一个单元格中):

Field95-4,Field97-4,Field98-0,Field100-2,Field103-0,Field105-3,Field107-4,Field109-4,Field110-2,Field111-0,Field112-0,Field113-192,Field114-87,Field115-0,Field116-0,Field117-60

应该使用“,”作为分隔符进行拆分。我发现我可以使用脚本来做到这一点:

Private Sub CommandButton1_Click()
Dim X As Variant
X = Split(Range("A1").Value, ",")
Range("A1").Resize(UBound(X) - LBound(X) + 1).Value = Application.Transpose(X)
End Sub

那么结果就是这样的:

Field95-4
Field97-4
Field98-0
Field100-2
Field103-0
Field105-3
Field107-4
Field109-4
Field110-2
Field111-0
Field112-0
Field113-192
Field114-87
Field115-0
Field116-0
Field117-60

每个值都是一个单独的标记,包含由连字符分隔的两部分:原始单元格内容及其替换值。脚本应查找包含标记第一部分(即“fieldnumber”部分)的单元格。

例如,有一个单元格包含文本“Field95”,还有一个单元格包含文本“Field97”等。然后我想用第二部分替换标记的第一部分。因此对于“Field95-4”,应该找到一个内容为“Field95”的单元格并将其替换为文本“4”。内容为“Field97”的单元格应该替换为“4”。等等。

这是我上传的 excel 文件,您可以看到我的问题是什么。它包含数据。 关联

我知道要求太高,但是我们已经尝试了很多次,但还是没能让它发挥作用。

我期待您的答复。提前谢谢您!

答案1

假设您的值在一个范围内,并且您的搜索和替换范围不包括该范围,类似这样的方法可能会有效(调整范围,在数据副本上试用)-

Sub test()
Dim X As Variant
X = Split(Range("A2").Value, ",")
Range("A2").Resize(UBound(X) - LBound(X) + 1).Value = Application.Transpose(X)
End Sub

Sub test2()
Application.ScreenUpdating = False
Dim strReplace As String
Dim strSearch As String
Dim i As Integer
Dim j As Integer

'Loop through cells
For Each c In Range("A2:A17")
    'Select non-blanks
    If c.Value <> "" Then
        On Error Resume Next
        'Get length of cell
        j = Len(c)
        'Find first delimiter and store position
        i = Application.WorksheetFunction.Search("-", c.Value)
        'Get strings!
        strSearch = Left(c, i - 1)
        strReplace = Right(c, j - i)
        'Find and Replace
        Range("c2:c121").Cells.Replace What:=strSearch, Replacement:=strReplace, LookAt:=xlWhole, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    End If
 Next c

Application.ScreenUpdating = True
End Sub

相关内容