捕获数据,然后在现有代码中创建循环

时间:2019-07-10 23:03:14

标签: excel vba

我创建了一个电子表格,该电子表格具有一个宏,当A列中的状态标记为“已付款”时,该宏将删除并移至新标签页。我需要更进一步,以便如果状态标记为“已付款”,并且D列中的发票编号与同一行匹配,则所有相同的发票编号也将移至新标签页。

将捕获该行发票编号的代码是什么?

然后在第一个循环内进行另一个for循环,循环遍历所有行并将所有与发票编号匹配的行移动到Sub TransferData() Dim xRg As Range Dim xCell As Range Dim I As Long, J As Long, K As Long I = Worksheets("Sheet1").UsedRange.Rows.Count J = Worksheets("Sheet2").UsedRange.Rows.Count If J = 1 Then If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0 End If Set xRg = Worksheets("Sheet1").Range("A1:A" & I) On Error Resume Next Application.ScreenUpdating = False For K = 1 To xRg.Count If CStr(xRg(K).Value) = "paid" Then xRg(K).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1) xRg(K).EntireRow.Delete If CStr(xRg(K).Value) = "paid" Then K = K - 1 End If J = J + 1 End If Next Application.ScreenUpdating = True End Sub 之后。当前电子表格图像。我正在使用的代码如下。该图像是电子表格的摘要。在示例中,莎拉·菲利普斯(Sarah Phillips)在第9到12行中的数据在A列的第9行中具有“已付款”状态。我需要所有具有相同发票编号的4到所有新电子表格。

我刚开始编写代码,建议我先捕获该行的发票编号,然后在第一个行中做一个循环,遍历所有行并将其移动。我不知道如何执行此操作或修改当前代码,以使其包含建议。

def your_action
  render json: params[:your_json_array].map { |item| item[:address] }
end

我希望当A行标记为“已付款”并执行宏时,所有具有匹配发票编号的行都将被移动。

Is it possible to exclude specified GET parameters in apache access logs?

1 个答案:

答案 0 :(得分:0)

我建议进行以下更改。

  • 使用For循环。这样比较容易,您也可以轻松进行。
  • 删除宏末尾的行。可以使用下面的代码中的KillRnG
  • 您可以使用Offset从匹配行的其他列中收集信息。看看我的例子。

    'If you insert this immediately after you turn off screen 
    'updating you can loop through your rows.
    dim aCell as Range
    For Each aCell In Intersect(Range("A:A", ActiveCell.UsedRange)).Cells
    
        If UCase(aCell.Value) = "PAID" Then
            'do your thing of copying the row to some other other sheet.
    
             'set the row for deletion... this will be done at the end.
              Set killRNG = Union(killRNG, aCell.EntireRow)
    
        Debug.Print "This is the invoice: " & aCell.Offset(0, 3).Value
    End If
    
    Next cell
    
    'This will delete whatever you wanted
    killRNG.ClearContents
    killRNG.Delete