复制列中的单元格范围,直到空白单元格,然后粘贴到新工作簿中

时间:2019-07-11 03:03:40

标签: excel vba

我正在处理一列数据,其中该范围(例如,将要有多少行数据)最终对于用户创建的每个新工作表都会有所不同。

在一张纸上,B中的范围可能来自B3:B7,在另一张纸上,例如,可能来自B3:B22。

我想要一个宏,它复制范围B3:Bn中的数据,其中n是最后一行,下一行没有空白单元格。例如,复制B4:B7,在B8中有一个空白单元格。我想将此范围粘贴到另一列C的工作簿中。

我只是VBA的初学者,对代码的了解还不多。我已经尝试了几次循环,但实际上并没有用。

这是我到目前为止的弱代码。任何帮助表示赞赏。

Sub main()
    Dim r As Range

    Set r = Range("B3")
    Do While r.Value <> ""
        Range("C").Value = r.Value
        Set r = r.Offset(1)
    Loop
End Sub

2 个答案:

答案 0 :(得分:4)

看到这是一个简单的代码,可以帮助您入门。相应地更改名称

ServicePointManager.ServerCertificateValidationCallback += delegate
            {
                return true;
            };

A是带有数据的工作簿,B必须复制到其中。

更改两个工作簿上的工作表名称,Sub main() Dim wba As Workbook Dim wbb As Workbook Set wba = Workbooks("Workbook A") Set wbb = Workbooks("Workbook B") with wba.Worksheets("Worksheet in A") .Range("B3", .Range("B3").End(xlDown)).Copy End With wbb.Worksheets("Worksheet in B").Range("C3").PasteSpecial xlPasteValues End Sub 将选择范围,直到空白单元格。

答案 1 :(得分:1)

我只想在Mikku的代码中添加一件事。在这种情况下,用xlUp代替xlDown可能更好。因为可能有一个单元格为空白,而下一个单元格为空。当寻找最后一行时,xlUp是一个好习惯。

wba.Worksheets("Worksheet in A").Range("B3", Range("B" & Rows.Count).End(xlUp)).Copy