使用VBA将选定行移动到excel表格的顶部或底部(不包括一列)
我想要两个VBA代码,第一个将列(A、C、D、E和F)中选定的单元格行移动到excel表格的顶部,另一个将行单元格移动到excel表格的底部 例如,如果我选择C3中的单元格并运行宏,则行中的单元格(A3、C3、D3、E3和F3)将移动到表的底部 我有以下代码将整行移动到底部:使用VBA将选定行移动到excel表格的顶部或底部(不包括一列),vba,excel,Vba,Excel,我想要两个VBA代码,第一个将列(A、C、D、E和F)中选定的单元格行移动到excel表格的顶部,另一个将行单元格移动到excel表格的底部 例如,如果我选择C3中的单元格并运行宏,则行中的单元格(A3、C3、D3、E3和F3)将移动到表的底部 我有以下代码将整行移动到底部: Public Sub MoveToBottom() If Selection.Row <> 1 Then 'move the whole row Selection.
Public Sub MoveToBottom()
If Selection.Row <> 1 Then
'move the whole row
Selection.EntireRow.Cut
Range("B1").End(xlDown).Offset(1, 0).EntireRow.Insert
End If
End Sub
Public submovetobottom()
如果选择。第1行,则
“移动整排
Selection.EntireRow.Cut
范围(“B1”)。结束(xlDown)。偏移量(1,0)。EntireRow.Insert
如果结束
端接头
我的数据看起来像
提前感谢这很快就完成了,但应该能帮到你 它首先检查所选行:是否有值,是否不是标题,是否已经是顶行/底行(取决于函数) 然后它插入一行(仅用于顶部),将当前行复制到它所属的位置,并删除“旧”行
选项显式
子移动totop()
暗电流与长电流相同
rowCurrent=Selection.row
如果工作表function.CountA(行(行当前))>=5_
然后是当前行1和当前行2
范围(“A2,C2:F2”)。插入移位:=xlDown
范围(“A”和行当前)。复制目标:=范围(“A2”)
范围(“C”&rowCurrent&“:F”&rowCurrent)。复制目标:=范围(“C2:F2”)
范围(“A”&rowCurrent&“,”和“C”&rowCurrent&“:F”&rowCurrent)。删除
如果结束
端接头
子移动到底部()
暗电流与长电流相同
rowCurrent=Selection.row
它能持续多久
rowLast=范围(“A”&rows.count).End(xlUp).row
如果工作表function.CountA(行(行当前))>=5_
然后是当前行1和当前行最后一行
范围(“A”&rowCurrent)。复制目标:=范围(“A”&rowLast+1)
范围(“C”&rowCurrent&“:F”&rowCurrent)。复制目标:=范围(“C”&rowLast+1&“:F”&rowLast+1)
范围(“A”&rowCurrent&“,”和“C”&rowCurrent&“:F”&rowCurrent)。删除
如果结束
端接头
不清楚您是否希望它同时移动到顶部和底部,或者您是否有一些未提及的标准来决定它是成为顶部还是底部row@Marcucciboy2我想要两个代码一个将所选行移动到顶部,另一个执行相反的操作将所选行移动到底部。此外,我发布的是一个将行移到底部的示例。@Marcucciboy2 thanx对于反馈,我刚刚编辑了一个问题,使其更加清晰。。其想法是排除B列中的单元格(B列是优先级,不应移动)。您的代码将移动整行。你知道如何排除B列吗?我只是意识到,如果表被格式化为table,它就不起作用了。问题出在最后一行的Delete one中,因为您无法删除表中的行。你知道怎么解决吗?
Option Explicit
Sub MoveToTop()
Dim rowCurrent As Long
rowCurrent = Selection.row
If WorksheetFunction.CountA(rows(rowCurrent)) >= 5 _
And rowCurrent <> 1 And rowCurrent <> 2 Then
Range("A2, C2:F2").Insert Shift:=xlDown
Range("A" & rowCurrent).copy Destination:=Range("A2")
Range("C" & rowCurrent & ":F" & rowCurrent).copy Destination:=Range("C2:F2")
Range("A" & rowCurrent & ", " & "C" & rowCurrent & ":F" & rowCurrent).Delete
End If
End Sub
Sub MoveToBottom()
Dim rowCurrent As Long
rowCurrent = Selection.row
Dim rowLast As Long
rowLast = Range("A" & rows.count).End(xlUp).row
If WorksheetFunction.CountA(rows(rowCurrent)) >= 5 _
And rowCurrent <> 1 And rowCurrent <> rowLast Then
Range("A" & rowCurrent).copy Destination:=Range("A" & rowLast + 1)
Range("C" & rowCurrent & ":F" & rowCurrent).copy Destination:=Range("C" & rowLast + 1 & ":F" & rowLast + 1)
Range("A" & rowCurrent & ", " & "C" & rowCurrent & ":F" & rowCurrent).Delete
End If
End Sub