我怎么能把这个块变成一个循环?

我在想,我要做的是创build一个包含Jan,Feb,Mar等等的列表,以及另一个包含E和P之间的字母的列表。但是,我仍然很难设置循环,并且由于恐惧我往往写很长的路(因为它有许多不必要的线)。 有关如何设置它的任何build议?

JanGroup = MEPF.Sheets("Group NBD-AP Goals").Range("E57").Value FebGroup = MEPF.Sheets("Group NBD-AP Goals").Range("F57").Value MarGroup = MEPF.Sheets("Group NBD-AP Goals").Range("G57").Value AprGroup = MEPF.Sheets("Group NBD-AP Goals").Range("H57").Value MayGroup = MEPF.Sheets("Group NBD-AP Goals").Range("I57").Value JunGroup = MEPF.Sheets("Group NBD-AP Goals").Range("J57").Value JulGroup = MEPF.Sheets("Group NBD-AP Goals").Range("K57").Value AugGroup = MEPF.Sheets("Group NBD-AP Goals").Range("L57").Value SepGroup = MEPF.Sheets("Group NBD-AP Goals").Range("M57").Value OctGroup = MEPF.Sheets("Group NBD-AP Goals").Range("N57").Value NovGroup = MEPF.Sheets("Group NBD-AP Goals").Range("O57").Value DecGroup = MEPF.Sheets("Group NBD-AP Goals").Range("P57").Value 

如果您要使用以下代码:

 Dim MthGroup As Variant MthGroup = Application.Transpose(Application.Transpose(MEPF.Sheets("Group NBD-AP Goals").Range("E57:P57"))) 

您可以然后访问您的variables作为MthGroup(1)而不是JanGroupMthGroup(2)而不是FebGroup

(这两个Transpose命令用于将数据从二维1 To 1, 1 To 12数组转换为一维1 To 12数组。


让数据中的数据允许您在代码中的其他地方使用循环,例如:

 Dim mth As Long For mth = 1 To 12 MsgBox "Data for " & MonthName(mth) & " is " & MthGroup(mth) Next 

这里有一个可能的代码,可以解决你的一些问题,并可能告诉你如何继续你的任务:

 Option Explicit Public Sub TestMe() Dim rngCell As Range Dim lngCounter As Long Dim myArray(12) As Long Set rngCell = Cells(57, 5) 'That is E57 For lngCounter = 0 To 11 Set rngCell = rngCell.Offset(0, 1) rngCell = lngCounter myArray(lngCounter) = rngCell.Value Next lngCounter For lngCounter = LBound(myArray) To UBound(myArray) Debug.Print myArray(lngCounter) Next lngCounter End Sub 

一般来说,我们将Cells(57,5)设置为rngCell并且我们将从E57到P57的所有单元格写入从0到11的数字。因此,您将看到如何完成此操作。 此外,我们创build一个名为myArray的数组,其中包含12个位置。 在每个循环中,我们为数组添加一个值 – myArray(lngCounter) = rngCell.Value 。 我已经添加了第二个循环,所以你可以看到如何遍历这个数组。 它将数组的值打印到即时窗口。 干杯!