Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复制范围,偏移粘贴整个文件VBA_Vba_Excel_Copy Paste_Offset - Fatal编程技术网

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

复制范围,偏移粘贴整个文件VBA,vba,excel,copy-paste,offset,Vba,Excel,Copy Paste,Offset,简单地说,数据如下所示: ID | Value | Test | Score | 1 | 30 | a | b | 1 | 40 | c | d | 2 | 30 | d | a | 2 | 40 | e | c | 。。。13万行。值总是30或40,我想替换40、测试和分数,并将其放在一行中,以30表示如下 ID | Value | Test | Score | | | | 1 | 30

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

ID | Value | Test | Score | 
1  | 30    | a    | b     |
1  | 40    | c    | d     |
2  | 30    | d    | a     |
2  | 40    | e    | c     |
。。。13万行。值总是30或40,我想替换40、测试和分数,并将其放在一行中,以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
Sub宏4()
'宏4宏
Application.ScreenUpdating=False
范围(“H6:K6”)。选择
Application.CutCopyMode=False
选择,复制
范围(“L5”)。选择
活动表。粘贴
Dim r为整数,ID为整数,验证为整数
r=5
而r<400
范围(“V1:X1”)。选择
选择.ClearContents
范围(“V1”)。选择
ID=单元格(r,1)。值
Selection.Value=ID
范围(“W1”)。选择
ActiveCell.FormulaR1C1=“=countifs(C[-22],RC[-1])”
验证=选择。值
如果验证>1,则
单元格(r+1,8)。选择
范围(选择,单元格(r+1,11))。选择
选择,复制
单元格(r,12)。选择
活动表。粘贴
r=r+2
如果结束
如果验证=1,则
r=r+1
如果结束
温德
Application.ScreenUpdating=True
端接头

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

在E2
40

在F2=C3中
在G2=D3中


向下复制以适应(确保
40
不自动递增),选择F:G,粘贴特殊值。。。在顶部,过滤以选择B列中的
40
,并删除所选行。

我通过更改以下内容使其工作:

Dim r As Integer, ID As Integer, validation As Integer
致:


我在某个地方读到,double拥有更大的价值——无论如何,感谢所有的帮助

数据是否一致?i、 e.您是否总是有一行ID为,值为30,以及一行ID相同,值为40的对应行?如果有多行具有给定的ID和30,而只有一行或没有一行具有相同的ID和值40,该怎么办?这可能吗?数据总是一致的。有65000个唯一ID(130000/2),每个ID有一个40和一个30。第40行中有很多我想忽略的垃圾,我的示例没有显示出来-所以我只想抓住这行中的三个单元格(列是这样对齐的)。大约有100个实例,其中只有一个ID。
Dim r As Integer, ID as Double, validation As Integer