2016-11-13 2 views
0

меня постоянно расширяющийся список в колонках AF и OSНарушение колонки в серии, основанный на другой колонке

A   B   C   D   E   F 

Date  Time Date&Time  TimeB  Reading Note 
16/11/09 00:00 16/11/09 00:00 00 00:00 5.7  C 
16/11/09 02:30 16/11/09 02:30 00 02:30 14.7  
16/11/09 05:00 16/11/09 05:00 00 05:00 11.2  
16/11/09 07:15 16/11/09 07:15 00 07:15 7.2 
16/11/09 09:00 16/11/09 09:00 00 09:00 5.5  A 
16/11/09 11:20 16/11/09 11:20 00 11:20 10.2  
16/11/09 13:15 16/11/09 13:15 00 13:15 6.4  B 
16/11/09 15:15 16/11/09 15:15 00 15:15 7.7 
16/11/09 17:00 16/11/09 17:00 00 17:00 5.4  C 
16/11/09 19:20 16/11/09 19:20 00 19:20 7.9 
16/11/09 20:20 16/11/09 20:20 00 20:20 8.4 
16/11/09 22:15 16/11/09 22:15 00 22:15 7.5 
16/11/10 00:30 16/11/10 00:30 01 00:30 5.4 
16/11/10 09:23 16/11/10 09:23 00 00:08 5.4  A 
16/11/10 11:50 16/11/10 11:50 00 02:35 11.1  
16/11/10 13:15 16/11/10 13:15 00 04:00 5.9  B 
16/11/10 22:00 16/11/10 22:00 00 12:45 6.8 
16/11/11 06:51 16/11/11 06:51 00 21:36 4.9 
16/11/11 17:05 16/11/11 17:05 00 00:35 5.7 
16/11/11 17:30 16/11/11 17:30 00 01:00 5.9  C 
16/11/11 19:00 16/11/11 19:00 00 02:30 10.6 

И в колонках O через SI иметь список запуска и остановки, чтобы день.

Date  Time Date&Time  Reading Notes 
16/11/09 00:00 16/11/09 00:00 5.7  Start 
16/11/10 00:35 16/11/10 00:35 5.4  Stop 
16/11/10 09:15 16/11/10 09:15 5.4  Start 
16/11/11 07:15 16/11/11 07:15 4.9  Stop 
16/11/11 16:30 16/11/11 16:30 5.7  Start 
16/11/12 09:00 16/11/12 09:00 5.9  Stop 
16/11/12 16:32 16/11/12 16:32 5.8  Start 
16/11/13 04:45 16/11/13 04:45 6.2  Stop 
16/11/13 11:11 16/11/13 11:11 4.9  Start 

изначально я разрывался информация в первой таблице данных, в серию для построения графиков с использованием именем формулы и с использованием следующих формул для X:

=INDEX(Sheet1!$B:$B,IFERROR(MATCH(MAX(Sheet1!$A:$A)-1,Sheet1!$A:$A,1)+1,3)):INDEX(Sheet1!$B:$B,IFERROR(MATCH(MAX(Sheet1!$A:$A)-0,Sheet1!$A:$A,1),3)) 
=INDEX(Sheet1!$B:$B,IFERROR(MATCH(MAX(Sheet1!$A:$A)-2,Sheet1!$A:$A,1)+1,3)):INDEX(Sheet1!$B:$B,IFERROR(MATCH(MAX(Sheet1!$A:$A)-1,Sheet1!$A:$A,1),3)) 
=INDEX(Sheet1!$B:$B,IFERROR(MATCH(MAX(Sheet1!$A:$A)-3,Sheet1!$A:$A,1)+1,3)):INDEX(Sheet1!$B:$B,IFERROR(MATCH(MAX(Sheet1!$A:$A)-2,Sheet1!$A:$A,1),3)) 
=INDEX(Sheet1!$B:$B,IFERROR(MATCH(MAX(Sheet1!$A:$A)-4,Sheet1!$A:$A,1)+1,3)):INDEX(Sheet1!$B:$B,IFERROR(MATCH(MAX(Sheet1!$A:$A)-3,Sheet1!$A:$A,1),3)) 

и Y:

=INDEX(Sheet1!$D:$D,IFERROR(MATCH(MAX(Sheet1!$A:$A)-1,Sheet1!$A:$A,1)+1,3)):INDEX(Sheet1!$D:$D,IFERROR(MATCH(MAX(Sheet1!$A:$A)-0,Sheet1!$A:$A,1),3)) 
=INDEX(Sheet1!$D:$D,IFERROR(MATCH(MAX(Sheet1!$A:$A)-2,Sheet1!$A:$A,1)+1,3)):INDEX(Sheet1!$D:$D,IFERROR(MATCH(MAX(Sheet1!$A:$A)-1,Sheet1!$A:$A,1),3)) 
=INDEX(Sheet1!$D:$D,IFERROR(MATCH(MAX(Sheet1!$A:$A)-3,Sheet1!$A:$A,1)+1,3)):INDEX(Sheet1!$D:$D,IFERROR(MATCH(MAX(Sheet1!$A:$A)-2,Sheet1!$A:$A,1),3)) 
=INDEX(Sheet1!$D:$D,IFERROR(MATCH(MAX(Sheet1!$A:$A)-4,Sheet1!$A:$A,1)+1,3)):INDEX(Sheet1!$D:$D,IFERROR(MATCH(MAX(Sheet1!$A:$A)-3,Sheet1!$A:$A,1),3)) 

