excel - Excel VBA 在空白之间复制行
问题描述
我没有 VBA 的经验,我试图了解是否可以让它在 Excel 中为我运行一些东西。
我有一个装配数据集,下面有零件,系统只能将其拉入一个完整的数据集中,从顶部装配到底部(326 个装配)。
我需要一个将程序集的行复制到新工作表中的解决方案,因此我为每个程序集都有一个选项卡。
我拿起以下代码:
Sub Star123()
Dim rownum As Long
Dim colnum As Long
Dim startrow As Long
Dim endrow As Long
Dim lastrow As Long
rownum = 1
colnum = 1
lastrow = Worksheets("Sheet1").Range("A65536").End(xlUp).Row
With ActiveWorkbook.Worksheets("Sheet1").Range("a1:a" & lastrow)
For rownum = 1 To lastrow
Do
If .Cells(rownum, 1).Value = "Start" Then
startrow = rownum
End If
rownum = rownum + 1
If (rownum > lastrow) Then Exit For
Loop Until .Cells(rownum, 1).Value = "End"
endrow = rownum
rownum = rownum + 1
Worksheets("Sheet1").Range(startrow & ":" & endrow).Copy
Set newSht = Sheets.Add
Range("A1").Select
ActiveSheet.Paste
Next rownum
End With
End Sub
然而,这只是运行 wole 数据集,我需要了解循环如何分离成新的工作表。
解决方案
尝试这个。我添加了一些评论。
您的代码的主要问题只是指示的单行,它跳过了下一个“开始”。
如果每个“开始”总是紧跟在“结束”之后,则可以简化代码。
Sub Star123()
Dim rownum As Long
Dim colnum As Long
Dim startrow As Long
Dim endrow As Long
Dim lastrow As Long
Dim newSht As Worksheet
rownum = 1
colnum = 1
lastrow = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row 'better than hardcoding 65336 which won't work for recent versions of xl anyway
With ActiveWorkbook.Worksheets("Sheet1").Range("a1:a" & lastrow)
For rownum = 1 To lastrow
Do
If .Cells(rownum, 1).Value = "Start" Then
startrow = rownum
End If
rownum = rownum + 1
If (rownum > lastrow) Then Exit For
Loop Until .Cells(rownum, 1).Value = "End"
endrow = rownum
'rownum = rownum + 1 'just needed to comment out this line as it was skipping the next Start
Set newSht = Sheets.Add
Worksheets("Sheet1").Range(startrow & ":" & endrow).Copy newSht.Range("A1") 'reference sheet directly without selecting or activating
Next rownum
End With
End Sub
推荐阅读
- swift - 使用 NSBezierPath 绘制一个点
- python - (Python)格式化列表中的元素
- php - PHP & SQL Server,致命错误:未捕获错误:调用未定义函数 sqlsrv_connect()
- javascript - 在 Material-ui 上为 React.js 设置容器宽度
- css - Bulma - 瓷砖没有打破到下一行
- angularjs - 仅在 nginx 中限制 REST API 对 Angular 应用程序的访问
- sql - 显示零或一的查询表达式
- node.js - 如何在 Node.js 中将数据从模型传递到路由器
- mysql - 计算比例(百分比)
- flink-streaming - Flink中window和timewindow有什么区别