粘贴到另一个工作簿时自动复制包含特定列中文本的行

时间:2018-05-16 16:30:06

标签: excel excel-vba vba

我尝试编写一个宏来复制表单中的数据,然后打开一个单独的工作簿并将数据粘贴到下一个空行中。用户可以填写21行信息,但实际填写的行数每天都会有所不同。

以下代码的作用是,当粘贴到目标工作簿时,空白单元格被视为包含数据。所以我最终在每个数据转储之间有几个空行。

如何更改此代码以复制第5行 - 第25行范围内包含#34; I"中的文本的所有行?但是忽略列#34中的任何空行;我"?

Sub Export_Data()
Dim owb As Workbook
Dim sh As Worksheet

Set sh = Sheet1
sh.Range("A5:K25").Copy
Set owb = Workbooks.Open("my_destination_workbook")

owb.Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
owb.Close True
End Sub

2 个答案:

答案 0 :(得分:0)

我采用For循环方法来查看A列中的值并跳过空值。有很多方法可以解决这个问题,这只是一个。

Sub Export_Data()
    Dim owb As Workbook
    Dim sh As Worksheet
    Dim sRange as Range
    Dim i as Long

    Set sh = Sheet1
    Set owb = Workbooks.Open("my_destination_workbook")

    For i = 5 to 25 Step + 1 'from 5 to 25 because you are checking A5:K25
        'If "A & i" has a value, copy A to Z and paste it at the end on the new workbook
        If sh.Range("A" & i).Value <> 0 Then
            sh.Range("A" & i & ":K" & i).Copy
            owb.Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        End If
    Next
    owb.Close True
End Sub

答案 1 :(得分:-1)

感谢里卡多A

你的代码可以循环遍历所有内容,但不幸的是它仍然在拾取空行。我做了一些改动并改变了

If sh.Range("A" & i).Value <> 0 Then

If sh.Range("A" & i).Value <> "" Then

现在它只复制具有输入第I列的值的行。 因此,以下代码现在可以复制第一列中包含值的所有行,然后打开一个新工作簿并将复制的行粘贴到下一个空行中。

Sub Export_Data()
Dim owb As Workbook
Dim sh As Worksheet

Set sh = Sheet1
Set owb = Workbooks.Open("my_destination_workbook")

For i = 5 To 25 Step 1
    If sh.Range("A" & i).Value <> "" Then
        sh.Range("A" & i & ":K" & i).Copy
        owb.Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    End If
Next

owb.Close True

End Sub