如何移动到下一个空白单元格?

0 excel vba excel-vba

我有一个工作簿中的多个工作表上的数据,我想复制到同一工作簿中的一个工作表.当我运行宏时,我希望首先删除"iPage Data Export"表中的当前数据,然后将其替换为其他表中的数据.

我希望这个过程一次只能发生一列,因为我可能不会带来所有内容.现在我正在努力学习如何只做一个专栏.

我能够从一张纸上复制一列的所有内容,但当它移动到下一张纸时,它会覆盖现有数据.最后,我只能复制一张相同的数据.

这是我的4个问题:

  1. 在运行例程之前,如何清除此表中的数据?

  2. 如何让它在该行的底部启动每个复制功能(即在具有值的最后一个单元格之后)?我已经在这个和其他董事会上尝试了很多建议而没有成功.我承认我在这方面不是很有经验.

  3. 如何将其复制到特定列(目前它似乎默认为A.

  4. 如何在粘贴功能期间连接多个列?即如果我想要它插入:A2&","B2而不是A2

Sub CombineData()

Dim Sht As Worksheet For Each Sht In ActiveWorkbook.Worksheets If Sht.Name <> "iPage Data Export" Then Sht.Select Range("C:C").Copy Sheets("iPage Data Export").Select ActiveSheet.Paste Else End If Next Sht End Sub
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 6

在运行例程之前,如何清除此表中的数据?

Sht.Cells.ClearContents  
Run Code Online (Sandbox Code Playgroud)

如何让它在该行的底部启动每个复制功能(即在具有值的最后一个单元格之后)?我已经在这个和其他董事会上尝试了很多建议而没有成功.我承认我在这方面不是很有经验.

Range("C" & Rows.Count).End(xlUp).Offset(1, 0)
Run Code Online (Sandbox Code Playgroud)

详细地:

  • Rows.Count将返回工作表中的行数,因此在旧式样式*.xls工作簿中,这将返回数字65,536.因此"C" & Rows.Count是一样的C65536

  • Range("C" & Rows.Count).End(xlUp)与转到C65536并按Ctrl+键相同- 该命令End(xlDirection)告诉程序转到该范围内的最后一个单元格.在这种情况下,我们最终将在包含C列数据的最后一个单元格中结束.

  • .Offset(1, 0)意味着我们希望通过行和/或列的数量返回范围偏移量.VBA使用RC(行列)引用,因此每当您看到类似于Offset()带有两个数字的函数作为参数传递时,它通常依次与行和列相关.在这种情况下,我们希望在我们引用的最后一个单元格下面一行的单元格.

  • 总而言之,这个短语Range("C" & Rows.Count).End(xlUp).Offset(1, 0)意味着转到C列的最后一个单元格,直到我们用数据命中最后一个单元格,然后返回下面的单元格 - 这将是下一个空单元格.

如何将其复制到特定列(目前它似乎默认为A.

Range("C:C").Copy Destination:=Sheets("iPage Data Export").Range("A:A")
Run Code Online (Sandbox Code Playgroud)

您可以Destination在同一行中传递参数并实际绕过剪贴板(更快更清洁)

如何在粘贴功能期间连接多个列?即如果我想要它插入:A2&","B2而不是A2

假设您想引用A,B和F列 - 只需使用:

Range("A1, B1, F1").EntireColumn  
Run Code Online (Sandbox Code Playgroud)

总而言之,您可以将现有代码简化为(未经测试):

Sub CombineData()

Dim Sht As Worksheet
    For Each Sht In ActiveWorkbook.Worksheets
        If Sht.Name <> "iPage Data Export" Then
            Sht.Range("C1:C" & Cells(Sht.Rows.Count, 3).End(xlUp).Row).Copy Destination:=Sheets("iPage Data Export").Range("A:A")
        End If
    Next

End Sub 
Run Code Online (Sandbox Code Playgroud)