从一个可变长度工作表复制到另一个

时间:2016-06-14 10:07:09

标签: excel-vba vba excel

嗨新手(非常新)在这里, 我有12张(月)的可变数据。每张纸都显示了该月的客户支出,我需要以某种方式将每个客户整理到一张纸上。

通常我会在excel中使用像vlookup公式这样简单的东西,但由于新客户可能在一年中加入,我需要一种不同的方式来对这些信息进行排序。正如我通常使用帐户代码作为我的vlookup源。

所以我相信我需要使用VBA,但很难找到甚至可以从这样的事情开始。

任何帮助将不胜感激。

我认为最好的方法是将每个月复制到一张主表上,然后从那里开始。如果是这样的话,我想我需要找到活动工作表中的行数,然后将它们复制到主工作表中,但不要过度写入我已经复制过的内容。

有人能指出我正确的方向吗?

JA

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码在任何工作表中找到第一个空行:

Dim ws As Worksheet : Set ws = ThisWorkbook.Worksheets("SheetName")
Dim firstEmptyRow
' Get the first empty row in column "A" by finding the last used row and adding 1.
firstEmptyRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1 

ws.Range("A" & firstEmptyRow).Value = "Whatever you want to put in the first empty row"

答案 1 :(得分:0)

理想情况下,您将提供测试存根和您希望实现的结果的草稿。但我仍然可以让你开始。

  1. 此宏循环遍历所有工作表
  2. 将每个工作表的已用范围复制到新工作簿中
  3. 在数据
  4. 之间添加两条添加空白行
  5. 后面是工作表名称
  6. 还有两个空行
  7. 我对数据的形状一无所知。但这是一个很好的起点。

    Sub CombineWorksheets()
        Dim lastRow As Long, r As Range
        Dim ws As Worksheet
        Dim wbNew As Workbook
        Set wbNew = Workbooks.Add
    
        For Each ws In ThisWorkbook.Worksheets
            Set r = ws.UsedRange
            lastRow = lastRow + r.Rows.Count + 5
            wbNew.Worksheets(1).Cells(lastRow - 2, 1) = ws.Name
    
            r.Copy Destination:=wbNew.Worksheets(1).Cells(lastRow, 1)
        Next
    
    End Sub