【发布时间】:2017-02-12 09:06:16
【问题描述】:
我目前正在处理大量合同清单。每个列表都在每个季度的单独工作表中,并且需要保持这种状态。例如:2007_Quarter1、2007_Quarter2 等。我有 10 年的数据,所以有 40 个季度报告工作表。
现在我需要编写一个 vba 例程,按照指定的顺序执行以下操作:
- 在每个季度报告工作表中,遍历包含合同价值的列;那么
- 计算 0 到 10,000 之间的所有值;那么
计算 10,001 到 25,000 之间的所有值;等等
然后,当范围内没有更多合同值时(因工作表而异),转到下一个工作表并重复该过程。
所有结果都应在工作表中返回(我们称之为 Worksheets("Report")),其中行代表值区间(例如 0 到 $10,000),列代表季度(例如 2007 Q1、2007 Q2、等等)。
我的问题的一个特殊方面是,出于实际原因,我更愿意在另一个工作表(“变量”)中包含的表中设置控制间隔的最小值和最大值,例如,我' d 具有 C4 向下范围内的所有最小值和 D4 向下范围内的所有最大值。
对于每个合同价值,“如果”条件应如下所示:
If ContractVal > Worksheets("Variables").Range("C4").Value And
If ContractVal < Worksheets("Variables").Range("D4").Value Then ...
到目前为止,我在有效编码方面没有成功。我怀疑某些循环会起作用,但我找不到实现它的方法。一个循环会做:
2007_Quarter1 ws: 对于从 A4 到末尾的每个单元格,计算 Range("C4").Value 和 Range("D4").Value 之间包含的值
然后对于从 A4 到末尾的每个单元格,计算 Range("C5").Value 和 Range("D5").Value 之间包含的值
... 以此类推,然后重复 2007_Quarter2、2007_Quarter3 等。
我需要救援!提前致谢!
【问题讨论】:
-
工作表公式 COUNTIF 是否不够?