2015-05-01 27 views
0

我有一個電子表格,基本上有兩個不同年份的數據集,我將它們放入一個電子表格中進行比較,並將行添加到任意一組數據中。我已經有一個宏,它比較我需要的單元格並插入行以排列數據,有時它會錯過某些內容,並且將一行空白行添加到其中一個不應存在的數據集中,然後將所有內容它出了問題。因此,我必須修復區域中的對齊方式,在未對齊後刪除相應數據集中的所有空白行,然後重新運行我的宏,希望它不會再次混亂。根據用戶選擇刪除空白行

因此,爲了加快空行刪除部分,我試圖讓一個宏爲我做這個。例如,我有來自2014年的數據,從ADC和2010年的數據從DEEG。我試圖創建另一個宏,這將允許我選擇一系列單元格,如DE69:EG69,它將遍歷同一列範圍中的每一行​​,DE71:EG71等,如果範圍內的所有單元格均爲空白,請刪除範圍並向上移動數據。我嘗試在網上找到的所有東西似乎都會刪除整行,而不僅僅是我選擇的範圍。

我甚至嘗試了一些方法,說它可以通過選擇範圍並運行宏來工作,但這似乎也不起作用。

因此,我試圖記錄宏,然後進行所需的編輯,但我仍然有問題。我試圖使用其他宏的一些代碼來允許輸入框彈出,並將列字母放在數據集的開始和結束位置,但目前爲止它不工作。

Option Explicit 
Sub delee() 
Dim colX As String 
Dim colX2 As String 
colX = UCase(InputBox("Enter the left column", "Compare Columns", "A")) 
colX2 = UCase(InputBox("Enter the last column", "Compare Columns", "E")) 
    Range(colX & "1000000:" & colX2 & "1000000").Select 
    Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp 
End Sub 

回答

0

所以,如果有人在搜索時發現了這個問題,下面是我用來得到我需要的東西。本質上,一個輸入框會出現並詢問選擇中的第一個單元格和選擇中的最後一個單元格,在第一列選擇中過濾掉空白,選擇並刪除空白行。這可能需要一段時間取決於您的數據的大小,但它的工作原理。感謝提供建議和幫助的兩位!

Sub deleteblanks() 

Dim colX As String 
Dim zzz As String 
Dim lastRow As Long 


lastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count 

MsgBox lastRow 

colX = UCase(InputBox("Enter The Start Of Data To Be Filtered", "Delete Blanks", "A")) 
zzz = UCase(InputBox("Enter The End of Data To Be Filtered(Last Column Last Row)", "Delete Blanks", "AM65500")) 

Range(colX & ":" & zzz).Select 
Selection.AutoFilter 
ActiveSheet.Range(colX & ":" & zzz).AutoFilter Field:=1, Criteria1:="=" 
ActiveWindow.SmallScroll Down:=-3 
Range(colX & ":" & zzz).Select 
Selection.SpecialCells(xlCellTypeVisible).Select 
ActiveSheet.ShowAllData 
Selection.Delete Shift:=xlUp 
End Sub 
0

執行以下操作:在同一行上

「錄製宏」

亮點3或4個細胞。

右鍵單擊「刪除」,選擇「換行」。

單擊確定。

然後點擊「停止錄製」。

進入並查看您的宏。

我結束了與此:

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
    Range("A5:B5").Select 
    Selection.Delete Shift:=xlUp 
End Sub 

所以,顯示你的 「基本常識」 ..你需要做兩件事情:

1) "Select" your range you want to delete. (sounds like you can build this, since you'll know what row you want, and you know what columns, so just build the string, and: `Range(yourstring).select` 

2) tell it to delete + shift up .. 

希望幫助.. :)

+1

這並沒有解決檢查空白行問題,這似乎是這裏的核心問題。 –

+0

謝謝同上,但拜倫是正確的,主要問題是試圖告訴宏只刪除某一行的範圍,如果所有的單元格都是空白的。 – xcallmeclayx

+0

啊,好吧...沒有煩惱..讓我想一下更多:) – Ditto

1

給此代碼一張

Dim BlankHits as Long 
Dim NormalHits as Long 
For Each Target in Selection 
NormalHits = NormalHits + 1 
    If Target.Value = "" Then 
     BlankHits = BlankHits + 1 
    End If 
    If BlankHits = NormalHits Then 
     Selection.Delete Shift:= xlUp 
    End If 
Next Target 

它目前搜索您選擇的單元格。如果你想要通過不同的範圍搜索,那麼改變選擇的範圍到你想要的任何範圍。希望這可以幫助。

+0

嗨相當,謝謝你的回覆!我試過你的代碼,但是當我運行它時,我得到了「變量未定義」錯誤。 – xcallmeclayx

+0

好吧,我得到它運行,但它似乎刪除我的選擇,如果任何單元格中的選擇是空白的,而不是要求他們都是空白的。 – xcallmeclayx

+0

嗯,當我測試它的代碼完全符合你的規格。如果選擇中的每個單元都是空白的,它只會刪除行。所以我不確定你的問題是什麼。 – FairlyLegit