我正在尝试编写一些简单的VBA,我只是想让它遍历我的电子表格中的所有列,如果有值,则将其复制到Sheet2,在那里制作一个长列表。
我在某个地方出错了,我希望它能够让我知道我哪里出错了。
Dim c As Integer
Dim r As Integer
Dim w As Integer
Dim l As Integer
Dim p As Integer
' Define w as the width of the dataset
w = ThisWorkbook.Sheets("Sheet1").Cells(100000, 1).End(xlUp).Column
' Run this for each column
For c = 1 To w
' Define l as the length of the column
l = ThisWorkbook.Sheets("Sheet1").Cells(c, 100000).End(xlUp).Row
' Run this for each cell in the column
For r = 1 To l
' If there is something in the cell, copy it across to Sheet 2 Column 1
If Cells(l, w).Value <> "" Then
ThisWorkbook.Sheets("Sheet2").Cells(1, p) = Cells(l, w).Value
p = p + 1
End If
Next r
Next c
End Sub
解决方案会很棒,但知道我哪里出错会更好 - 我真的想了解这里的问题是什么。
干杯,
汤姆
答案 0 :(得分:1)
如果我遇到了您的问题,您的代码中会有一些错误的假设
但首先让我们看看你的实际需要是什么:
Sub main()
Dim p As Long
Dim rng As Range, cell as Range
With ThisWorkbook
Set rng = .Worksheets("Sheet1").UsedRange.SpecialCells(xlCellTypeConstants)
With .Worksheets("Sheet2")
For Each cell In rng
p = p + 1
.Cells(1, p) = cell.Value
Next cell
End With
End With
End Sub