발생 간격 계산 (Microsoft Excel)
Roger는 목록에서 값의 발생 간격을 계산하는 방법이 있는지 물었습니다. 예를 들어, A 열에 수천 개의 숫자가 있습니다. A351 셀의 값을 살펴보면 목록에서 해당 값이 마지막으로 발생한 시간이 A246 셀에 있습니다. 그는 B351 셀에 넣고 351과 246의 차이 인 105를 반환 할 수있는 수식을 원합니다.
이 접근 방식은 Excel에서 열을 뒤로 검색하는 데 그다지 좋지 않기 때문에 구현하기가 어렵습니다. 전제를 뒤집을 수 있다면 작업이 훨씬 더 간단 해집니다. 예를 들어 B246 셀의 수식이 마지막 항목을 계산하는 대신 A246 셀에서 다음 값이 나타날 때까지의 간격을 나타내는 값 105를 반환 할 수 있습니다. 다음 수식은 A1 셀에서 값의 다음 발생을 계산합니다.
=MATCH(A1,A2:$A$65536,0)
이 수식을 B1 셀에 넣고 복사해야하지만 많은 셀이 필요합니다. A 열의 값이 열에 다시 나타나지 않으면 수식이 # N / A 오류를 반환합니다. 수식이 0을 반환하도록하려면 다음이 작동합니다.
=IF(ISNA(MATCH(A1,A2:$A$65536,0)),0,MATCH(A1,A2:$A$65536,0))
절대적으로 위쪽으로 계산해야한다면 (다음 항목 대신 이전 항목 찾기) 가장 쉬운 방법은 사용자 정의 함수를 사용하는 것입니다. 다음 함수 인 RowInterval은 지정한 범위를 뒤로 검색하고 원하는 간격을 반환합니다.
Function RowInterval(TestCell As Range, LookHere As Range) As Long Dim varValue As Variant Dim lngRow As Long Application.Volatile varValue = TestCell.Value 'Check for occurrences of the test value in the search range If WorksheetFunction.CountIf(LookHere, varValue) > 0 Then With LookHere 'Get the last row of the search range lngRow = .Row + .Rows.Count - 1 'Start with the last cell in the search range and work up Do Until .Item(lngRow, 1).Value = varValue lngRow = lngRow - 1 Loop End With 'Subtract the number of the row containing the found occurrence 'from the number of the row containing the test value RowInterval = TestCell.Row - lngRow End If End Function
함수를 사용하려면 B2 셀에 다음 수식을 입력 한 다음 원하는 셀 수에 수식을 복사합니다.
=RowInterval(A2,A$1:A1)
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (2338)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.
link : / excelribbon-Calculating_the_Interval_between_Occurrences [발생 간격 계산]
.