Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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/15.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 - Fatal编程技术网

Excel 查找某个标题并在其下复制一定数量的条目

Excel 查找某个标题并在其下复制一定数量的条目,excel,vba,Excel,Vba,我试图搜索某个标题(本例中的标题1),并将该标题下的一定数量的单元格复制到某个范围。标题本身的文本不应该被复制,而应该复制它下面的所有内容 下面的代码可以工作,但它复制了太多的行。当我对x=0到3使用时,它会复制“标题1”下的下10行,而不是仅复制3行。我找不到我的错误 Sub FindCopyPasteV2() With Worksheets("Sheet1").Range("A:FF") Dim FindEQ3 As Range Dim TestR

我试图搜索某个标题(本例中的标题1),并将该标题下的一定数量的单元格复制到某个范围。标题本身的文本不应该被复制,而应该复制它下面的所有内容

下面的代码可以工作,但它复制了太多的行。当我对x=0到3使用
时,它会复制“标题1”下的下10行,而不是仅复制3行。我找不到我的错误

Sub FindCopyPasteV2()

    With Worksheets("Sheet1").Range("A:FF")

        Dim FindEQ3 As Range
        Dim TestR As Range
        Dim x As Long

           Set FindEQ3 = .Find(What:="Header 1", LookAt:=xlWhole, MatchCase:=True, SearchFormat:=False)

              For x = 0 To 3

                 Set FindEQ3 = FindEQ3.Resize(FindEQ3.Rows.Count + x).Offset(1)
                 Set TestR = .Range("K" & 5 + x)

                 FindEQ3.Copy TestR

              Next x

    End With

End Sub

我认为你的问题在于你做了两次。循环的目的是确保复制3行,但实际上,
FindEQ3.Resize
已经这样做了

这段代码应该更接近你想要的。我主要是把线圈拿出来

Sub FindCopyPasteV2()

    With Worksheets("Sheet1").Range("A:FF")

        Dim FindEQ3 As Range
        Dim TestR As Range

        Const NUM_ROWS_COPY As Long = 3

        Set FindEQ3 = .Find(What:="Header 1", LookAt:=xlWhole, MatchCase:=True, SearchFormat:=False)

        Set FindEQ3 = FindEQ3.Resize(NUM_ROWS_COPY).Offset(1)
        Set TestR = .Range("K" & 5)

        FindEQ3.Copy TestR


    End With

End Sub

我不知道为什么要使用for循环来复制多个单元格。请查找下面的代码。这应该找到您要查找的标题,然后在其他位置的值之间“复制”

Option Explicit

Sub FindCopyPaste()

    Dim mRng As Range
    Dim fRng As Range
    Dim xOff As Long
    Dim mSheet As Worksheet

    'number of cells to "copy" across
    xOff = 3

    Set mSheet = Sheets("Sheet1")
    Set mRng = mSheet.Range("A:FF")
    Set fRng = mRng.Find(What:="Header 1", LookAt:=xlWhole, MatchCase:=True, SearchFormat:=False)


    If Not fRng Is Nothing Then
        'if it finds the header
        'now set values
        mSheet.Range("K5").Resize(xOff, 1).Value = mSheet.Range(mSheet.Cells(fRng.Row + 1, fRng.Column), mSheet.Cells(fRng.Row + xOff, fRng.Column)).Value
    Else
        MsgBox "Error! Could not find Header 1!"
    End If

End Sub

你好我不明白FOR循环的位置。你正在复印1行,然后是2行,然后是3行,然后是4行。。。。你想复制多少行?在找到“标题1”后,我试图使用循环将此标题下的一定数量的单元格复制到不同的范围。在上面的例子中,我试图复制标题1下的3行。谢谢你的建议。问题是,在下一步中,我想运行一个宏,读取找到的“Header 1”下的单元格,并在复制它们之前将它们与不同位置的其他值进行比较。为了准备这个宏的“高级版本”,我想使用一个循环,而不仅仅是复制单元格。谢谢你的建议。问题是,在下一步中,我想运行一个宏,读取找到的“Header 1”下的单元格,并在复制它们之前将它们与不同位置的其他值进行比较。在准备这个宏的“高级版本”时,我想使用循环,而不仅仅是复制单元格。