2017-01-10 2 views
1

У меня есть программа, которая должна читать значения из файла, генерировать графики и выполнять вычисления.Диапазон масштабирования VBA от переменных строк

Он импортирует набор данных из двух столбцов/17000+ строк и ему нужно генерировать графики из определенных диапазонов. Первый столбец содержит данные о перемещении, которые сохраняют цикличность от -5 до 5 мм назад и вперед. Мне нужно проанализировать результаты от -2,5 до -4,5 и от 2,5 до 4,5 мм в каждом цикле.

Проблема в том, что для разных наборов данных число строк, содержащих крайности диапазонов, может варьироваться.

Я использую функцию MATCH, чтобы получить номер строки начала и конца диапазона. Например:

=MATCH(2.5,Data!B200:B230,1)+199 
=MATCH(4.5,Data!B260:B290,1)+260 

В моем случае здесь она дает 216 и 272 соответственно.

Мой вопрос: как я могу использовать эти значения в коде VBA для автоматического обновления моих графиков с правильным набором данных? В настоящее время диапазон фиксируется, как показано ниже:

Sheets("Main").ChartObjects("Chart 12").Activate 'Cycle 1 - Evaluation(tension) 
ActiveChart.SeriesCollection(1).XValues = "=Data!$B$216:$B$272" 
ActiveChart.SeriesCollection(1).Values = "=Data!$C$216:$C$272" 

Спасибо/С наилучшими пожеланиями

ответ

1

Dim две переменные, такие как i и j, а затем использовать их в строковых переменных, чтобы создать значения для XValues и Values свойство вашего Series. Например:

Dim i As Long, j As Long 
Dim ref1 As String, ref2 As String 

i = 216 'update with your MATCH formula 
j = 272 'update with your MATCH formula 

' create the references as string variables 
ref1 = "=Data!$B$" & i & ":$B$" & j 
ref2 = "=Data!$C$" & i & ":$C$" & j 

Sheets("Main").ChartObjects("Chart 12").Activate 'Cycle 1 - Evaluation(tension) 
ActiveChart.SeriesCollection(1).XValues = ref1 
ActiveChart.SeriesCollection(1).Values = ref2 
+0

Большое спасибо! Он работал гладко. –