1
我有这段代码。 DataSet被设置为一个变体。将列分配给数组VBA
DataSet = Selection.Value
工作正常,但有没有办法我可以改变它只是列A,特别是细胞A2至A502?我曾尝试将其设置为范围,但它不起作用。它也需要忽略空格,因为不是所有的单元格都会有内容。我试图消除突出显示单元格的需要,因为条目只会在特定范围内显示。
我有这段代码。 DataSet被设置为一个变体。将列分配给数组VBA
DataSet = Selection.Value
工作正常,但有没有办法我可以改变它只是列A,特别是细胞A2至A502?我曾尝试将其设置为范围,但它不起作用。它也需要忽略空格,因为不是所有的单元格都会有内容。我试图消除突出显示单元格的需要,因为条目只会在特定范围内显示。
尝试以下2个版本:
Option Explicit
Public Sub getNonemptyCol_ForLoop()
Dim dataSet As Variant, fullCol As Variant, i As Long, j As Long
Dim lrFull As Long, lrData As Long, colRng As Range
Set colRng = ThisWorkbook.Worksheets(1).Range("A2:A502")
fullCol = colRng
lrFull = UBound(fullCol)
lrData = lrFull - colRng.SpecialCells(xlCellTypeBlanks).Count
ReDim dataSet(1 To lrData, 1 To 1)
j = 1
For i = 1 To lrFull
If Len(fullCol(i, 1)) > 0 Then
dataSet(j, 1) = fullCol(i, 1)
j = j + 1
End If
Next
End Sub
Public Sub getNonemptyCol_CopyPaste() 'without using a For loop
Dim dataSet As Variant, ws As Worksheet
Application.ScreenUpdating = False
Set ws = ThisWorkbook.Worksheets(1)
With ws.UsedRange
ws.Activate
.Range("A2:A502").SpecialCells(xlCellTypeConstants).Copy
.Cells(1, (.Columns.Count + 1)).Activate
ActiveSheet.Paste
dataSet = ws.Columns(.Columns.Count + 1).SpecialCells(xlCellTypeConstants)
'dataSet now contains all non-blank values
ws.Columns(.Columns.Count + 1).EntireColumn.Delete
.Cells(1, 1).Activate
End With
Application.ScreenUpdating = True
End Sub
谢谢!第一个解决方案为我工作! – Nick
显示你尝试过什么到目前为止... – ManishChristian
要通过一个不理你需要通过范围内的一个迭代的空白,并加入到该数组如果不是空白的。要做到这一点'数据集=范围(“A2:A502”)。值' –