想从三维数组中提取二维数组

时间:2013-10-25 11:00:02

标签: lotus-notes lotusscript

我正在使用Notes中的LotusScript代理从Lotus Notes数据库填充多表excel电子表格。 为了优化代码,我首先在数组中构建所有数据,然后将其转储到Excel中,因为一次写入数组要快得多,而不是单独写入每个单元格或行。

所以我有一个三维数组,用于保存

定义的数据
ReDim sheetData(sheets,rows,columns)

使用视图导航器条目填充数组没有问题,但是当我写入Excel时,我想做

For c = 0 to sheets
   With xlSheet(c+1)
      .Range(.Range.Cells(1,1) , .Range.Cells(rows+1, columns+1).Value = sheetData(c)
   End With
Next

这显然不起作用,因为我需要为sheetData提供三个下标。

那么提取行和列数据的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

你有两个可能性: 您可以遍历所有行和列并直接分配值:

With xlSheet(c+1)
    For row = 1 to rows + 1
        For col = 1 to columns + 1
           .cells( row, col ) = sheetData(c,row,col)
        Next
    Next
End With

或者 - 如果您可以将一个二维数组分配给一个范围(我不知道),您可以使用二维数组列表:

ReDim sheetData(row,col)列为变体

那看起来像 sheetData( 1 ) = [1,2]

然后分配看起来像:

.Range(.Range.Cells(1,1) , .Range.Cells(rows+1, columns+1).Value = sheetData( c )

但是:填充数组列表可能很痛苦(使用ReDim创建一个临时的二维数组,填充该数组并将其分配为`sheetData(sheet)= tempArray