2015-12-23 45 views
0

我是StackExchange和VBA的新手,我試圖找到答案,但我遇到了問題!根據條件移動行的VBA代碼

我有一個電子表格,其中輸入信息並出現在工作表2列B-I中。我想要做的是,如果列H爲空,它會將整行移動到列L到S中。因此,根據H是空還是填充,我的數據將被拆分到同一工作表中的兩個單獨位置。

H列中的信息每次都會有所不同,所以我不能指定列中的內容,但有時候H列中沒有任何內容輸入,而且我希望它移動。

誰能告訴我如何做到這一點? 非常感謝 BEV

+0

整列'H'或只是列'H'列沒有什麼? –

+0

如果該行在H列中沒有任何內容,我希望該行移動,如果列H中有某些內容,我希望該行保留。 – mistybev

+0

那麼發生了什麼? – Davesexcel

回答

1

試試這個爲出發點

Option Explicit 
Const FIRST_ROW As Long = 2 
Const LAST_ROW As Long = 100 
Const FIRST_SOURCE_COL As Long = 2 'column B 
Const LAST_SOURCE_COL As Long = 9 'column I 
Const TRIG_COL As Long = 8 'column H 
Const GAP As Long = 2 'columns gap between original data and moved data 

Sub moveit() 
Dim r As Long 
Dim c As Long 
Const DIST As Long = LAST_SOURCE_COL - FIRST_SOURCE_COL + GAP + 1 

For r = FIRST_ROW To LAST_ROW 
    'check if we need to move 
    If Cells(r, TRIG_COL).Value = "" Then 
    'move the data 
     For c = FIRST_SOURCE_COL To LAST_SOURCE_COL 
      Cells(r, c + DIST).Value = Cells(r, c).Value 
      Cells(r, c).Value = "" 
     Next 
    End If 
Next 
End Sub 
+0

謝謝...這很好分開它,並把它放在另一個頁面上,但我也需要它從原始頁面消失,如果可能的話? – mistybev

+0

它將它移動到新頁面,而不是同一頁面上的不同位置。 – mistybev

1

移動的空白,

Sub MoveBlanks() 
    Dim lRws As Long, sh As Worksheet, x 

    Set sh = Sheets("Sheet2") 

    With sh 
     lRws = .Cells(.Rows.Count, "B").End(xlUp).Row 
     For x = lRws To 2 Step -1 
      If .Cells(x, "H") = "" Then 
       .Range(.Cells(x, "B"), .Cells(x, "I")).Cut .Cells(.Rows.Count, "L").End(xlUp).Offset(1) 
       .Range(.Cells(x, "B"), .Cells(x, "I")).Delete Shift:=xlUp 
      End If 
     Next x 
    End With 

End Sub 

以前

enter image description here

enter image description here

+0

移動空白似乎沒有做任何事...對不起 – mistybev

+0

列H,第23行是空白 - 我現在正在看它... 1-22被填充,但沒有任何東西移動.... – mistybev

+0

是的, B列將始終填充,它的列H可以是空白的 - 這是我希望它在移動整行之前檢查的那個。如果這是有意義的(我只是在學習!!!) – mistybev