我有以下数据表
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]
现在,我想基于此字典更新“值”列的值,以使与a1对应的单元格每个以1000/3更新(因为a1的行数为3),并且类似地,对应于到a2分别更新为1000/2。
尝试是使用单独的帮助程序名称为值列创建命名范围,然后遍历每个命名范围,并通过取总值并将其除以该命名范围的计数来更新单元格值
所以,我的问题是如何在helper列的基础上创建一个带有value列的命名范围(假设值是V列)
Range("a1") = V1:V3
Range("a2") = V4:V5 etc..
最佳答案
我认为您可以在没有命名范围的情况下更轻松地完成此操作。
首先,我假设这些行是按您的帮助者列排序的!
只需在帮助器列中找到第一个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
关于excel - 如何基于Excel VBA中的另一列的值创建单元格的命名范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45913030/