:: 게시판
:: 이전 게시판
|
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다. 통합 규정을 준수해 주십시오. (2015.12.25.)
마속 나무위키 문서 2.3. 가정의 패전 인용"그런데 여기서 마속은 제갈량의 명령을 무시하고 길목에 세워야 할 방어진지를 산 꼭대기에 세우는, 전쟁사상 다시 없을 바보짓을 한다.부장 왕평이 필사적으로 말렸지만 이마저도 무시해버린다."
20/03/26 14:49
네 그러니까요 VBA에도 이터레이터(연속된 자료 저장) 기능이 있을거라서...
하나의 리스트에 숫자 100개 때려넣고 크기순으로 정렬하는 알고리즘을 이용해서 나온 결과물의 80번째 자료를 출력하게 하면 되는거죠.
20/03/26 14:03
VBA 기본코드가 뭔지 모르겠는데.. 두가지 방법이 생각나네요.
1. 100개 숫자 내림차순 정렬 -> 80번째 숫자 2. 100개 숫자 오름차순 정렬 -> 20번째 숫자 (80번째 큰 숫자 = 20번째 작은숫자) 2.1 100개 중 가장 작은 숫자 탐색 -> 탐색범위에서 제외 -> 99개 중 가장 작은 숫자 -> ... -> 80개중 가장 작은 숫자 편하신 방법으로 구현하시면 되겠습니다.
20/03/26 14:57
Function nth_large(rng As Range, n As Integer)
Dim num As Integer Dim arr() As Variant Dim temp As Variant Dim i As Integer Dim j As Integer num = rng.Count arr = rng For i = 1 To num - 1 For j = i + 1 To num If arr(i, 1) < arr(j, 1) Then temp = arr(i, 1) arr(i, 1) = arr(j, 1) arr(j, 1) = temp End If Next Next nth_large = arr(n, 1) End Function ----- 범위를 동적배열변수에 입력한 뒤, 배열을 내림차순으로 정리합니다. 그 후 배열에서 n번째 수를 찾습니다. 사용하실 땐 [=nth_large(A1:A100, 80)]으로 사용하시면 됩니다. 이 코드에서 내장 함수나 메서드는 사용되지 않았고, 유일하게 쓴 속성은 rng의 Count뿐인데 이마저도 허용이 안 된다면 더 복잡하겠네요.
|