首页 > 解决方案 > 使用 vba 创建动态单元格地址

问题描述

我有一列(在我的例子中是 B 列),标题名为“case”,单元格包含数字。我正在编写一个简单的代码来执行任务,这样

  1. 对于列中的每个单元格(可能执行 for 循环),检查前 100 个单元格(帧)
  2. 当[第一季度的平均值<第二季度的平均值<第三季度的平均值]和[第四季度的平均值>第三季度的平均值]时,我应该在符合条件的单元格旁边的单元格中添加一个“标志” .

我想让“框架”宽度和“四分之一宽度”变量,并开始为此编码。

sub check_pattern()

Dim boundary as integer
Set boundary = 5
Dim Framewidth as long
Set Framewidth = 100

Dim case as range
Set case = ThisWorkbook.Worksheets("sheet1").Rows(1).Find("case", lookat:=xlPart)
'declare column number of my data

Dim AR as integer, BR as integer, CR as integer, DR as integer, ER as integer
'declare row numbers of the boundaries of range of address, will be used in vba offset
AR = Round(Framewidth*(boundary - 1)/(boundary - 1))
BR = Round(Framewidth*(boundary - 2)/(boundary - 1))
CR = Round(Framewidth*(boundary - 3)/(boundary - 1))
DR = Round(Framewidth*(boundary - 4)/(boundary - 1))
ER = Round(Framewidth*(boundary - 5)/(boundary - 1))

Dim i as integer, LRow as long
Set LRow = Application.WorksheetFunction.CountA(Worksheets("sheet1").Columns(case))
'declare variables for the for loop
'For i = 2 to LRow
'[missing code]
'Next i

End sub

现在我对缺少的代码部分感到很困难。如果所涉及的范围是静态的,我会这样编码

if and Application.Average(Range("b2:b26")) < Application.Average(Range("b27:b51")) and Application.Average(Range("b27:b51")) < Application.Average(Range("b52:b76")) and Application.Average(Range("b52:b76")) > Application.Average(Range("b77:b101")) then range("C102").value = "Flag"

我想让这个任务循环直到行号为 5XXXX(声明为 LRow),并且四分之一宽度可能是可变的。你能填补我缺失的部分吗?谢谢你。

标签: excelvbadynamicrange

解决方案


推荐阅读