Vba 我如何复制&;是否将具有不同值的整行粘贴到不同单元格范围的新工作表?

Vba 我如何复制&;是否将具有不同值的整行粘贴到不同单元格范围的新工作表?,vba,excel,Vba,Excel,我知道在VBA中有很多关于从单元格值复制和粘贴的问题。然而,我似乎无法让它为我自己的项目工作。如果整行与H列中的不同存储区#(非增量)匹配,我想将其复制到一个新的工作表中(在下面的代码中为“Sheet1”),该工作表已经有一个模板布局,我可以在其中复制/粘贴值。在填写任何数据之前,每个工作表上的模板看起来都是一样的,只有前两个选项卡上有数据(“约会”和“发票”)。 我提出了下面的VBA,但这里有一个陷阱——它粘贴行的单元格(在下面的代码中,“A10”)根据存储更改。这是因为我正在从distinc

我知道在VBA中有很多关于从单元格值复制和粘贴的问题。然而,我似乎无法让它为我自己的项目工作。如果整行与H列中的不同存储区#(非增量)匹配,我想将其复制到一个新的工作表中(在下面的代码中为“Sheet1”),该工作表已经有一个模板布局,我可以在其中复制/粘贴值。在填写任何数据之前,每个工作表上的模板看起来都是一样的,只有前两个选项卡上有数据(“约会”和“发票”)。 我提出了下面的VBA,但这里有一个陷阱——它粘贴行的单元格(在下面的代码中,“A10”)根据存储更改。这是因为我正在从distinct Store#复制工作簿中第一张工作表(“约会”)的行,然后删除第二张工作表(“发票”)数据所在区域上方的空行。有些存储可能返回10行或根本不返回。这个箱子是商店#,目前是手工一个接一个地放进去的。它应该是一个数组吗? 无论如何,我希望能够自动复制/粘贴和循环每个商店到他们的工作表。也许我的想法是错误的,但是否有人能建议如何解决我的错误代码“找不到方法或数据成员”。并提供任何建议,使我的代码更好地用于循环,以便将过滤后的单元格复制到每张工作表的不同位置

对我的逐步过程的简单解释: 1.从“约会”表中筛选存储。
2.复制该存储区的所有行,并将其粘贴到一个新的工作表中,该工作表使用B3中名为“Sheet1”的模板
3.从“发票”表中筛选存储
4.复制该存储区的所有行,并粘贴到先前制作的名为“sheet”的表中,位于上述行下。(有些商店没有发票,因此此部分为空/空)。每个商店的“发票”粘贴目标单元格将不同,具体取决于他们从“约会”表中获得的行数(可以是A10或A25)
5.循环-下一家商店#,下一张(第2张)

试试这个:

Sub CopyToNewSheetInv()

Dim i As Range
Dim book As Workbook
Dim sheet1 As Worksheet
Dim sheet2 As Worksheet

Set book = Workbooks("SampleWorkbookName.xlsx")
Set sheet1 = book.Worksheets("AllInvoices")
Set sheet2 = book.Worksheets("Sheet1")
'iterate only thorugh those cells in H that have data, not all 1.04 million
For Each i In sheet1.Range("H1", sheet1.Range("H" & sheet1.Rows.Count).End(xlUp))
    Select Case i.Value
        Case 1243,"1243"
            sheet2.Rows(sheet2.Range("A10000").End(xlUp).Offset(1, 0).Row).Value = sheet1.Rows(i.Row).Value
        Case Else
    End Select
Next i
End Sub

非常感谢您纠正H:H错误。这将大大加快速度。相同的错误消息。突出显示以下行中的“行”:对于sheet1.Range(“H1”,sheet1.Range(“H”和sheet1.Rows.Count”).End(xlUp))****我需要编辑我的原始邮件,因为我意识到我可以使用相同的单元格进行粘贴。在粘贴后,删除“发票”数据上方的空白空间。呃…早该想到这一点的!谢谢Scott H。但现在它是一个未定义的子函数或函数错误。我设置错了什么?@MMBInTraining在哪一行出现了新错误?set book=Workbooks(“SampleWorkbookName”)-错误:9个下标超出范围(看起来是指A10000范围),谢谢大家!你帮了大忙。我很感激。标记您的答案。是否确实要将整行从一张工作表粘贴到下一张工作表,或仅粘贴包含该行数据的列?我认为后者是您想要的,在这种情况下,设置精确的列将有助于加快代码的速度。有30个预约和2张发票。我需要门店100的所有约会和发票数据(前两个选项卡)。商店#125可能有14次预约和10张发票。我在这个问题中没有包括的是,最终,我在“Sheet1”上使用了约会和发票的匹配公式。上面的问题只是问如何将数据放到“Sheet1”上,以便我可以与我的其他公式/脚本匹配。
Sub CopyToNewSheetInv()

Dim i As Range
Dim book As Workbook
Dim sheet1 As Worksheet
Dim sheet2 As Worksheet

Set book = Workbooks("SampleWorkbookName.xlsx")
Set sheet1 = book.Worksheets("AllInvoices")
Set sheet2 = book.Worksheets("Sheet1")
'iterate only thorugh those cells in H that have data, not all 1.04 million
For Each i In sheet1.Range("H1", sheet1.Range("H" & sheet1.Rows.Count).End(xlUp))
    Select Case i.Value
        Case 1243,"1243"
            sheet2.Rows(sheet2.Range("A10000").End(xlUp).Offset(1, 0).Row).Value = sheet1.Rows(i.Row).Value
        Case Else
    End Select
Next i
End Sub