复制基于列值的行和复制后的更新列

时间:2017-08-07 07:23:55

标签: excel vba excel-vba

我能够使以下宏工作,从多个工作簿中复制WorkTracker表中的条目。我现在如何编辑代码以执行以下操作: 1.检查单个文件中的列X(如果它是空的)或者“已报告”已更新到每个单元格 2.如果列X是空白而列a到w不是,则宏需要将该条目复制到填充这些条目的最后一行,复制后,需要使用“报告”更新列X 3.如果列X已填充“已报告”,则应跳过该列,并应检查下一个条目

有一种有效的方法吗?基本上,宏需要合并单个条目,并且还能够识别先前已经报告的条目,因此当宏再次运行时(不是每周一次),它不会再次复制条目。

非常感谢你!

{     
        var startPlay:Boolean=false;
        ns.play("your-video-url");
        ns.pause();
        ns.seek(0);
        addEventListener(Event.ENTER_FRAME, myFunction);

        function myFunction(E:Event):void{
        var loaded:number=ns.byteloaded/ns.totalbyte; 
        var tmp:Number=Math.Ceil(loaded);
        if(tmp>=4){
        startPlay=true;
        removeEventListener(Event.ENTER_FRAME, myFunction);
        ns.resume();
        }
        //if you want to make a progress 
        //progressText.text="Please wait a second";

        }


    }

1 个答案:

答案 0 :(得分:0)

Sub LoopThroughDirectory()
Dim MyFile As String
Dim erow
Dim lRow As Long
Dim lCol As Long
Dim i as Long

MyFile = Dir("C:\Users\bmsand\Documents\Agatha\FY18\Test 2\")

Do While Len(MyFile) > 0
If MyFile = "zmaster.xlsm" Then
Exit Sub
End If

Workbooks.Open (MyFile)
Sheets("WorkTracker").Select
lRow = Cells(Rows.Count, 1).End(xlUp).Row
lCol = Cells(1, Columns.Count).End(xlToLeft).Column

For i = 4 to lRow
  If Cells(i,24).text = "reported" Then
  Else
      Exit for
  End if
Next i

Range(Cells(i, 23), Cells(lRow, lCol)).Copy
Application.DisplayAlerts = False
ActiveWorkbook.Close

erow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
ActiveSheet.Paste Destination:=Worksheets("Consolidate").Range(Cells(erow, 1), Cells(erow, 23))

MyFile = Dir
Loop

End Sub

For循环我包括检查未标记为“已报告”的第一个实例并相应地设置复制范围。这与原始代码的偏差很小,但我不建议使用.Select和AchtiveSheet。由于这些函数是易失性的,因此在关闭工作簿时会导致意外行为,例如失败。最好是完全限定所有物品,正如Shai Rado在7月31日对你的问题的回答中所指出的那样。