Arrays Excel VBA-将新行写入现有数组

Arrays Excel VBA-将新行写入现有数组,arrays,excel,multidimensional-array,vba,Arrays,Excel,Multidimensional Array,Vba,我不知道如何做到这一点,所以任何帮助将是可怕的。使用一个数组,我将一行一行地发送到excel工作簿,该工作簿进行大量计算(太多而无法编程),并输出13个值,我想将这些值存储到另一个数组中。这可能吗 Dim aP() as Variant Dim wbR as Workbook Dim wsR as Worksheet Dim i as Long Set wbR = Workbooks.Open([directory]) Set wsR = wbR.Sheets("Sheet1") aP = A

我不知道如何做到这一点,所以任何帮助将是可怕的。使用一个数组,我将一行一行地发送到excel工作簿,该工作簿进行大量计算(太多而无法编程),并输出13个值,我想将这些值存储到另一个数组中。这可能吗

Dim aP() as Variant
Dim wbR as Workbook
Dim wsR as Worksheet
Dim i as Long

Set wbR = Workbooks.Open([directory])
Set wsR = wbR.Sheets("Sheet1")
aP = Application.Transpose(Activesheet.Range("A1:Z100"))
For i = 1 to 100
wsR.Range("A1:A26") = Application.Index(aP, [row(1:26)], i)
'this is where I need help. Want to paste range C1:C13 into another array,
'so that I can paste it back into the activesheet. I do not wish to paste it 
'straight back to the worksheet, but accumulate all the data into array and 
'and then paste the array into the activesheet
Next i

Exit Sub

看起来您正试图使代码超高效。我做了一些改变,可能会加快速度

Sub BuildArrayR100C26() Dim arData(99, 12) Dim arCalculations Dim i As Integer, j As Integer Dim wbR As Workbook Dim wsR As Worksheet Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set wbR = Workbooks.Open([directory]) Set wsR = wbR.Sheets("Sheet1") For i = 0 To 99 wsR.Range("A1:A26").Value = Application.Transpose(ActiveSheet.Range("A1:Z1").Offset(i)) Application.Calculate arCalculations = wsR.Range("C1:C13").Cells(j + 1) For j = 0 To 12 arData(i, j) = arCalculations(j + 1, 1) Next Next i Sheet2.Range("A1").Resize(UBound(arData, 1), UBound(arData, 2)).Value = arData Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub 关闭屏幕更新和计算

Application.ScreenUpdating=False

Application.Calculation=xlCalculationManual

粘贴要计算的新数据后重新计算

应用。计算


看起来您正试图使代码超高效。我做了一些改变,可能会加快速度

Sub BuildArrayR100C26() Dim arData(99, 12) Dim arCalculations Dim i As Integer, j As Integer Dim wbR As Workbook Dim wsR As Worksheet Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set wbR = Workbooks.Open([directory]) Set wsR = wbR.Sheets("Sheet1") For i = 0 To 99 wsR.Range("A1:A26").Value = Application.Transpose(ActiveSheet.Range("A1:Z1").Offset(i)) Application.Calculate arCalculations = wsR.Range("C1:C13").Cells(j + 1) For j = 0 To 12 arData(i, j) = arCalculations(j + 1, 1) Next Next i Sheet2.Range("A1").Resize(UBound(arData, 1), UBound(arData, 2)).Value = arData Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub 关闭屏幕更新和计算

Application.ScreenUpdating=False

Application.Calculation=xlCalculationManual

粘贴要计算的新数据后重新计算

应用。计算


是的,绝对有可能。发布你当前的代码,我相信人们会有建议。我已经编辑了这个问题以包含我当前的代码是的,绝对可能。发布您当前的代码,我相信人们会有建议。我已将问题编辑为包含我当前的代码。看起来您只是将输入数据复制到arData。我已经在我的代码-aP=Application.Transpose(Activesheet.Range(“A1:Z100”)中完成了这项工作。然后在循环中,我将aP的一行粘贴到wsR工作表中,工作表进行计算,然后我需要另一个数组,该数组从wsR工作表和单元格(C1:C13)将一行添加到同一个循环中,我要将该数组粘贴回活动工作簿,但Sheet2Tomas-如果我错了,请纠正我,但是,你的循环是否将计算复制到一个数组中,它是一个单元格一个单元格地进行的?如果是的话,是否有可能对C1到C13的整个范围进行测量阵列是多维的。在VBA中,我不知道如何只跨一个维度复制数据。在VBA中,数组不是对象,没有附加到它的方法。无法执行数组[0]。推送数组{}。您可以创建一个由一维数组组成的一维数组,然后创建数组(0)(0)=范围(“A1:Z1”)。值,但没有机制将其粘贴回范围。看起来您只是将输入数据复制到arData。我已经在我的代码-aP=Application.Transpose(Activesheet.Range(“A1:Z100”)中完成了这项工作。然后在循环中,我将aP的一行粘贴到wsR工作表中,工作表进行计算,然后我需要另一个数组,该数组从wsR工作表和单元格(C1:C13)将一行添加到同一个循环中,我要将该数组粘贴回活动工作簿,但Sheet2Tomas-如果我错了,请纠正我,但是,你的循环是否将计算复制到一个数组中,它是一个单元格一个单元格地进行的?如果是的话,是否有可能对C1到C13的整个范围进行测量阵列是多维的。在VBA中,我不知道如何只跨一个维度复制数据。在VBA中,数组不是对象,没有附加到它的方法。无法执行数组[0]。推送数组{}。您可以创建一个由一维数组组成的一维数组,然后创建数组(0)(0)=范围(“A1:Z1”)。值,但没有机制将其粘贴回范围。