excel 将行从源工作表复制到同一工作簿上的目标工作表时出现问题

mnemlml8  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(110)

我必须创建一个宏,它可以从源工作表中获取数据(将具有相同的格式,但对于我运行的每个示例具有不同的行数),并且必须每天多次运行它,并将行从该工作表复制到目标工作表上的指定位置。
Source工作表中有一列是本练习的驱动因素。根据此列中的值,它将选择具有相同值的所有行,并将它们粘贴到目标工作表的给定位置。
例如,如果该值为1,则它将获取所有具有'1'的行,并将它们粘贴到目标工作表的单元格A23处。如果值为2,则开始粘贴单元格A44等处的行。
下面是大部分代码。我面临的问题是,它粘贴了给定块中的行,但这段代码考虑了源表的标题以及逻辑过滤的任何行。
因此,如果有5行的参数值为1,然后是另外4行的参数值为2,当它运行整个代码时,如果第一个块从单元格A23开始,这将粘贴从单元格A24开始的5行(不包括源工作表上的第一行)。对于参数value = 2,代码排除了前5行,并从行A50开始粘贴,因为它考虑了parm 1的标题和5行。我如何使它排除被过滤掉的行?
注意:我遇到的问题是行属性,但我无法让它过滤掉这些行…任何帮助都将不胜感激。

Sub Test()
    Dim cell As Range
    For Each cell In Sheets("SrcSheet").Range("E:E")
        If cell.Value = Sheets("DestSheet").Range("A20").Value Then
            cell.EntireRow.Copy Sheets("DestSheet").Range("A23").Rows(Cells.Row)
        ElseIf cell.Value = Sheets("DestSheet").Range("A41").Value Then
            cell.EntireRow.Copy Sheets("DestSheet").Range("A44").Rows(Cells.Row)
        End If
    Next
End Sub

我已经尝试了代码的多种变体,但得到相同的结果,包括使用复制目标等。但删除Rows属性仅复制每个参数的最后一行,即使它复制的位置正确。
x1c 0d1x-这是源工作表


-这是具有预期结果的目标工作表


-这是包含实际结果的目标表。正如我在上面的描述中所尝试的那样;代码跳过块1中的一行(对于头)和块2中的5行(对于头和actg行值1的行)

smtd7mpg

smtd7mpg1#

你试过FILTER公式吗?在DestSheet中,如果A1为“Block1”,则在A2中使用以下公式:

=FILTER(SrcSheet!A:E,SrcSheet!A:A=NUMBERVALUE(SUBSTITUTE(A1,"Block","")))

相关问题