2017-11-13 14 views
0

아래의 종속 열을 파생시킬 수있는 Excel 함수 또는 수식을 찾고 있습니다. 나는 시작과 종료 시간을 가진 프로세스 목록을 가지고 있으며 어떤 후속 프로세스가 이전 프로세스의 시간 간격 사이에 있는지 알고 싶다. 공정 D가 여전히 실행되는 동안 프로세스 E는 프로세스와 행에 대해, 15시 15분에 따라서 'E'를 시작 아이디 D.후속 레코드의 종속성을 확인하는 Excel 함수

Process StartTime EndTime Dependency 
A  12:00 14:00  B,C 
B  12:30 13:30  C 
C  12:45 14:30 
D  14:45 15:30  E 
E  15:15 17:00 

답변

0

는 Office 365 엑셀, D2에 다음 배열 수식을 넣을 경우 :

=TEXTJOIN(",",TRUE,IF(($B3:$B$7<C2)*($A3:$A$7<>""),$A3:$A$7,"")) 

편집 수식을 종료 할 때 Enter 대신 Ctrl-Shift-Enter를 눌러 배열 수식을 확인해야합니다. 그런 다음 아래로 복사하십시오.

=TEXTJOIN(",",TRUE,IF(($B3:INDEX(B:B,MATCH("zzz",A:A)+1)<C2)*($A3:INDEX(A:A,MATCH("zzz",A:A)+1)<>""),$A3:INDEX(A:A,MATCH("zzz",A:A)+1),"")) 

여전히 배열 수식 그래서 여전히 Ctrl 키 쉬프트 - 필요 :

enter image description here

우리는 인덱스를 사용할 수있는 범위에 동적하려면 (MATCH는()) 자동으로 종료 셀을 설정 들어가다.


Office 365가없는 경우이 UDF를 사용할 수 있습니다. 이 코드를 통합 문서에 첨부 된 모듈에 넣고 위에 설명 된 수식을 사용합니다.

Function TEXTJOIN(delim As String, skipblank As Boolean, arr) 
    Dim d As Long 
    Dim c As Long 
    Dim arr2() 
    Dim t As Long, y As Long 
    t = -1 
    y = -1 
    If TypeName(arr) = "Range" Then 
     arr2 = arr.Value 
    Else 
     arr2 = arr 
    End If 
    On Error Resume Next 
    t = UBound(arr2, 2) 
    y = UBound(arr2, 1) 
    On Error GoTo 0 

    If t >= 0 And y >= 0 Then 
     For c = LBound(arr2, 1) To UBound(arr2, 1) 
      For d = LBound(arr2, 1) To UBound(arr2, 2) 
       If arr2(c, d) <> "" Or Not skipblank Then 
        TEXTJOIN = TEXTJOIN & arr2(c, d) & delim 
       End If 
      Next d 
     Next c 
    Else 
     For c = LBound(arr2) To UBound(arr2) 
      If arr2(c) <> "" Or Not skipblank Then 
       TEXTJOIN = TEXTJOIN & arr2(c) & delim 
      End If 
     Next c 
    End If 
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim)) 
End Function