VBA双循环连续和不连续

为了清楚起见,重写这个我觉得原文太混乱,太长了。

我试图从名为“文件”的工作表中抓取连续的时间序列数据,通过名为“数据”的工作表进行一系列计算,复制这些结果并将其作为静态数据粘贴到“数据“,然后重复该过程,直到处理完所有数据。

过去五天我一直在努力的问题是放置第二个函数。 如果我将它embedded“i”中,它会将每个单个结果写入非连续范围的25次。 如果我把它放在“我”之外,它完成“我”然后只写最后的结果到每个25个位置。

我很确定,在这一点上,我正在使用错误的结构,我猜一个“For”循环不是第二个函数的方法,但我是如此新,我不能让我的脑袋缠绕如何实施,否则。 我也试图将“n”作为一个数组结构,但是从来没有能够得到debugging,也不知道这是正确的方法。

Sub getData() ' Process individual time series Dim Data As Worksheet, Files As Worksheet Dim fLastRow As Long, dLastRow As Long Dim i As Long, n As Long Application.ScreenUpdating = False Set Data = ActiveWorkbook.Sheets("Data") Set Files = ActiveWorkbook.Sheets("Files") fLastRow = Files.Range("A" & Files.Rows.Count).End(xlUp).Row dLastRow = Data.Range("F" & Data.Rows.Count).End(xlUp).Row ' Process three column data Files.Range("A1:C" & fLastRow).Copy Data.Range("A3").PasteSpecial xlPasteValuesAndNumberFormats Data.Range("F202:P" & dLastRow).Copy Data.Range("T202").PasteSpecial xlPasteValuesAndNumberFormats ' Process single column data For i = 4 To 26 Files.Activate Range(Cells(1, i), Cells(3509, i)).Copy Data.Range("C3").PasteSpecial xlPasteValuesAndNumberFormats Data.Range("F202:P" & dLastRow).Copy For n = 32 To 296 Step 12 ' <~~ this is the problem. inside or outside "i" doesn't work. Data.Activate Range(Cells(202, n), Cells(3511, n)).PasteSpecial xlPasteValuesAndNumberFormats Next n ' <~~ i know this is the problem just not sure what the answer is. Next i ' Post processing Data.Cells.Columns.AutoFit Application.CutCopyMode = False Application.ScreenUpdating = True Data.Activate Data.Range("A1").Select End Sub 

你可以使用一个variables; ñ。 继续步进12,但是你想放置ivariables的地方,用n 除12,然后加4

直到我更好的代码,我必须解决这个问题…我在“文件”工作表上的数据,以符合数据表上的步骤。 为了保持数据在“文件”选项卡上的可读性,我只是隐藏了添加的列。 这使我可以使用“我”复制粘贴操作。 我相信有一个更好的方法,但这符合我的需求,比我开始的原始代码快得多。

 Sub getData() ' Process individual time series Dim Data As Worksheet, Files As Worksheet Dim fLastRow As Long, dLastRow As Long, i As Long Set Data = ActiveWorkbook.Sheets("Data") Set Files = ActiveWorkbook.Sheets("Files") fLastRow = Files.Range("A" & Files.Rows.Count).End(xlUp).Row dLastRow = Data.Range("F" & Data.Rows.Count).End(xlUp).Row Application.ScreenUpdating = False ' Process data Files.Range("A1:C" & fLastRow).Copy Data.Range("A3").PasteSpecial xlPasteValuesAndNumberFormats Data.Range("F202:P" & dLastRow).Copy Data.Range("T202").PasteSpecial xlPasteValuesAndNumberFormats Files.Range("D1:JH" & fLastRow).Copy Data.Range("AF3520").PasteSpecial xlPasteValuesAndNumberFormats For i = 32 To 296 Step 12 Data.Range(Cells(3520, i), Cells(7103, i)).Copy Data.Range("C3").PasteSpecial xlPasteValuesAndNumberFormats Data.Range("F202:P" & dLastRow).Copy Data.Range(Cells(202, i), Cells(3511, i)).PasteSpecial xlPasteValuesAndNumberFormats Next i ' Post processing Data.Range(Cells(3520, 32), Cells(7103, 296)).ClearContents Data.Cells.Columns.AutoFit Application.CutCopyMode = False Application.ScreenUpdating = True Range("A1").Select End Sub