Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 将4x2表格剪切粘贴成一行_Vba_Excel - Fatal编程技术网

Vba 将4x2表格剪切粘贴成一行

Vba 将4x2表格剪切粘贴成一行,vba,excel,Vba,Excel,我有一个Excel电子表格,上面有考试问题的答案。它被设置为一系列4x2模块。每个区块在第一列有4个选择题答案,然后在右边的列中有一个0或1表示正确或不正确 我想制作一个宏,以获取第二个、第三个和第四个答案以及相应的0/1单元格,并将它们粘贴到块中第一个答案的右侧。到目前为止,我已经有了这个宏,它成功地编辑了第一个答案和正确性指示符列: Range("A2:B2").Select Selection.Cut Range("C1").Select ActiveSheet.Paste Ran

我有一个Excel电子表格,上面有考试问题的答案。它被设置为一系列4x2模块。每个区块在第一列有4个选择题答案,然后在右边的列中有一个0或1表示正确或不正确

我想制作一个宏,以获取第二个、第三个和第四个答案以及相应的0/1单元格,并将它们粘贴到块中第一个答案的右侧。到目前为止,我已经有了这个宏,它成功地编辑了第一个答案和正确性指示符列:

Range("A2:B2").Select
Selection.Cut
Range("C1").Select
ActiveSheet.Paste
    Range("A3:B3").Select
Selection.Cut
Range("E1").Select
ActiveSheet.Paste
    Range("A4:B4").Select
Selection.Cut
Range("G1").Select
ActiveSheet.Paste
我如何更改它,使其可以执行单元格2、3、4、6、7、8、10、11、12等,但跳过1、5、9等

谢谢

给定以下输入:

使用代码:

Sub QReform()

Dim CurRow As Long, LastRow As Long

LastRow = Range("A" & Rows.Count).End(xlUp).Row

For CurRow = LastRow To 1 Step -1
    If ((CurRow - 1) / 5) - ((CurRow - 1) \ 5) = 0 Then
        Cells(CurRow, 2).Value = Cells(CurRow, 1).Offset(1, 0).Value
        Cells(CurRow, 3).Value = Cells(CurRow, 1).Offset(1, 1).Value
        Cells(CurRow, 4).Value = Cells(CurRow, 1).Offset(2, 0).Value
        Cells(CurRow, 5).Value = Cells(CurRow, 1).Offset(2, 1).Value
        Cells(CurRow, 6).Value = Cells(CurRow, 1).Offset(3, 0).Value
        Cells(CurRow, 7).Value = Cells(CurRow, 1).Offset(3, 1).Value
        Cells(CurRow, 8).Value = Cells(CurRow, 1).Offset(4, 0).Value
        Cells(CurRow, 9).Value = Cells(CurRow, 1).Offset(4, 1).Value
        Cells(CurRow, 1).Offset(4, 0).EntireRow.Delete xlShiftUp
        Cells(CurRow, 1).Offset(3, 0).EntireRow.Delete xlShiftUp
        Cells(CurRow, 1).Offset(2, 0).EntireRow.Delete xlShiftUp
        Cells(CurRow, 1).Offset(1, 0).EntireRow.Delete xlShiftUp
    End If
Next CurRow

End Sub
我会给你这个:


我最终将这些列移动到文本编辑器中,并使用regex来完成这项工作,因为这是一种更简单的方法。我搜索了由4行组成的块,并在适当的地方用制表符替换了返回值,这样它就可以放在一行上,并且可以轻松地返回Excel。

首先,您需要从底部开始,因为您要删除行。也似乎适得其反。我没有看到任何关于我的答案的评论,为什么它不起作用。