我有一個包含9列的數據集。我想檢查每一行以查看最後3列是否爲空。如果所有3個都是空的,我想刪除該行。我目前正試圖在VBA中做到這一點,但我是一個編程新手,發現自己完全不知所措。在Excel中刪除一組3列中的缺失數據
我寫的僞代碼如下:
For Row i
If(Col 1 & Col 2 & Col 3) = blank
Then delete Row i
Move on to next Row
我有一個包含9列的數據集。我想檢查每一行以查看最後3列是否爲空。如果所有3個都是空的,我想刪除該行。我目前正試圖在VBA中做到這一點,但我是一個編程新手,發現自己完全不知所措。在Excel中刪除一組3列中的缺失數據
我寫的僞代碼如下:
For Row i
If(Col 1 & Col 2 & Col 3) = blank
Then delete Row i
Move on to next Row
假設你有至少一行是始終填寫,您可以使用以下命令:
Dim LR as Long
Dim i as Integer
LR = Cells(Sheets("REF").Rows.Count,1).End(xlUp).Row
For i = 1 to 9
If Range(Cells(LR-3,i),(Cells(LR,i)).Value="" Then
Columns(i).Delete
Else:
End If
Next i
該作品通過將最後一行定義爲LR,並將變量定義爲i。您將檢查列「i」以確定列的最後3行是否爲「」,也就是說它是空白的;有人可能會嘗試使用ISBLANK(),但不能用於數組。如果這是真的,那麼你將刪除列,我。該代碼然後將移動到下一個我。使用i的FOR LOOP從1開始併到9,這對應於從第1列(A)開始到第9列(I)結束。
編輯:
我似乎都誤讀了這應該是空的,哪些是應該被刪除,在列/行...此代碼將被重新寫成方面:
Dim LR as Long
Dim i as Integer
LR = Cells(Sheets("REF").Rows.Count,1).End(xlUp).Row
For i = LR to 2 Step -1 'Assumes you have headers in Row1
If AND(ISBLANK(Cells(i,7)),ISBLANK(Cells(i,8)),ISBLANK(Cells(i,9)) Then
Rows(i).Delete
End If
Next i
的重大變化正在檢查是各行中的最後3個欄都是空的,ISBLANK(),改變的是,如果滿足條件的行被刪除,並通過改變什麼循環。
下面是另一個答案,假設您的最後三列以「G」,「H」,「I」開頭。
Sub DeleteRowWithLastThreeColumnsBlank()
Dim N As Long, i As Long
N = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To N
If Cells(i, "G").Value = "" And Cells(i, "H").Value = "" And Cells(i, "I").Value = "" Then
Rows(i).EntireRow.Delete
N = Cells(Rows.Count, "A").End(xlUp).Row
End If
Next i
End Sub
對不起,此代碼不起作用。刪除第一行後,行數會發生什麼變化? – Comintern
我會去像如下
Dim iArea As Long
With Range("E:G") '<--| change "E:G" to your actual last three columns indexes
If WorksheetFunction.CountBlank(.Cells) < 3 Then Exit Sub
With .SpecialCells(xlCellTypeBlanks)
For iArea = .Areas.Count To 1 Step -1
If .Areas(iArea).Count Mod 3 = 0 Then .Areas(iArea).EntireRow.Delete
Next
End With
End With
@mathvxn,你通過它嗎? – user3598756
我真的想出了一個使用JMP的解決方案。一旦找到合適的工具,這很簡單! – mathvxn
有如何基於此特定條件刪除行的例子不勝枚舉。 [這個答案](http://stackoverflow.com/q/37011632/4088852)例如在'If'條件下只需要一對'And's。 – Comintern
空字符串是否被視爲「空單元格」?是「空」的單元格的*值*或「空」的任何單元格*實際*空的,即使沒有公式在其中?如何檢查「空」是非常不同的,這取決於你如何澄清「空」的含義。 –
空的含義沒有包含在單元格中。沒有空格,沒有數據,什麼都沒有。 – mathvxn