如何将数组列表插入表中?

时间:2017-06-19 06:23:18

标签: excel vba excel-vba

我想知道是否有更快的方法将值列表插入到表对象中。我使用的方法是这样的:

1)清除表中的旧数据

2)找到向表中添加新的日期值并让表公式自动填充。

现在的问题是这个过程非常慢,因为我有大约7个表和4k +日期来填充。

通常,如果它只是粘贴这些值,那么excel的工作速度非常快。但是当涉及到表对象时,由于某种原因,它会变慢很多。

我认为通过操纵表格对象可以更快地完成这项工作,但到目前为止我还没有运气。

*table1
     1          2       3       4       5       6
 A   Date       1D      2D      3D      4D      5D
 B   1/1/2016   Formula Formula Formula Formula Formula
 C   2/1/2016   Formula Formula Formula Formula Formula
 D   3/1/2016   Formula Formula Formula Formula Formula
 E   4/1/2016   Formula Formula Formula Formula Formula
 F   5/1/2016   Formula Formula Formula Formula Formula
 G   6/1/2016   Formula Formula Formula Formula Formula
 H   7/1/2016   Formula Formula Formula Formula Formula

Dim ws(), datelist() As Variant
For i = 1 To UBound(ws)
    For j = 1 To UBound(datelist)
        Sheets(CStr(ws(i))).Cells(j + 1, 1) = datelist(j)
    Next j
Next i

* ws()指的是我存储工作表名称的数组

* datelist()是指我想要粘贴到单元格中的日期。

不确定我对问题的描述是否足够清楚。

1 个答案:

答案 0 :(得分:1)

快速搜索this answer

要将其应用于您的案例,而不是: -

For i = 1 To UBound(ws)
    For j = 1 To UBound(datelist)
        Sheets(CStr(ws(i))).Cells(j + 1, 1) = datelist(j)
    Next j
Next i

使用: -

For i = 1 To UBound(ws)
    Sheets(CStr(ws(i))).Range("A" & j + 1 & ":A" & j + (1 + UBound(datelist))) = WorksheetFunction.Transpose(datelist)
Next i