2016-11-13 2 views
0

나는 다른 열을 기반으로 시리즈에 열 속보

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 

그리고 SI를 통해 열 O에

A   B   C   D   E   F 

는 시작의 목록을 가지고에 정지 끊임없이 확장 열 AF의 목록과 OS가 그 날. Y

=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)) 

및 경우 :

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 

는 Originaly I은 X에 대해 다음 식라는 식을 이용하여 그래프 화하고 사용하는 일련의 첫 번째 데이터 테이블에있는 정보를 파괴 하였다

=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 일 동안 결과를주기 위해 30 시리즈 (위의 처음 4 개만 보여줌)에 대해 위의 작업을 수행했습니다. 내가 깨달은 문제는 일부 테스트 기간이 다음 날로 연장되거나 24 시간 이상이기 때문에 어떤 경우에는 작동하는 첫 번째 접근 방식이 실제로 내가 원하는 것이 아니기 때문입니다.

내가 달성하고 싶은 것은 중지/시작 목록을 기반으로하는 명명 된 수식에서 개별 시리즈로 자동으로 목록을 나눌 수있는 방법입니다.

"이름 관리자"를 사용하여 30 개의 시리즈 이름 목록을 생성하고 있습니다.

VBA에서이 작업을 수행하는 방법을 볼 수 있지만 VBA를 피하려고했습니다. 최고의 두 번째 테이블 시작 및 중지 데이터를 기반으로 자동으로 그래프에 대한 별도의 시리즈로 목록을 깨는 달성하는 방법에 대한 생각?

+0

에서 날짜 시간이 있다는 가정이다. 관련 행 번호를 명명 된 수식으로 저장하는 것도 쉬운 것으로 나타났습니다. 그런 다음 다른 명명 된 범위의 행 번호를 참조하십시오. 문제. 그래프를 생성하기 위해 완성 된 시작 및 종료 쌍이 필요합니까? – MacroMarc

+0

아마 ... 시작을 중지하기 위해 심판하는 경우. 아마 시작을 사용하는 것만으로 도망 갈 수있을 것입니다. 그때 멈추고 시작 사이에 독서가 없을 것입니다. 그래서 모든 시작은 다음 시리즈의 깃발이 될 것입니다. –

+0

안녕하세요, 늦었습니다. 그래서 당신이 시도 할 수있는 것들을 썼습니다. 그것이 어떻게되는지 알려주세요 ... – MacroMarc

답변

0

간단한 버전을 제공해 드리며 합병증을 처리 할 것입니다.

편집

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 개) 다른 테스트 세션에 대한 반복하고 정지 X가 그런 정의 1.

에 의해 LARGE로 매개 변수를 변경해야합니다 이름 관리자에서 Y를 중지하십시오.

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 =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_X 및 Stop4_Y 두 정의 범위를 가지고있다. 다른 사람들을 위해 반복하십시오. 오류 검사는 데이터가 충분히 멀리 떨어져있는 곳을 처리하기 위해 수행되어야합니다 ...

또한 첫 번째 선택 항목으로 Stops를 사용한 다음 해당 행 -1을 사용하여 해당 항목을 찾습니다. 시작 값. 그것은 당신이 멈추지 않고 그래프를 만들고 싶지 않다고 가정했기 때문입니다 (당신의 표본은 열 S에서 마지막 멈춤을 가지지 않습니다). 원하는 경우 시작을 찾기 위해 설정을 전환 한 다음 +1을 사용하여 위치를 찾을 수 있습니다.

첫 번째 시작이 C 열의 첫 번째 항목보다 빠르면 dateTime 열의 일치 여부를 확인하는 데 오류가 있습니다.

모든 사람들은 내가 최근이의 복잡한 버전을해야했다 열 C & 열 Q.

+0

그들은 날짜 형식으로 엑셀 형식입니다. Y 값은 실제로 열 E입니다. X 값은 열 D가되며이를 조정할 수 있습니다. 열 D는 다른 세 열의 날짜와 시간이 아닌 시작 이후의 시간입니다. 나는 이것을 줄 것이다. 내가 읽었을 때 그것은 의미가 있습니다. 현재 13 번째까지의 데이터가 있지만 단편을 제공하고 있었으며 1 일이 넘었는지 확인하려고했습니다. 응답 해 주셔서 감사합니다. 나는 그것을 확인한 후에 그것을 받아 들일 것이다. –

+0

안녕하세요, 에드, 나는 당신에게 준 코드에서 두 가지 오류를 발견했습니다. 나는 그것을 살펴 봤고, 제 수정 된 대답의 접근법이 당신을 위해 효과가 있기를 바랍니다. 나는 이제 starttime과 stopTime을 대신 사용한다. – MacroMarc

+0

접근법은 아직 실제로 시도하지 않은 채 발견 된 것으로 보입니다. 너는 개념이 나를 생각하고있다. 그것은 1 단계 8). 실제 작업으로 시간을 단축하는 데 방해가되기 때문에 구현하기 전에 약간의 시간이 걸릴 수 있습니다. –

관련 문제