首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果满足条件,则将整行从一个工作簿复制到另一个工作簿

如果满足条件,则将整行从一个工作簿复制到另一个工作簿
EN

Stack Overflow用户
提问于 2019-05-14 00:54:19
回答 1查看 354关注 0票数 1

希望有人能帮助我!我已经被困了一段时间..。提前感谢!

在工作簿1中,如果Sheet1中的列D(起始行19和更高)等于"SOW",则将整行复制到Sheet1工作簿2中的第一个可用行(第19行之后)。复制后,继续扫描列D中的项目,以获得更多"SOW“实例。

背景-我正在尝试复制整个行,因为我必须从行A:NL复制行-它需要遍历大约175行

下面是两个我尝试过但没有用的代码。他们基本上什么都不做,没有错误。

代码语言:javascript
复制
Sub TEST2()

Dim LastRow As Long, i As Long, erow As Long
LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
If Cells(i, 4).Value = "SOW" Then
Range(Cells(i, 1), Cells(i, 400)).Select.Copy

Workbooks.Open Filename:="Y:\Station Operations\Station Ops Shared\WEST VACATION CALENDAR 2019.xlsm"
Worksheets("SOW_2019").Select
erow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

ActiveSheet.Cells(erow, 1).Select
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.CutCopyMode = False

End If
Next i
End Sub
代码语言:javascript
复制
Sub TESTER()
Dim i As Long
Dim outRow As Long
Dim sourceWs As Worksheet, destWs As Worksheet

Set sourceWs = Workbooks("EAST VACATION CALENDAR 2019").Worksheets("SOE_2019")
Set destWs = Workbooks("WEST VACATION CALENDAR 2019").Worksheets("SOW_2019")

LastRow = ActiveSheet.Range(“A” & Rows.Count).End(xlUp).Row

outRow = 1

    For i = 19 To LastRow

        If sourceWs.Cells(i, 4).Value = "SOW" Then

        sourceWs.Rows(i).EntireRow.Copy destWs.Rows(outRow)
        outRow = outRow + 1
        Application.CutCopyMode = False

        End If

    Next i
End Sub
EN

回答 1

Stack Overflow用户

发布于 2019-05-14 02:16:56

我将假设我们在东部日历中运行代码,并将数据输出到西部日历。

这允许我显式地命名工作簿和工作表。一旦我得到了对象的句柄,我就可以直接给值赋值,而不需要复制和粘贴。Destination = Source。我不确定您是想从第19行还是从第2行开始,所以我选择了第2行,以便查看更多行。您的两个代码示例非常不同。

代码语言:javascript
复制
Sub TESTER()
    Dim sourceWs As Worksheet
    Set sourceWs = ThisWorkbook.Worksheets("SOE_2019")

    Dim westCalendar As Workbook
    Set westCalendar = Workbooks.Open(Filename:="Y:\Station Operations\Station Ops Shared\WEST VACATION CALENDAR 2019.xlsm")
    Dim destWs As Worksheet
    Set destWs = westCalendar.Worksheets("SOW_2019")

    Dim lastRow As Long
    lastRow = sourceWs.Range("A" & sourceWs.Rows.CountLarge).End(xlUp).Row

    Dim outRow As Long
    outRow = 1

    Dim i As Long
    For i = 2 To lastRow
        If sourceWs.Cells(i, 4) = "SOW" Then
            destWs.Rows(outRow).EntireRow.Value = sourceWs.Rows(i).EntireRow.Value
            outRow = outRow + 1
        End If
    Next i

    westCalendar.Close False
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56116750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档