Vba 将4x2表格剪切粘贴成一行
我有一个Excel电子表格,上面有考试问题的答案。它被设置为一系列4x2模块。每个区块在第一列有4个选择题答案,然后在右边的列中有一个0或1表示正确或不正确 我想制作一个宏,以获取第二个、第三个和第四个答案以及相应的0/1单元格,并将它们粘贴到块中第一个答案的右侧。到目前为止,我已经有了这个宏,它成功地编辑了第一个答案和正确性指示符列: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
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。首先,您需要从底部开始,因为您要删除行。也似乎适得其反。我没有看到任何关于我的答案的评论,为什么它不起作用。