简体   繁体   English

如何使用具有一系列值的自动填充/填充

[英]How to use Autofill/Filldown with a range of values

I have been trying to get Excel to apply a formula over a set of columns and then extend the pattern across the entire set of rows.我一直试图让 Excel 将公式应用于一组列,然后将模式扩展到整个行集。 This has led to the following code:这导致了以下代码:

For i = 0 To avgsheetNames.Count - 1
If Contains(CStr(avgsheetNames(i)), "Scores") = True Then
    With mainWorkBook.Worksheets(avgsheetNames(i))
        strFormulas(1) = "=SUM(Aggregated_Internal_Scores!I2:I7)/6"
        strFormulas(2) = "=SUM(Aggregated_Internal_Scores!J2:J7)/6"
        strFormulas(3) = "=SUM(Aggregated_Internal_Scores!K2:K7)/6"
        strFormulas(4) = "=SUM(Aggregated_Internal_Scores!L2:L7)/6"
        strFormulas(5) = "=SUM(Aggregated_Internal_Scores!M2:M7)/6"
        strFormulas(6) = "=SUM(Aggregated_Internal_Scores!N2:N7)/6"
        
        strFormulas2(1) = "=SUM(Aggregated_Internal_Scores!I8:I13)/6"
        strFormulas2(2) = "=SUM(Aggregated_Internal_Scores!J8:J13)/6"
        strFormulas2(3) = "=SUM(Aggregated_Internal_Scores!K8:K13)/6"
        strFormulas2(4) = "=SUM(Aggregated_Internal_Scores!L8:L13)/6"
        strFormulas2(5) = "=SUM(Aggregated_Internal_Scores!M8:M13)/6"
        strFormulas2(6) = "=SUM(Aggregated_Internal_Scores!N8:N13)/6"

        mainWorkBook.Worksheets(avgsheetNames(i)).Range("C2:H2").Formula = strFormulas
        mainWorkBook.Worksheets(avgsheetNames(i)).Range("C3:H3").Formula = strFormulas2
        mainWorkBook.Worksheets(avgsheetNames(i)).Range("C2:H3").AutoFill Destination:=mainWorkBook.Worksheets(avgsheetNames(i)).Range("C2:H32")
        
    End With
End If

As you can see I have tried to provide the pattern I am going for where the values extracted from the "Aggregated_Internal_Scores" sheet should follow the pattern I2:I7 > I8:I13 > I14:I19 and so on.正如你所看到的,我试图提供我想要的模式,从“Aggregated_Internal_Scores”表中提取的值应该遵循模式I2:I7 > I8:I13 > I14:I19等等。

However, when the macro has been executed what I get is I2:I7 > I8:I13 > I4:I9 > I10:I15 ?但是,执行宏后,我得到的是I2:I7 > I8:I13 > I4:I9 > I10:I15吗?

It seems Excel is taking the block C2:H3 as the pattern and just incrementing by 2 at the start of every block.似乎 Excel 将块 C2:H3 作为模式,并且在每个块的开头仅增加 2。

Can you anyone explain where I have gone wrong and how I can specify that I want the extraction of sheet values to follow a certain pattern?谁能解释我哪里出错了,以及我如何指定我希望提取工作表值遵循某种模式?

Thank you in advance!先感谢您!

Use:利用:

mainWorkBook.Worksheets(avgsheetNames(i)).Range("C2:H32").Formula = "=SUM(INDEX(Aggregated_Internal_Scores!I:I,(ROW($ZZ1)-1)*6+2):INDEX(Aggregated_Internal_Scores!I:I,(ROW($ZZ1)-1)*6+7))/6"

Replace everything inside the If with that.用它替换If中的所有内容。


If one has Office 365 with dynamic array formula then use:如果有 Office 365 和动态数组公式,则使用:

mainWorkBook.Worksheets(avgsheetNames(i)).Range("C2:H32").Formula2 = "=SUM(INDEX(Aggregated_Internal_Scores!I:I,SEQUENCE(6,,(ROW($ZZ1)-1)*6+2))/6"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM