별도의 테이블에 있는 값을 기준으로 다음으로 가장 큰 값 및/또는 가장 작은 값을 가져와야 하는 테이블이 있습니다. 그러나 조회의 정확성에 영향을 주지 않고 모든 기준에 따라 첫 번째 테이블을 정렬할 수 있도록 허용해야 합니다.
다음으로 큰/다음으로 작은 값을 찾기 위해 VLOOKUP, LOOKUP, HLOOKUP 및 MATCH를 사용하는 다양한 방법을 검색하고 읽었지만 내가 찾은 모든 것은 소스 열을 오름차순/내림차순으로 정렬해야 하는 것 같습니다. 다음으로 가장 작은/가장 큰 값을 원합니다. 두 가지를 동시에 사용하거나 수식을 깨지 않고 테이블을 정렬할 수 있기를 원할 때 기능이 중단됩니다.
Excel에서 다음으로 큰 값/다음으로 작은 값에 대해 정렬을 구분하지 않는 검색을 수행하는 방법이 있나요?
선호하는 솔루션은 현재 VBScript에 익숙하지 않고 타사 도구를 설치할 수 없기 때문에 기본 Excel 기능만 사용하는 것입니다. 솔루션은 Excel 2010과도 호환되어야 합니다.그리고2013.
답변1
제안된 결과
ARRAY 수식에 IF 및 SMALL 사용
그림에 표시된 결과가 찾고 있는 결과인 경우 다음으로 큰 값을 찾는 공식은 다음과 같습니다.
=SMALL(IF(Relative[Value]>[@Value];Relative[Value];99999999999);1)
설명
Relative[Value]>[@Value]
TRUE
또는 배열을 반환합니다 .FALSE
IF(Relative[Value]>[@Value];Relative[Value];99999999999)
그런 다음 상대 테이블에서 더 큰 값을 반환하고 그렇지 않은 값에 대해서는 범위를 벗어난 큰 값을 반환합니다. 데이터에서 자연적으로 발생하지 않는 것을 선택하세요.0
또는 FALSES에 대한 값을 사용하거나 오류 값으로 작업할 수 있습니다.- 그런 다음
SMALL
인수와 함께 함수 를 사용하여k=1
더 큰 값에서 가장 작은 값을 찾습니다. - 배열 수식이므로 CTRL+SHIFT+ENTER로 수식을 입력하세요.
연결:
답변2
번호가 고유한 경우 다음과 같이 작동합니다.
다음으로 작은 것:
=SMALL(YourRange,RANK.EQ(YourValue,YourRange,1)+1)
다음으로 큰 규모:
=SMALL(YourRange,RANK.EQ(YourValue,YourRange,1)-1)
그렇지 않은 경우 배열 수식이나 도우미 열을 사용하여 좀 더 복잡한 조작을 수행할 수 있습니다. 또한 LARGE
의 정렬 순서를 사용하고 변경하는 방식으로 전환할 수 있는 중복 숫자를 처리하는 방법(동일하거나 다른 값 반환)을 결정해야 합니다 RANK
.
그래도 이것이 출발점이 될 것입니다.
답변3
빈 도우미(악) 열을 사용하고 이를 복사하여 아래까지 붙여넣습니다. =IF(B3>NOW(),B3,"") 열 T라고 부르겠습니다. 그런 다음 "다음" 필드에 입력합니다. **=최소(T1:T1000)
함수로는 다음과 같습니다.
Function Soonest(scolumn As String) As Date
'
'
Dim a, b
Dim test(20000) As Date
Dim Min As Date
b = 0
For a = 1 To 20000
If (IsEmpty(Range(scolumn & a))) Then
GoTo SkipMe
End If
If (Range(scolumn & a).Value - Now() > 0) Then
b = b + 1
test(b) = Range(scolumn & a).Value
End If
SkipMe:
Next a
If b = 0 Then
Min = "None"
GoTo NoneFound
End If
Min = test(1)
For c = 1 To b
If test(c) < Min Then Min = test(c)
Next c
NoneFound:
Soonest = Min
End Function