如何根据excel vba中另一列的值创build一个命名的单元格区域

我有以下数据表

Channel Quarter Week value a 1 1 5811 a 1 2 199 a 1 1 8111 a 2 2 881 a 2 1 124 b 2 2 1991 

我需要根据Channel和Quarter列的组合来更新值列(我已经创build了一个帮助列作为关键字)

 Helper Channel Quarter Week value a1 a 1 1 5811 a1 a 1 2 199 a1 a 1 1 8111 a2 a 2 2 881 a2 a 2 1 124 b2 b 2 2 1991 

从我的VBA表单中,我创build了一个名字在这些帮助列中的字典

  cellDict = [a1:= 1000, 2:= 2000, b1:= 500 etc] 

现在我想在这个字典的基础上更新'value'列的值,使得对应于a1的单元格每个都被更新为1000/3(因为a1的行数是3),并且类似的单元格对应于到A2每个更新1000/2。

尝试创build具有不同帮助器名称的值列的命名范围,然后遍历每个命名范围,并通过取总值并将其除以命名范围的计数来更新单元格值

所以,我的问题是如何创build一个名为范围的值列的帮助列的基础上,使我有(假设值是列V)

 Range("a1") = V1:V3 Range("a2") = V4:V5 etc.. 

我认为你可以用更简单的方法来做到这一点。

首先,我假设行按照你的帮助栏进行sorting!
只需find帮手列中的第一个a1 。 用find方法获取行号为rowStart

然后使用WorksheetFunction.CountIf方法来计算帮助者列中a1的出现为rowCount 。 所以rowEnd = rowStart + rowCount - 1

现在你可以循环…

 Dim iRow As Long For iRow = rowStart to rowEnd 'use your dictionary and rowCount to replace values here. 'Example for accessing the cell: Worksheets("MySheet").Cells(iRow, "E").Value = "" Next iRow