复制范围,偏移粘贴整个文件VBA

简单来说,数据如下所示:

ID | Value | Test | Score | 1 | 30 | a | b | 1 | 40 | c | d | 2 | 30 | d | a | 2 | 40 | e | c | 

… 130,000行。 值总是30或40,我想replace40,testing和分数,并把它放在30行看起来像这样。

 ID | Value | Test | Score | | | | 1 | 30 | a | b | 40 | c | d | 2 | 30 | d | a | 40 | e | c | 

我似乎无法绕过价值的抵消粘贴我的头。 我用Select.Copy等尝试过,而且由于性能问题,我只读了一些有关去路由的坏消息。 任何帮助将是欣赏!

谢谢,丹

编辑:更新 – 所以我得到它的工作,但它只会通过40行之前,我收到溢出错误 。 我知道这并不是最优化的,或者说是最好的办法,但是这是我唯一可以解决的问题。 任何投入都非常感激。

我发现有几个实例只有一个ID,因此我正在检查是否有两个ID,如果是 – 复制/粘贴,否则继续到下一行。

 Sub Macro4() ' Macro4 Macro Application.ScreenUpdating = False Range("H6:K6").Select Application.CutCopyMode = False Selection.Copy Range("L5").Select ActiveSheet.Paste Dim r As Integer, ID As Integer, validation As Integer r = 5 While r < 400 Range("V1:X1").Select Selection.ClearContents Range("V1").Select ID = Cells(r, 1).Value Selection.Value = ID Range("W1").Select ActiveCell.FormulaR1C1 = "=countifs(C[-22],RC[-1])" validation = Selection.Value If validation > 1 Then Cells(r + 1, 8).Select Range(Selection, Cells(r + 1, 11)).Select Selection.Copy Cells(r, 12).Select ActiveSheet.Paste r = r + 2 End If If validation = 1 Then r = r + 1 End If Wend Application.ScreenUpdating = True End Sub 

假设ID是A1,公式应该这样做:

在E2 40
在F2 = C3
在G2 = D3

向下复制(确保40不自动增量),在顶部selectF:G,select性粘贴,值…,在ColumnB中select40并删除选定的行。

我通过改变它来工作:

 Dim r As Integer, ID As Integer, validation As Integer 

至:

 Dim r As Integer, ID as Double, validation As Integer 

我读了一个地方,双重持有显着更大的价值 – 欣赏所有的帮助,无论!