当我将数据导入数组时,在 Excel 中使用表格的速度要快得多。但是 - 我该如何反过来工作?
我有一个 1 个暗淡数组,需要将每个数据写入/保存在 Listobject 表中的新行/记录中。
我已经做了一些准备工作:
Dim MyTable As ListObject
Set MyTable = Ws.ListObjects("TestTbl")
Dim NewRow As ListRow
Set NewRow = MyTable.ListRows.Add(AlwaysInsert:=True)
For i = 1 To MyTable.ListColumns.Count
If Len(myArr(rowToCopy(s), i)) > 0 Then
On Error Resume Next
NewRow.Range(i).Formula = "=" & Replace(myArr(rowToCopy(s), i), "xxx", "SheetName")
On Error GoTo 0
Else
NewRow.Range(i).Formula = "=" & "#N/A"
End If
Next i
这确实有效 - 但速度很慢。我将每个值复制并与每个 NewRow.Range(i) 进行比较 - 这有点慢...实际文件中有 144 列乘以 6 行。
是否可以用数据创建一个数组,然后将整个数组复制到表中,一次完成?
我想;
dim valueArray(1 to 144) as String
for i = 1 to 144
If Len(myArr(rowToCopy(s), i)) > 0 Then
On Error Resume Next
valueArray(i).Formula = "=" & Replace(myArr(rowToCopy(s), i), "xxx", "SheetName")
On Error GoTo 0
Else
valueArray(i).Formula = "=" & "#N/A"
End If
next i
然后 - 以某种方式,将整个数组一步复制到表中,作为一个新行...... 为什么我不能??
OBS:我使用另一个带有通用“公式”的表,并在新表中创建带有功能公式的新行。这就是为什么我使用.Formula.
为了插入一维数组中包含的值,请尝试下一个改编代码:
Sub InsertValsInNewTableRow()
Dim MyTable As ListObject,ws As Worksheet, arr, i As Long
Set ws = Workseets("MySheet") 'please, use here your real sheet!!!
Set MyTable = ws.ListObjects("TestTbl")
Dim NewRow As listRow
Set NewRow = MyTable.ListRows.Add(AlwaysInsert:=True)
ReDim arr(1 To NewRow.Range.Columns.count)
For i = 1 To UBound(arr)
arr(i) = i * 10
Next i
NewRow.Range.Resize(, UBound(arr)).value = arr
End Sub