2017-06-15 128 views
2

我有一個包含一組問題的數據集。然而,部分數據已經被複制(4列)給受訪者。這些需要根據他們的標題合併成4列(答案1,答案2,答案3,答案4)。VBA向左移動數據(每行需要移動4列,在需要保留的4列內可能有空白)

Heres the example image

我已經試過這樣:

Sub MoveLeft() 
Dim r As Long, rws As Long 

Application.ScreenUpdating = False 
    With ActiveSheet.UsedRange 
     rws = .Rows.Count 
     r = 1 
     On Error Resume Next 
     Do 
      .Rows(r).Resize(8000).SpecialCells(xlBlanks).Delete Shift:=xlToLeft 
      r = r + 8000 
     Loop While r <= rws 
     On Error GoTo 0 
    End With 
    Application.ScreenUpdating = True 
End Sub 

,但它沒有遵守我需要

+0

也許這會讓過程更清晰 1)看每一行從A開始,$ F 2)沿該行 3)複製的第一個非空首先第一個非空,用三格到一起右它 4)在這四個單元F:?該行 5)我這樣做了以後,自J – Fiz

回答

1

你不會是能夠做到的空白,在8000組行。每行都需要單獨完成。

Sub qwerty() 
    Dim r As Long, pos As Long 
    With Worksheets("sheet2") 
     With Intersect(.Range("F:AC"), .UsedRange.Cells) 
      For r = 2 To .Rows.Count 
       .Cells(r, 1).Resize(1, 4).ClearContents 
       pos = .Cells(r, 1).End(xlToRight).Column - .Cells(r, 1).Column 
       If pos <= .Columns.Count Then 
        pos = Application.Floor(pos, 4) + 1 
        .Cells(r, 1).Resize(1, 4) = .Cells(r, pos).Resize(1, 4).Value2 
       End If 
      Next r 
     End With 
    End With 
End Sub 
+0

開始後刪除多餘的專欄中,我想我不會將它添加到代碼正確,因爲它不是具有所需的影響。當你說'放棄前5列,那不是我的問題。我應該在圖表中添加前5列是完全正確的,並且在每個單元格中都有值。我的問題是,有一組4個答案需要左移每行。但有時候存在差距(如果答辯人沒有回答四個問題中的一個)。我需要保持這些差距,以便答案在圖片藍色欄中的正確結構中。 – Fiz

+0

您無法以8000行的組合來完成此操作。每行都需要單獨完成。 – Jeeped

+0

好的,謝謝!我從谷歌那裏得到了這段代碼,對此抱歉>。<。如果可以問,我將如何調整它來檢查每一行? – Fiz