Я сделал выше для 30 серий (только показ первых 4), чтобы дать результаты за последние 30 дней с введенной максимальной даты. Проблема, которую я понял, заключается в том, что некоторые периоды тестирования продлеваются на следующий день или длится более 24 часов, поэтому мой первый подход, хотя он работает в некоторых случаях, на самом деле не то, что я хочу.

То, что я хотел бы достичь, - это способ автоматически разбить список на отдельные серии в именованных формулах на основе списка остановки/запуска.

Я использую «Менеджер имен» для создания списка из 30 серий имен.

Я вижу способ сделать это в VBA, но я пытался избежать VBA. Любые мысли о том, как наилучшим образом добиться разбивки списка на отдельные серии для автоматического графического отображения на основе данных начала и остановки второй таблицы?

+0

я должен был сделать замысловатую версию этого недавно. Мне было легко хранить соответствующие номера строк в качестве названных формул. Затем обратитесь к номерам строк в других именованных диапазонах. Вопрос. Вам нужна завершенная пара старта и остановки для создания графика? – MacroMarc

+0

, вероятно, не ... если вы решаете остановить старт. Вероятно, вам удастся просто начать использовать. Никогда не будет отсчета между Stop, а затем начнется. Поэтому каждый старт будет флагом для следующей серии. –

+0

Эй, здесь уже поздно, поэтому я написал кое-какие материалы, которые вы можете попробовать. Дайте мне знать, как это происходит ... – MacroMarc

ответ

0

Поэтому я дам вам простую версию, и я уверен, что вы имеете дело с любыми осложнениями.

EDIT

Start4_time=INDEX(Sheet2!$Q$2:$Q$10, LARGE(IF(Sheet2!$S$2:$S$10="Stop", ROW(Sheet2!$S$2:$S$10)-ROW(Sheet2!$S$1), -9000000000), 4)-1)

Stop4_time=INDEX(Sheet2!$Q$2:$Q$10, LARGE(IF(Sheet2!$S$2:$S$10="Stop", ROW(Sheet2!$S$2:$S$10)-ROW(Sheet2!$S$1), -9000000000), 4)-1)

Повторите для 30 других тестовых сессий, и убедитесь, чтобы изменить параметр LARGE на 1.

Затем определите ваш Stop Xs и Stop Ys в Менеджере имен.

Stop4_X =INDEX(Sheet2!$D$2:$D$22, IFERROR(MATCH(Start4_time,Sheet2!$C$2:$C$22, 1)+IF(VLOOKUP(Start4_time,Sheet2!$C$2:$C$22, 1, 1)=Start4_time, 0, 1), 1)):INDEX(Sheet2!$D$2:$D$22, MATCH(Stop4_time,Sheet2!$C$2:$C$22, 1))

Stop4_Y = INDEX(Sheet2!$E$2:$E$22, IFERROR(MATCH(Start4_time,Sheet2!$C$2:$C$22, 1)+IF(VLOOKUP(Start4_time,Sheet2!$C$2:$C$22, 1, 1)=Start4_time, 0, 1), 1)):INDEX(Sheet2!$E$2:$E$22, MATCH(Stop4_time,Sheet2!$C$2:$C$22, 1))

Теперь у вас есть два определенных диапазонов для Stop4_X и Stop4_Y, которые можно положить в качестве данных для вашего графика. Повторите для других. Проверка ошибок должна быть сделана для того, чтобы иметь дело с тем, где у вас нет данных, достаточно далеко идущих назад ...

Также обратите внимание, что я использовал Stops как первый выбор, а затем использовал эту строку-1, чтобы найти соответствующую Начальное значение. Это потому, что я предположил, что вы не захотите графа без остановки (ваш образец не имеет окончательной остановки в столбце S). Если вы хотите, вы можете переключить настройку, чтобы найти начало, а затем использовать +1 для поиска остановок.

У меня есть ошибка, проверенная на соответствие столбцу dateTime, где первый запуск более ранний, чем первый ввод столбца C.

Все на предположении, что те DateTimes в колонке C & Колонка Q.

+0

Это дата в формате Excel. Значения Y действительно являются столбцом E. Значения X будут столбцом D, и я могу настроить для этого. Столбец D - это время с начала, а не время дня и даты в трех других столбцах. Я отдам это. Это имеет смысл, когда я читаю. Есть данные до 13-го в настоящее время, но я только поставлял фрагмент, и я хотел убедиться, что он выходит за пределы 1 дня. Спасибо за ответ. Я соглашусь, как только я закончу проверку. –

+0

Эй, Эд, я заметил ошибку или два в коде, который я тебе дал. Я просмотрел его, и, надеюсь, подход в моем исправленном ответе будет работать для вас. Теперь я использую starttime и stopTime. – MacroMarc

+0

Подход, казалось, не нашел, даже не пробовав его. Вы поняли, что я думаю, и это первый шаг 8). Это может быть немного, прежде чем я получаю возможность реализовать его, хотя, поскольку фактическая работа мешает моему превосходному времени. –

Смежные вопросы