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



我有以下数据表

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

我需要根据通道和季度列的组合更新值列(我创建了一个辅助列作为键(

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 表单中,我创建了一个字典,其中包含这些帮助程序列中的名称,例如

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

现在我想在此字典的基础上更新"value"列的值,使对应于 a1 的单元格每个更新 1000/3(因为 a1 的行数为 3(,类似地,对应于 a2 的单元格每个更新 1000/2。

尝试使用单独的帮助程序名称为值列创建一个命名范围,然后循环访问每个命名范围,并通过获取总值并将其除以该命名范围的计数来更新单元格值

所以,我的问题是如何在帮助程序列的基础上创建一个带有值列的命名范围,以便我有(假设值是 V 列(

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

我认为您可以在没有命名范围的情况下以更简单的方式做到这一点。

首先,我假设行是按您的帮助器列排序的!
只需在帮助器列中找到第一个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

最新更新