以下代碼將值錶轉換爲單個列。刪除列中的空白單元格
問題是,在我的表格中,每列中的行數減少一個。類似於下面顯示的表格。
我很新寫代碼,只知道非常基礎。我複製了一個在線發現的腳本,將一系列值轉換爲單個列。我寫的刪除任何空白單元的代碼部分會極大地減慢代碼的速度。將大約250,000點轉換爲一列大約需要9個小時。我希望減少處理時間,因爲這是我期望經常使用的腳本。
Sub CombineColumns()
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim rng As Range
Dim iCol As Long
Dim lastCell As Long
Dim K As Long
K = 484
'set K equal to the number of data points that created the range
Set rng = ActiveCell.CurrentRegion
lastCell = rng.Columns(1).Rows.count + 1
For iCol = 2 To rng.Columns.count
Range(Cells(1, iCol), Cells(rng.Columns(iCol).Rows.count, iCol)).Cut
ActiveSheet.Paste Destination:=Cells(lastCell, 1)
lastCell = lastCell + rng.Columns(iCol).Rows.count
Next iCol
Dim z As Long
Dim m As Long
z = K^2
For Row = z To 1 Step -1
If Cells(Row, 1) = 0 Then
Range("A" & Row).Delete Shift:=xlUp
Application.StatusBar = "Progress: " & Row & " of z: " & Format((z - Row)/z, "Percent")
DoEvents
End If
Next
Application.StatusBar = False
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
樣本表結構
1.對於http://codereview.stackexchange.com,這是一個更好的問題2.當你這樣做時,**不要**張貼代碼和示例數據的圖片。將代碼和數據直接粘貼到帖子中,然後突出顯示它們,然後按Ctrl-k進行格式化。 –
請直接在這裏發佈代碼。然後我可以運行它。你可以嘗試在兩部分之間放置一個msgbox,看看第二部分是否比第一部分慢。我認爲這是真的,因爲你刪除行和Excel然後需要移動很多單元格。 –
我投票結束這個問題作爲題外話,因爲這個問題屬於http://codereview.stackexchange.com/ –