создать динамический c адрес ячейки с VBA - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть столбец (в моем случае столбец B) с заголовком «case», в котором ячейки содержат числа. Я пишу простой код для выполнения задач, такой что

  1. для каждой ячейки в столбце (возможно, для l oop), проверьте предыдущие 100 ячеек (кадр)
  2. когда [среднее значение 1-го квартала <среднее значение 2-го квартала <среднее значение 3-го квартала] и [среднее значение 4-го квартала> среднее значение 3-го квартала], я должен добавить «флажок» в ячейку справа рядом с ячейкой критерии.

Я хотел бы сделать переменные "frame" width и "width" и начать кодирование для этого.

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

Теперь мне сложно недостающая часть кода. Если бы задействованные диапазоны были stati c, я бы кодировал как

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), и ширина четверти может быть переменной. Вы можете заполнить мою недостающую часть? Спасибо.

...