我有一个过滤数据的代码,存储在一个数组中,并将其粘贴到另一个工作表中。为什么我的数组粘贴公式并留下空值?我存储在数组中的值是公式,但我想粘贴这些值。
它应该存储这些值:

粘贴它们,而不是粘贴四个单元格的公式。公式为=O10,为空,依此类推。

.Range("$A7:$AJ7").AutoFilter field:=35, Criteria1:="<>", Criteria2:="<>0", Criteria2:="<>-0"
saLastRow = .Range("AI" & .Rows.Count).End(xlUp).Row
Set sFiltered = Worksheets("BusinessDetails").Range("AI8:AI" & saLastRow).SpecialCells(xlCellTypeVisible) 'SA
ReDim Arr(1 To sFiltered.Areas.Count)
I = 0
For Each V In sFiltered.Areas
I = I + 1
Arr(I) = V
'Debug.Print I
Next V
sFiltered.Copy Sheets("Step 4 CM").Range("S10")谢谢。
发布于 2020-09-22 21:02:32
复制数据不需要使用数组中介,我也不会使用sFiltered范围。一个直接的拷贝和PasteSpecial就是你所需要的。例如:
Sub TestFilteredRangeCopy()
With ThisWorkbook.Worksheets("Sheet1")
Dim rTable As Range: Set rTable = .Range("C3:D11")
rTable.Columns(2).SpecialCells(xlCellTypeVisible).Copy
.Range("C13").PasteSpecial xlPasteFormulas
.Range("D13").PasteSpecial xlValues
End With
End Sub如果你确实想要加载一个数组,那么下面这样的代码将会起作用:
Sub TestFilteredRangeCopy()
With ThisWorkbook.Worksheets("Sheet1")
Dim rTable As Range: Set rTable = .Range("C3:D11")
Dim v As Range, i As Long: i = 1
Dim arr() As Variant
If rTable.Columns(2).SpecialCells(xlCellTypeVisible).Cells.Count > 0 Then
ReDim arr(1 To rTable.Columns(2).SpecialCells(xlCellTypeVisible).Cells.Count)
For Each v In rTable.Columns(2).SpecialCells(xlCellTypeVisible)
arr(i) = v.Formula ' .Value
i = i + 1
Next v
.Range("C13").Resize(UBound(arr) - LBound(arr) + 1, 1) = WorksheetFunction.Transpose(arr)
End If
End With
End Subhttps://stackoverflow.com/questions/63999049
复制相似问题