我基本上是在尝试重新格式化一份格式严谨的报告。您可以在链接的图片中看到。我在A列中有数据,可以是数字,日期或单词“ outside”。如果在任何给定的行中,列A的单词为“ outside”,那么我想将上一行中的E列中的值移至N列,将F列中的值移至O列。如果在任何给定的行中列A为空,那么我想删除整个行。如果在任何给定的行中,列A是日期,则在下一行将D列移至B列,将E列移至C列。这可能吗?预先感谢。
答案 0 :(得分:0)
未经测试,因此请确保在副本上而不是原始的:)
Option Explicit
Sub Help()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- Update
Dim i As Long, DeleteMe As Range
Application.ScreenUpdating = False
For i = 2 To ws.Range("A" & ws.Rows.Count).End(xlUp).Row
If IsDate(ws.Range("A" & i)) Then
ws.Range("B" & i + 1).Value = ws.Range("D" & i).Value
ws.Range("E" & i + 1).Value = ws.Range("C" & i).Value
ws.Range("D" & i).ClearContents
ws.Range("C" & i).ClearContents
ElseIf ws.Range("A" & i) = "output" Then
ws.Range("N" & i - 1).Value = ws.Range("E" & i).Value
ws.Range("O" & i - 1).Value = ws.Range("F" & i).Value
ws.Range("E" & i).ClearContents
ws.Range("F" & i).ClearContents
ElseIf ws.Range("A" & i) = "" Then
If DeleteMe Is Nothing Then
Set DeleteMe = ws.Range("A" & i)
Else
Set DeleteMe = Union(DeleteMe, ws.Range("A" & i))
End If
End If
Next i
If Not DeleteMe Is Nothing Then DeleteMe.EntireRow.Delete
Application.ScreenUpdating = True
End Sub