我是StackExchange和VBA的新手,我試圖找到答案,但我遇到了問題!根據條件移動行的VBA代碼
我有一個電子表格,其中輸入信息並出現在工作表2列B-I中。我想要做的是,如果列H爲空,它會將整行移動到列L到S中。因此,根據H是空還是填充,我的數據將被拆分到同一工作表中的兩個單獨位置。
H列中的信息每次都會有所不同,所以我不能指定列中的內容,但有時候H列中沒有任何內容輸入,而且我希望它移動。
誰能告訴我如何做到這一點? 非常感謝 BEV
我是StackExchange和VBA的新手,我試圖找到答案,但我遇到了問題!根據條件移動行的VBA代碼
我有一個電子表格,其中輸入信息並出現在工作表2列B-I中。我想要做的是,如果列H爲空,它會將整行移動到列L到S中。因此,根據H是空還是填充,我的數據將被拆分到同一工作表中的兩個單獨位置。
H列中的信息每次都會有所不同,所以我不能指定列中的內容,但有時候H列中沒有任何內容輸入,而且我希望它移動。
誰能告訴我如何做到這一點? 非常感謝 BEV
試試這個爲出發點
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
移動的空白,
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
以前
整列'H'或只是列'H'列沒有什麼? –
如果該行在H列中沒有任何內容,我希望該行移動,如果列H中有某些內容,我希望該行保留。 – mistybev
那麼發生了什麼? – Davesexcel