我有以下数据表
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列的组合更新value列(我已经创建了一个辅助列作为键)
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..
答案 0 :(得分:2)
我认为你可以在没有命名范围的情况下以更简单的方式做到这一点。
首先,我假设行按你的助手列排序!
只需找到辅助列中的第一个a1
,例如。使用find
method并将其行号设为rowStart
。
然后使用WorksheetFunction.CountIf
Method将辅助列中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