Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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,我正在尝试将满足特定条件的单元格复制到新工作表中 例如,如果工作表(1)上的单元格H15包含请求的值(1234),则仅将单元格A15、B15、C15、F15和包含文本字符串的单元格复制到新工作表上的新行 我希望能够扫描一个范围,例如M1:X155,并为每个找到的值(1234)将上述单元格复制到一个新的工作表。根据注释,我已修改代码以仅复制指定的范围,两个工作表都应存在,代码不会为您创建第二个工作表: Sub Test() Dim Cell As Range With Sheets("Sheet

我正在尝试将满足特定条件的单元格复制到新工作表中

例如,如果工作表(1)上的单元格H15包含请求的值(1234),则仅将单元格A15、B15、C15、F15和包含文本字符串的单元格复制到新工作表上的新行


我希望能够扫描一个范围,例如M1:X155,并为每个找到的值(1234)将上述单元格复制到一个新的工作表。

根据注释,我已修改代码以仅复制指定的范围,两个工作表都应存在,代码不会为您创建第二个工作表:

Sub Test()
Dim Cell As Range

With Sheets("Sheet1") 'Sheet with data to check for value
    ' loop column H untill last cell with value (not entire column)
    For Each Cell In .Range("H1:H" & .Cells(.Rows.Count, "H").End(xlUp).Row)
        If Cell.Value = "1234" Then
            NextFreeRow = Sheets("Sheet2").Cells(Sheets("Sheet2").Rows.Count, "A").End(xlUp).Row + 1
             'get the next empty row to paste data to
            .Range("A" & Cell.Row & ",B" & Cell.Row & ",C" & Cell.Row & ",F" & Cell.Row).Copy Destination:=Sheets("Sheet2").Range("A" & NextFreeRow)
        End If
    Next Cell
End With
End Sub
更新:

下面的代码将在H列的每个单元格内搜索文本“1234”,如果找到,它将复制所需的范围

Sub Test()
Dim Cell As Range

With Sheets("Sheet1") 'Sheet with data to check for value
    ' loop column H untill last cell with value (not entire column)
    For Each Cell In .Range("H1:H" & .Cells(.Rows.Count, "H").End(xlUp).Row)
        pos = InStr(Cell.Value, "1234")
        If pos > 0 Then
            NextFreeRow = Sheets("Sheet2").Cells(Sheets("Sheet2").Rows.Count, "A").End(xlUp).Row + 1
             'get the next empty row to paste data to
            .Range("A" & Cell.Row & ",B" & Cell.Row & ",C" & Cell.Row & ",F" & Cell.Row & "," & Cell.Address).Copy Destination:=Sheets("Sheet2").Range("A" & NextFreeRow)
        End If
    Next Cell
End With
End Sub

嗨,汤姆,欢迎来到苏。您的问题不符合我们的标准,请阅读如何改进您的问题。一些帮助你开始得到答案的建议:1。您希望在M1:X155 2范围内循环。您希望使用If条件检查该值是否等于1234。3.您希望使用另一个计数器跟踪要粘贴到第二张图纸中的哪一行。4.当找到匹配项时,您希望将第二张工作表上的单元格值设置为第一张工作表上的单元格值。如果要这样做,我会:1。2.3.复制我需要的值与此相同:但不是整行,而是该行中的特定单元格row@TomRundle然后将行选择更改为范围选择谢谢您的有用回复。我试图查找的值“1234”隐藏在单元格的文本中。例如,“2018年书皮-UPC编号1234”我如何获得公式来单独定位该文本字符串?@TomRundle我已经更新了我的答案,以检查文本1234是否在H列的单元格内,如果是,它会将您的范围复制到另一页。这太完美了!非常感谢你!如果我能变得贪婪,有没有办法搜索一个范围而不是一列?说范围M1:X155。@Tom,是的,用
.range(“M1:X155”)
替换
.range(“H1:H”)和.Cells(.Rows.Count,“H”).End(xlUp.Row)
?谢谢。这个代码也可以用来复制包含文本字符串的单元格吗?(复制单元格A、B、C、F和包含文本字符串的单元格)