Select 第一个空白行和第三个空白行之间的单元格,然后粘贴到另一个 sheet
Select cells between first blank row and third blank row, then paste into another sheet
我正在尝试制作一个子例程,选择第一个空白行和第三个空白行之间的行并将其移动(同时将其从原始 sheet 中删除)到标记为 sheet 中"Hold or Cancelled"
我有一个空白行函数,基本上是查找 E 列中的第一个空白单元格,然后选择该行。我试过用 Selection.Resize 玩箭头,但似乎无法正常工作。
Dim i1 As Long
Dim i2 As Long
Dim i3 As Long
i1 = ActiveSheet.Range("E1").End(xlDown).Offset(1).EntireRow.Select
i2 = .Range("E" & Rows.Count).End(xlUp).Row + 3
i3 = i2 - i1
ActiveSheet.Range("E1").End(xlDown).Offset(1).EntireRow.Select
Selection.Resize (i3)
我不知道如何将选择移动到另一个 sheet。
这里有两种在工作表之间移动行的方法
假设您要将 E 列中包含空单元格的行从 "Sheet1" 移动到 "Sheet2"
一次移动一行
Public Sub moveRows1()
Dim ws1 As Worksheet, ws2 As Worksheet, xRow1 As Long, xRow2 As Long
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
xRow1 = ws1.Range("E1").End(xlDown).Offset(1).Row 'find 1st blank cell on Sheet1
xRow2 = ws2.UsedRange.Row + ws2.UsedRange.Rows.Count 'find 1st blank cell on Sheet2
ws1.Rows(xRow1).Cut 'cut entire row from Sheet1
ws2.Rows(xRow2).Insert Shift:=xlDown 'paste it on Sheet2
ws1.Rows(xRow1).Delete Shift:=xlUp 'remove empty row from Sheet1
'ws1.Rows(xRow1).EntireRow.Delete 'or delete entire row
End Sub
一次所有行
Public Sub moveRows2()
Dim ws1 As Worksheet, ws2 As Worksheet, ur1 As Range, xRow2 As Long
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
xRow2 = ws2.UsedRange.Row + ws2.UsedRange.Rows.Count 'find 1st blank cell on Sheet2
Set ur1 = ws1.UsedRange
With ur1
.AutoFilter
.AutoFilter Field:=5, Criteria1:="=" 'AutoFilter Col E (blank cells)
'If there are any visible rows
If ws1.Cells(ws1.Rows.Count, ur1.Column).End(xlUp).Row > ur1.Row Then
'Copy-paste visible data from Sheet1 to Sheet2
.Offset(1).Resize(.Rows.Count - 1, .Columns.Count).Copy ws2.Cells(xRow2, 1)
'Delete visible range with data from Sheet1
.Offset(1).Resize(.Rows.Count - 1, .Columns.Count).EntireRow.Delete
End If
.AutoFilter
End With
End Sub
我正在尝试制作一个子例程,选择第一个空白行和第三个空白行之间的行并将其移动(同时将其从原始 sheet 中删除)到标记为 sheet 中"Hold or Cancelled"
我有一个空白行函数,基本上是查找 E 列中的第一个空白单元格,然后选择该行。我试过用 Selection.Resize 玩箭头,但似乎无法正常工作。
Dim i1 As Long
Dim i2 As Long
Dim i3 As Long
i1 = ActiveSheet.Range("E1").End(xlDown).Offset(1).EntireRow.Select
i2 = .Range("E" & Rows.Count).End(xlUp).Row + 3
i3 = i2 - i1
ActiveSheet.Range("E1").End(xlDown).Offset(1).EntireRow.Select
Selection.Resize (i3)
我不知道如何将选择移动到另一个 sheet。
这里有两种在工作表之间移动行的方法
假设您要将 E 列中包含空单元格的行从 "Sheet1" 移动到 "Sheet2"
一次移动一行
Public Sub moveRows1()
Dim ws1 As Worksheet, ws2 As Worksheet, xRow1 As Long, xRow2 As Long
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
xRow1 = ws1.Range("E1").End(xlDown).Offset(1).Row 'find 1st blank cell on Sheet1
xRow2 = ws2.UsedRange.Row + ws2.UsedRange.Rows.Count 'find 1st blank cell on Sheet2
ws1.Rows(xRow1).Cut 'cut entire row from Sheet1
ws2.Rows(xRow2).Insert Shift:=xlDown 'paste it on Sheet2
ws1.Rows(xRow1).Delete Shift:=xlUp 'remove empty row from Sheet1
'ws1.Rows(xRow1).EntireRow.Delete 'or delete entire row
End Sub
一次所有行
Public Sub moveRows2()
Dim ws1 As Worksheet, ws2 As Worksheet, ur1 As Range, xRow2 As Long
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
xRow2 = ws2.UsedRange.Row + ws2.UsedRange.Rows.Count 'find 1st blank cell on Sheet2
Set ur1 = ws1.UsedRange
With ur1
.AutoFilter
.AutoFilter Field:=5, Criteria1:="=" 'AutoFilter Col E (blank cells)
'If there are any visible rows
If ws1.Cells(ws1.Rows.Count, ur1.Column).End(xlUp).Row > ur1.Row Then
'Copy-paste visible data from Sheet1 to Sheet2
.Offset(1).Resize(.Rows.Count - 1, .Columns.Count).Copy ws2.Cells(xRow2, 1)
'Delete visible range with data from Sheet1
.Offset(1).Resize(.Rows.Count - 1, .Columns.Count).EntireRow.Delete
End If
.AutoFilter
End With
End Sub