簡體   English   中英

Excel宏可將單元格的特定行從一個工作表剪切到另一個工作表

[英]Excel macro to cut a specific row of cells from one worksheet to another

我有一個名為CASES-PENDING的工作表,其中包含許多行數據。 我每天都會將特定行的開始單元格的狀態更改為“完成”(從“待處理”更改為)。 不需要剪切該行並將其粘貼到我的其他CASES-DONE標題為工作表上的方法,我想要一個宏來執行此操作。 我想在將幾行數據的狀態從“待處理”更改為“完成”后運行宏。 然后,必須將所有這些行剪切並粘貼到另一個工作表上。 那可能嗎? 非常感謝你們!

這只是黑暗中的一擊,但最近我一直在處理類似的事情。

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的行,並將其復制並粘貼到您決定命名的任何其他工作表上。 只要記住要替換所有變量即可。 我在這方面還很新,所以我可能錯了,但是值得一試!

編輯:您也可以僅將其記錄為宏,然后使用Long變量更改范圍以使其為變量。

您也可以這樣做。 比自動篩選解決方案更多的代碼,但可能更靈活。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM