Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel宏将特定的单元格行从一个工作表剪切到另一个工作表_Excel_Vba - Fatal编程技术网

Excel宏将特定的单元格行从一个工作表剪切到另一个工作表

Excel宏将特定的单元格行从一个工作表剪切到另一个工作表,excel,vba,Excel,Vba,我有一个名为CASES-PENDING的工作表,其中有许多行数据。每天,我将特定行的起始单元格的状态更改为“完成”(从“待定”更改为“完成”)。我想用一个宏来完成这项工作,而不是剪切那一行并粘贴到我的其他已完成的标题工作表上。 我想在将几行数据的状态从“挂起”更改为“完成”后运行宏。然后,所有这些行都必须剪切并粘贴到另一个工作表上。 可能吗? 非常感谢各位 这只是暗中捅了一刀,但我最近一直在处理类似的事情 Dim LastRow As Long Range("1:1").AutoFilter F

我有一个名为CASES-PENDING的工作表,其中有许多行数据。每天,我将特定行的起始单元格的状态更改为“完成”(从“待定”更改为“完成”)。我想用一个宏来完成这项工作,而不是剪切那一行并粘贴到我的其他已完成的标题工作表上。 我想在将几行数据的状态从“挂起”更改为“完成”后运行宏。然后,所有这些行都必须剪切并粘贴到另一个工作表上。 可能吗?
非常感谢各位

这只是暗中捅了一刀,但我最近一直在处理类似的事情

Dim LastRow As Long
Range("1:1").AutoFilter Field:=(Row you have "Done" in), Criteria1:="Done"
LastRow = Cells(Rows.Count, 3).End(xlUp).Row
Range("CellRangeYouNeedCopied" & LastRow).Copy Destination:=Sheets("SheetX").Range(X,Y)
基本上,这只过滤到其中包含DONE的行,然后复制并粘贴到您决定命名的任何其他工作表上。记住替换所有的变量。我还是个新手,所以我可能错了,但值得一试


编辑:您也可以将其记录为宏,然后使用长变量更改范围,使其成为变量

你也可以这样做。代码比自动筛选解决方案多,但可能更灵活

Sub MoveDoneRows()
  Dim nStatusCol As Integer
  nStatusCol = 1

  Dim i As Integer
  i = 2

  ' select first row to insert rows into DONE sheet
  Dim nInsertRow As Integer
  Sheets("CASES-DONE").Select
  Range("A1").Select
  Selection.End(xlDown).Select
  nInsertRow = ActiveCell.Row + 1

  ' move rows with status done
  Dim sStatus As String
  Dim sPasteRow As String
  sStatus = Sheets("CASES-PENDING").Cells(i, nStatusCol).Value
  While sStatus <> ""
    If sStatus = "done" Then
      ' cut the current row from PENDING sheet
      sPasteRow = i & ":" & i
      Sheets("CASES-PENDING").Select
      Rows(sPasteRow).Select
      Selection.Cut

      ' paste into DONE sheet
      Sheets("CASES-DONE").Select
      Cells(nInsertRow, nStatusCol).Select
      ActiveSheet.Paste
      nInsertRow = nInsertRow + 1

      ' delete empty row from PENDING sheet
      Sheets("CASES-PENDING").Select
      Rows(sPasteRow).Select
      Selection.Delete Shift:=xlUp
    Else
      i = i + 1
    End If
    sStatus = Sheets("CASES-PENDING").Cells(i, nStatusCol)
  Wend
End Sub
Sub-MoveDoneRows()
Dim nStatusCol作为整数
nStatusCol=1
作为整数的Dim i
i=2
'选择第一行以将行插入到完成的工作表中
将行设置为整数
工作表(“已完成的案例”)。选择
范围(“A1”)。选择
选择。结束(xlDown)。选择
nisertrow=ActiveCell.Row+1
'移动状态为“完成”的行
作为弦的模糊状态
朦胧如弦
sStatus=表格(“待处理案例”).单元格(i,nStatusCol).值
而sStatus“
如果sStatus=“完成”,则
'从挂起的工作表中剪切当前行
sPasteRow=i&“:”&i
表格(“待决案件”)。选择
行(sPasteRow)。选择
选择,剪
'粘贴到完成的工作表中
工作表(“已完成的案例”)。选择
单元格(nInsertRow、nStatusCol)。选择
活动表。粘贴
n插入行=n插入行+1
'从挂起的工作表中删除空行
表格(“待决案件”)。选择
行(sPasteRow)。选择
选择。删除移位:=xlUp
其他的
i=i+1
如果结束
sStatus=表格(“待决案例”)。单元格(i,nStatusCol)
温德
端接头