我怎样才能编写一个代码来定义一个范围insdide循环将改变其大小?

我需要使用两个循环,而简单的部分是计算一个“子模态”在一个已知的范围(“B3”,“B18”)中重复了多less次,这意味着每个子模态的元素数量。 困难的部分是在计算每个不同“子模式”的“位置”重复多less次,这是因为每个“子模式”的元素数量是不同的,所以我必须调整一个范围在一个特定的循环计算特定元素(=位置)在“子模态”内重复多less次。

我需要帮助的具体部分如下:

positionrepetition = Application.CountIf(Worksheets("Sheet2").range("cells(3 + x + y - 1, 3)", "cells(3 + x + y - 1 + submodulrepetition,3"), position) 

如果我可以设法以正确的格式写出来,我相信它会奏效。 问题是通常我只使用范围函数,当我知道范围是固定的或已知的时候,不需要计算。 我通常写例如:范围(“A1”,“F10”)。select

正如你可以看到这是一个固定的范围,所以我想象,而不是使用范围(“A1”,“F10”)的格式,我可以使用范围函数的参数(“单元格(1,1)”,细胞(10,6)“)。 请纠正我,如果我错了。

这是Loop的其余代码。

 For x = 0 To numberofparts If Cells(3 + x, 18) = "1" Then submodul = Cells(3 + x, 2).Value submodulrepetition = Application.CountIf(Worksheets("Sheet2").range("B3", "B18"), submodul) For y = 1 To submodulrepetition position = Cells(3 + x + y - 1, 3).Value positionrepetition = Application.CountIf(Worksheets("Sheet2").range("cells(3 + x + y - 1, 3)", "cells(3 + x + y - 1 + submodulrepetition,3"), position) Next Else End If x = x + submodulrepetition - 1 Next 

再来解释一下,所有的数据都是从Excel表中收集的:

– 所有信息都从Excel工作表中收集 – “子模块”位于B列,并按数字顺序排列。 每一个子模态在这一列中都有许多重复的元素。 – “位置”(子模块的元素)在列C中,也可以在同一列甚至在其他“子模式”中重复。

所有的帮助将不胜感激,我提前感谢你。

亚历杭德罗·法里纳

改变你的路线:

 positionrepetition = Application.CountIf(Worksheets("Sheet2").Range("cells(3 + x + y - 1, 3)", "cells(3 + x + y - 1 + submodulrepetition,3"), Position) 

带有:

 positionrepetition = Application.CountIf(Worksheets("Sheet2").Range(Cells(3 + x + y - 1, 3), Cells(3 + x + y - 1 + submodulrepetition, 3), Position)) 

如果范围Column/Row更改,请使用以下代码来获取列或行的结尾:

 Dim GetColEnd, GetRowEnd As Integer GetColEnd = Sheets("Sheet_Name").Cells(1, .Columns.Count).End(xlToLeft).Column GetRowEnd = Sheets("Sheet_Name").Cells(Rows.Count, 1).End(xlUp).Row 

Range函数中使用GetColEnd GetRowEnd来获得灵活的Column\Row ,例如:

 Sheets("Sheet_Name").Range(Cells(1,1),Cells(GetRowEnd,GetColEnd)