Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如果单元格包含某些文本,请复制部分文本并移动到新工作表_Vba_Excel - Fatal编程技术网

Vba 如果单元格包含某些文本,请复制部分文本并移动到新工作表

Vba 如果单元格包含某些文本,请复制部分文本并移动到新工作表,vba,excel,Vba,Excel,我试图使用VBA来检测包含单词HELLO的单元格,然后: 将第7到第10个字符复制到第一行的新工作表中 然后将倒数第12个字符复制到新工作表的第二列 对包含短语的所有单元格重复此操作 现在我无法获取代码来复制包含短语的第一个单元格 这是当前代码: Sub test() Dim LR As Long, i As Long With Sheets("Sheet1") LR = .Range("A" & Rows.Count).End(xlUp).Row For i = 1 To LR

我试图使用VBA来检测包含单词HELLO的单元格,然后:

将第7到第10个字符复制到第一行的新工作表中

然后将倒数第12个字符复制到新工作表的第二列

对包含短语的所有单元格重复此操作

现在我无法获取代码来复制包含短语的第一个单元格

这是当前代码:

Sub test()
Dim LR As Long, i As Long
With Sheets("Sheet1")
LR = .Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To LR
    If .Range("A" & i) Like "*HELLO*" Then
    .Copy Mid(Range("A" & i), 2, 2)

Next i
End Sub

与其复制,不如将部分字符串值赋给第二张工作表中的下一个单元格。我还在if语句中添加了UCASE,以防HELLO没有大写。然后添加了一个If来检查字符串是否至少有12个字符长,然后返回最后12个字符

Sub test()
Dim LR As Long, i2 As Long


LR = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
i2 = 1

For i = 1 To LR
    If UCase(Sheets(1).Range("A" & i).Value) Like "*HELLO*" Then
        Sheets(2).Range("A" & i2).Value = Mid(Sheets(1).Range("A" & i).Value, 7, 3)
        If Len(Sheets(1).Range("A" & i).Value) > 11 Then
            Sheets(2).Range("B" & i2).Value = Mid(Sheets(1).Range("A" & i).Value,13, Len(Sheets(1).Range("A" & i).Value) - 12)
        End If
        i2 = i2 + 1
    End If
Next i

End Sub

你可能无法复制它,你可能需要把它放在另一个单元格位置,比如

Sub Button1_Click()

    Dim LR As Long, i As Long
    With Sheets("Sheet1")
        LR = .Range("A" & Rows.Count).End(xlUp).Row
        For i = 1 To LR
            If .Range("A" & i) Like "*HELLO*" Then
                Cells(Rows.Count, "C").End(xlUp).Offset(1, 0) = Mid(Range("A" & i), 2, 2)
            End If
        Next i
    End With
End Sub
编辑:
啊,其他人也有同样的想法。

你能提供一些显示之前和之后的示例数据吗?你是否看到你缺少一个
结尾if
和一个
结尾with
…结果证明这不是问题所在。链接到实际测试文档:感谢你们花时间帮助我D当我尝试上面的代码时,我得到一个错误:这里没有定义子或函数,是指向最终结果的链接:指向实际测试文档的链接:更新的代码。我无意中引用了Length()作为函数,而不是正确的Len()函数。还更新了功能,以获得第12个字符之后的所有内容,就像你想要的一样。太棒了!很好@怀亚特把它放在另一个牢房里是什么意思?对不起,我是新手!链接到实际测试文档: