gpt4 book ai didi

vba - 如何根据Excel vba中另一列的值创建命名单元格范围

转载 作者:行者123 更新时间:2023-12-03 03:29:47 28 4
gpt4 key购买 nike

我有以下数据表

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 列的组合更新值列(我创建了一个用作键的辅助列)

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。

尝试为具有单独帮助程序名称的值列创建命名范围,然后迭代每个命名范围并通过获取总值并将其除以该命名范围的计数来更新单元格值

所以,我的问题是如何在辅助列的基础上创建一个带有值列的命名范围,以便我有(假设值是第五列)

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

关于vba - 如何根据Excel vba中另一列的值创建命名单元格范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45913030/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com