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/1/cocoa/3.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-在表中找到某个值并复制belows数据,直到找到空单元格为止(inner.find函数)_Vba_Excel_Loops_Foreach - Fatal编程技术网

VBA-在表中找到某个值并复制belows数据,直到找到空单元格为止(inner.find函数)

VBA-在表中找到某个值并复制belows数据,直到找到空单元格为止(inner.find函数),vba,excel,loops,foreach,Vba,Excel,Loops,Foreach,我想请你帮我完成下面的任务 我有数据来源: ,未与表对齐。我需要找到一个文本(标题-例如toimiste ja uuni)和行(列-B、C、D、e、F),它们位于搜索单元格(toimiste ja uuni)的下方,并将它们粘贴到不同的页面上。然后向下搜索并再次执行,直到包含数据的页面结束,并在到达数据时按时间顺序粘贴数据 我已经有了代码,可以正确地完成工作,但前提是标题下只有2行要复制(或静态要复制的行数) 到目前为止,我掌握的代码是: Private Sub Search_FJ()

我想请你帮我完成下面的任务

我有数据来源: ,未与表对齐。我需要找到一个文本(标题-例如toimiste ja uuni)和行(列-B、C、D、e、F),它们位于搜索单元格(toimiste ja uuni)的下方,并将它们粘贴到不同的页面上。然后向下搜索并再次执行,直到包含数据的页面结束,并在到达数据时按时间顺序粘贴数据

我已经有了代码,可以正确地完成工作,但前提是标题下只有2行要复制(或静态要复制的行数)

到目前为止,我掌握的代码是:

Private Sub Search_FJ()
    Dim ws As Worksheet
    Dim rngCopy As Range, aCell As Range, bcell As Range
    Dim strSearch As String

    strSearch = "Toimipiste ja uuni"

    Set ws = Worksheets("INPUT_2")

    With ws
        Set aCell = .Columns(2).Find(What:=strSearch, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

        If Not aCell Is Nothing Then
            Set bcell = aCell

            If rngCopy Is Nothing Then
                Set rngCopy = .Range(.Cells(aCell.Row + 1, 2), .Cells(aCell.Row + 2, 6))
            Else
                Set rngCopy = Union(rngCopy, .Range(.Cells(aCell.Row + 1, 2), .Cells(aCell.Row + 2, 6)))
            End If

            Do
                Set aCell = .Columns(2).FindNext(After:=aCell)

                If Not aCell Is Nothing Then
                    If aCell.Address = bcell.Address Then Exit Do

                    If rngCopy Is Nothing Then
                        Set rngCopy = .Range(.Cells(aCell.Row + 1, 2), .Cells(aCell.Row + 2, 6))
                    Else
                        Set rngCopy = Union(rngCopy, .Range(.Cells(aCell.Row + 1, 2), .Cells(aCell.Row + 2, 6)))
                    End If
                Else
                    Exit Do
                End If
            Loop
        Else
            MsgBox SearchString & "NOT FOUND"
        End If

        '~~> I am pasting to Output sheet. Change as applicable
        If Not rngCopy Is Nothing Then rngCopy.Copy Sheets("OUTPUT_2").Cells(2, 6)
    End With
End Sub
我不知道,如何更正代码,它会考虑到,标题下面有时可能是2行,有时是4行,。。。我需要把它们都抄下来。它总是以空行结束,正如您在下面的屏幕上看到的:

我正在努力解决的问题是:

Set rngCopy = .Range(.Cells(aCell.Row + 1, 1), .Cells(aCell.Row + 2, 7))
因为零件将复制2行(始终)。我想应该有内部的
.find
函数,它将首先搜索标题,然后搜索空单元格(第二个),但不知道怎么做


多谢各位

那么您需要复制一系列单元格,从特定单元格开始,一直复制到最后一个包含数据的单元格? 涵盖了这项任务,应该给你一个良好的开端

如果您在代码中的特定行被卡住,请随时再次询问


编辑:根据您的编辑更新链接。
.Select
语句纯粹是为了展示,不应保存在代码的最终版本中。

执行以下操作:编写一个您希望代码执行的步骤列表。列出代码完全按照您的要求执行所需的所有步骤。使用要点。告诉我们你被困的确切地点。不要在评论中发布这些内容,而是更新你的问题,并在完成后尽快写一条小评论,这样人们就会得到通知。嗨,大卫,谢谢你的建议。我已经用步骤更新了问题。希望,现在更清楚了。好的更新!您仍然需要告诉我们您正在使用的代码行。感谢您的耐心和意愿帮助我描述此问题:)。你是绝对正确的,看起来我需要整个代码,而不仅仅是部分帮助。谢谢大卫。我检查了这篇文章,并试图在我的代码中使用它,但没有成功。我无法使用的方式,它将找到标题,然后检查并复制下面包含数据的所有行,直到单元格为空,然后继续搜索标题。。。(上面的过程应该重复,直到全部完成-整个工作表已经被搜索、复制和粘贴)。再次:一步一步地检查代码,直到您理解每一行代码。如果您对代码的特定部分有疑问,请在此处提问,我们将很乐意提供帮助。只是不要指望我们为您编写代码。这篇优秀的文章将为您提供如何处理代码的好方法。我理解代码:)和我正在努力解决的一行是-Set rngCopy=.Range(.Cells(aCell.Row+1,2),.Cells(aCell.Row+2,6))。它花了下面两行,但我想改变它的方式,它将搜索,直到“值”将成立。我找不到任何线索如何做到这一点(公式或至少一些建议,其中将描述如何做函数查找直到…)。我不想让任何人给我写完整的代码,我只是想在这一部分上提供帮助,至少是建议,我应该在哪里看。你寄给我的那篇文章没有提到这一点。不过还是要谢谢你,太好了!调整您的问题和标题以包含该特定问题,并将您的代码缩减到有问题的行。这将大大提高获得答案的几率。