如何根据合并单元格中的条件移动多行?

时间:2019-01-22 16:24:49

标签: excel vba

enter image description here

我正在尝试创建项目日志。项目将水平显示。

“ Open_Orders”工作表中

A列为空

B列是项目信息标题(客户名称,采购订单编号,开始日期等)。在列出下一个项目之前,每个项目共有7行 C列是C列的答案(也是下一个项目开始前的7行) D-L列是制造过程(设计,批准,零件采购等)。每列是一个合并的单元格,等效于7行高。正在进行时将用“ p”填充,并通过规则将其填充为黄色,或者将使用规则将其填充为“ c”并通过规则将绿色填充。

**当您单击刷新按钮时,每个项目的单元格都用“ c”填充时,L是最重要的“完成”列,我希望将整行(基本上是7行)移动到另一个名为“ 2019_Completed_Orders”并将其从“ Open_Orders”中删除

当L用“ c”标记时,我当前的代码将移动该行,但仅从7行中获取第一行。在IE中,它使用“客户名称”,但其余部分保留。

此外,“ 2019_Completed_Orders”中的行不是一一对应,而是彼此保存。

Sub Completed()
    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    I = Worksheets("Open_Orders").UsedRange.Rows.Count
    J = Worksheets("2019_Completed_Orders").UsedRange.Rows.Count
    If J = 1 Then
       If Application.WorksheetFunction.CountA(Worksheets("2019_Completed_Orders").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("Open_Orders").Range("L1:L" & I)
    On Error Resume Next
    Application.ScreenUpdating = False
    For K = 1 To xRg.Count
        If CStr(xRg(K).Value) = "c" Then
            xRg(K).EntireRow.Copy Destination:=Worksheets("2019_Completed_Orders").Range("A" & J + 1)
            xRg(K).EntireRow.Delete
            If CStr(xRg(K).Value) = "c" Then
                K = K - 1
            End If
            J = J + 1
        End If
    Next
    Application.ScreenUpdating = True
End Sub

0 个答案:

没有答案