以下代码将值表转换为单个列。删除列中的空白单元格
问题是,在我的表格中,每列中的行数减少一个。类似于下面显示的表格。
我很新写代码,只知道非常基础。我复制了一个在线发现的脚本,将一系列值转换为单个列。我写的删除任何空白单元的代码部分会极大地减慢代码的速度。将大约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/ –