Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/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
Excel 如果单元格包含特定文本,则将该单元格从一张工作表复制到另一张工作表_Excel_Vba_Excel Formula - Fatal编程技术网

Excel 如果单元格包含特定文本,则将该单元格从一张工作表复制到另一张工作表

Excel 如果单元格包含特定文本,则将该单元格从一张工作表复制到另一张工作表,excel,vba,excel-formula,Excel,Vba,Excel Formula,我已经编译了控制盘数据,但需要一个VBA宏,该宏复制工作表1(名为:SheetSJ)中与部分文本匹配的任何单元格,然后将该单元格的数据复制到工作表2中。这是为了使数据更易于使用 在SheetJS中的每一行搜索包含文本“Product ID”的任何单元格,如果没有匹配项,则忽略 如果任何单元格(文本)匹配,复制该单元格,并将内容粘贴到第2页B列(从第2行开始) 在SheetJS中的每一行搜索包含文本“Bolt Pattern”的任何单元格,如果没有匹配项,则忽略 如果任何单元格(文本)匹配,复制该

我已经编译了控制盘数据,但需要一个VBA宏,该宏复制工作表1(名为:SheetSJ)中与部分文本匹配的任何单元格,然后将该单元格的数据复制到工作表2中。这是为了使数据更易于使用

  • 在SheetJS中的每一行搜索包含文本“Product ID”的任何单元格,如果没有匹配项,则忽略
  • 如果任何单元格(文本)匹配,复制该单元格,并将内容粘贴到第2页B列(从第2行开始)
  • 在SheetJS中的每一行搜索包含文本“Bolt Pattern”的任何单元格,如果没有匹配项,则忽略
  • 如果任何单元格(文本)匹配,复制该单元格,并将内容粘贴到第2页D列(从第2行开始)
  • 车轮数据

    如图所示,数据遍布每列中的所有位置,因此宏无法使用任何特定单元格作为参考。它只能匹配文本值(唯一)

    我设法在网上找到了一些示例,但它们复制了整行而不是单个单元格。

    这段代码怎么样

    我不能很好地使用英语,但如果你愿意,我会尽力帮助你

    Sub test()
    
        For Each cell In Sheets(1).Range("A1:ZZ200")
    
            matchrow = cell.Row
    
            If cell.Value Like "*Product ID*" Then  'You have to use "Like" Operator if you want to use wildcard something like *,?,#...
    
                Sheets(2).Range("B" & matchrow).Value = cell.Value
                'I recommend you to use ".value" Property when deal only text, not else(like cell color, border... etc), rather than "select-copy-paste". It could be slower while hoping both sheets
    
            ElseIf cell.Value Like "*Bolt Pattern*" Then
    
                Sheets(2).Range("D" & matchrow).Value = cell.Value
    
            End If
    
        Next
    
    End Sub
    
    这个代码怎么样

    我不能很好地使用英语,但如果你愿意,我会尽力帮助你

    Sub test()
    
        For Each cell In Sheets(1).Range("A1:ZZ200")
    
            matchrow = cell.Row
    
            If cell.Value Like "*Product ID*" Then  'You have to use "Like" Operator if you want to use wildcard something like *,?,#...
    
                Sheets(2).Range("B" & matchrow).Value = cell.Value
                'I recommend you to use ".value" Property when deal only text, not else(like cell color, border... etc), rather than "select-copy-paste". It could be slower while hoping both sheets
    
            ElseIf cell.Value Like "*Bolt Pattern*" Then
    
                Sheets(2).Range("D" & matchrow).Value = cell.Value
    
            End If
    
        Next
    
    End Sub
    

    我认为你根本不需要宏。在第2页B列第2行中,放置以下公式:

    =iferror(index(SheetJS!2:2,match("*Product ID*",SheetJS!2:2,0)),"")
    
    如果找不到匹配项,iferror部分只会将单元格保持为空(而不是给出难看的错误消息)。Match告诉我们产品id出现在第2行的多远处,索引进入多远处并获取值。 现在抓住单元格右下角的控制柄,并将其向下拖动,拖动的行数与第一张工作表中的行数相同。这将把表单JS中的所有产品ID放入B列

    类似地,从第2行第D列开始

    =iferror(索引(SheetJS!2:2,匹配(“*螺栓模式*”,SheetJS!2:2,0)),“”)

    把它拖下来

    我假设没有一行有超过一个产品id或螺栓模式,这似乎是正确的


    这种方法确实有一个轻微的缺点,即如果SheetJS在该行中没有该条目,它将在Sheet2列中留下一个空格。

    我认为您根本不需要宏。在第2页B列第2行中,放置以下公式:

    =iferror(index(SheetJS!2:2,match("*Product ID*",SheetJS!2:2,0)),"")
    
    如果找不到匹配项,iferror部分只会将单元格保持为空(而不是给出难看的错误消息)。Match告诉我们产品id出现在第2行的多远处,索引进入多远处并获取值。 现在抓住单元格右下角的控制柄,并将其向下拖动,拖动的行数与第一张工作表中的行数相同。这将把表单JS中的所有产品ID放入B列

    类似地,从第2行第D列开始

    =iferror(索引(SheetJS!2:2,匹配(“*螺栓模式*”,SheetJS!2:2,0)),“”)

    把它拖下来

    我假设没有一行有超过一个产品id或螺栓模式,这似乎是正确的


    这种方法确实有一个轻微的缺点,即如果SheetJS在该行中没有该条目,它会在Sheet2列中留下一个空格。

    那么问题是什么?“代码不起作用”并没有说太多。对于初学者来说,基本上只需要帮助设置和修复代码。如上所述,代码复制整行,我只需要复制和粘贴包含每行文本的单元格。这听起来更像是查询作业,而不是vba作业。否则,您将需要查看由@SiddharthRout链接的文章。另外,您的条件应该是InStr(Cell.Value,“Product ID”)>0那么问题是什么?“代码不起作用”并没有说太多。对于初学者来说,基本上只需要帮助设置和修复代码。如上所述,代码复制整行,我只需要复制和粘贴包含每行文本的单元格。这听起来更像是查询作业,而不是vba作业。否则,您将需要查看由@SiddharthRout链接的文章。另外,您的条件应该是InStr(Cell.Value,“Product ID”)>0我不认为应该将其放在表2中的匹配行中。就在下一排。所以你需要一个boltRow=2和productRow=2的外部,然后在你在表2中设置值之后在if内部加1。我看到的是,每行都有“产品ID”和“螺栓模式”。这就是为什么我不关心下一排的原因。因此,如果没有“产品ID”或“螺栓模式”任何一行,我的解决方案将是在第2页中空行,Jeremy您的答案是更好的解决方案,对吗。谢谢你的提示。坦白说,我不知道如何实现杰里米的提示;但是非常感谢你,萝茜。你的代码在我的电脑上运行!非常感谢。如果由于某些行没有产品ID或螺栓图案(正如@Roxy所指出的,情况似乎并非如此)而导致空白单元格,则可以通过选择列并遵循以下说明来删除这些单元格:我不认为要将其放在第2页的matchRow中。就在下一排。所以你需要一个boltRow=2和productRow=2的外部,然后在你在表2中设置值之后在if内部加1。我看到的是,每行都有“产品ID”和“螺栓模式”。这就是为什么我不关心下一排的原因。因此,如果没有“产品ID”或“螺栓模式”任何一行,我的解决方案将是在第2页中空行,Jeremy您的答案是更好的解决方案,对吗。谢谢你的提示。坦白说,我不知道如何实现杰里米的提示;但是非常感谢你,萝茜。你的代码在我的电脑上运行!非常感谢。如果由于某些行没有产品ID或螺栓图案(正如@Roxy所指出的,情况似乎并非如此)而导致空白单元格,则可以通过选择列并按照以下说明删除它们: