0

多くのデータ行を含む CASES-PENDING というタイトルのワークシートがあります。毎日、特定の行の開始セルのステータスを「完了」に変更します (「保留中」から変更)。その行を切り取って、別の CASES-DONE というタイトルのワークシートに貼り付ける代わりに、マクロでそれを行いたいと思います。複数行のデータのステータスを「保留中」から「完了」に変更した後にマクロを実行したいと考えています。次に、これらすべての行を切り取って他のワークシートに貼り付ける必要があります。それは可能ですか?どうもありがとう!

4

2 に答える 2

0

これは闇の中での刺し傷ですが、私は最近これに似たものを扱っています.

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 変数を使用して可変にすることもできます。

于 2013-06-25T19:28:27.083 に答える
0

このようにすることもできます。AutoFilter ソリューションよりも多くのコードがありますが、おそらくより柔軟です。

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
于 2013-06-25T20:15:36.827 に答える