Excel 宏每 n 行创建一个新工作表

标签 excel split excel-2010 vba

我正在尝试编写一个宏来获取数千行的 Excel 文件,并将初始工作表的行拆分为每张 250 行的工作表,不包括原始标题行,也应复制到每张纸上。总共 13 列,部分字段为空。

我可以自己对文档进行排序 - 这不是问题 - 我只是没有宏观技能来解决这个问题。

我尝试过搜索,找到了一些例子,但没有一个很合适..比如这个.. create macro that will convert excel rows from single sheet to new sheets ..或者这个.. Save data input from one sheet onto successive rows in another sheet

有什么帮助吗?

最佳答案

这也应该提供您正在寻找的解决方案。您实际上是在我输入时添加了答案,但也许有人会发现它有用。

此方法仅要求您输入要复制到每个页面的行数,并假设执行该方法后您位于“主”页面。

Sub AddSheets()
Application.EnableEvents = False

Dim wsMasterSheet As Excel.Worksheet
Dim wb As Excel.Workbook
Dim sheetCount As Integer
Dim rowCount As Integer
Dim rowsPerSheet As Integer

Set wsMasterSheet = ActiveSheet
Set wb = ActiveWorkbook

rowsPerSheet = 5
rowCount = Application.CountA(Sheets(1).Range("A:A"))
sheetCount = Round(rowCount / rowsPerSheet, 0)

Dim i As Integer

For i = 1 To sheetCount - 1 Step 1
With wb
    'Add new sheet
    .Sheets.Add after:=.Sheets(.Sheets.Count)

     wsMasterSheet.Range("A1:M1").EntireRow.Copy Destination:=Sheets(.Sheets.Count).Range("A1").End(xlUp)       

    wsMasterSheet.Range("A" & (rowsPerSheet + 2) & ":M" & (2 * rowsPerSheet + 1)).EntireRow.Cut Destination:=Sheets(.Sheets.Count).Range("A" & Rows.Count).End(xlUp).Offset(1)
    wsMasterSheet.Range("A" & (rowsPerSheet + 2) & ":M" & (2 * rowsPerSheet + 1)).EntireRow.Delete

    ActiveSheet.Name = "Rows " + CStr(((.Sheets.Count - 1) * rowsPerSheet + 1)) & " - " & CStr((.Sheets.Count * rowsPerSheet))
End With


Next

wsMasterSheet.Name = "Rows 1 - " & rowsPerSheet

Application.EnableEvents = True

End Sub

关于Excel 宏每 n 行创建一个新工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17052240/

相关文章:

excel - 我应该如何使我的 VBA 代码与 64 位 Windows 兼容?

excel - 在 VBA 中将特定的 CSV 添加到工作簿

javascript - 我怎样才能以 <a href="开始并在此处有一个数组元素然后以 </a> 结束?

vba - Excel:使用 VBA 获取单元格的背景颜色

vba - 如何查明下周六或当前周六的日期?

Python Pandas - 将日期列读取为字符串

java - 拆分文本时遇到问题

python - 拆分 pandas 数据帧索引中的值

excel - Excel中的散点图使用时间数据绘制x-y散点图,无需转换为数据系列

excel - Microsoft Excel - 如何自动填充列中的公式?