나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내

작성자:  

 디레이지 (rotbd123)

추천:  2
파일:     조회:  2089
제목:   [vba]최소값 찾을때 다음행으로 이동 할 수 있을까요?
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):

* 아래줄에 질문을 작성하세요 >>


    
    Dim r As Long
    Dim c As Long
     

       
    Dim rngAll As Range                                    '전체영역(C1:G7) 넣을 변수
    Dim rngC As Range                                     '전체영역 각셀을 넣을 변수
    
    
    
    
    
    For r = 1 To ActiveSheet.Range("E3")
    For c = 1 To 1
    Cells(r, c).value = Int(Rnd * 1000000) + 1

    Next c
    Next r
    
    
    
    
    
    With Application
        .ScreenUpdating = False                           '화면 업데이트 (일시)정지
        
            
           
                 Set rngAll = Range(Cells(1, 3), Cells(Rows.Count, "C").End(3))  '전체영역 설정
                 Cells(1, 2) = .WorksheetFunction.Max(rngAll) 'A1셀에 전체영역의 최댓값을 넣음
                 'Cells(1, 2) = .WorksheetFunction.Min(rngAll)  'A3셀에 전체영역의 최소값을 넣음
                 End With
                
      
                 For Each rngC In rngAll                                '전체영역의 각셀을 순환
                
                 Select Case rngC                              '만일 각 셀값이
                 Case Is > Cells(1, 1)                         '지정한 셀보다 클 경우
                 If Cells(1, 2) > rngC Then                 '만일 B1셀이 각 셀값보다 클경우
                 Cells(1, 2) = rngC                     'B1셀에 셀값을 넣음
                  
                 End If
            '     Case Is < Cells(1, 1)                           '지정한 셀보다 작을 경우
            '     If Cells(1, 2) < rngC Then                '만일 B1셀이 각 셀값보다 작을경우
            '     Cells(1, 2) = rngC                        'B1셀에 셀값을 넣음
            '     End If
           
                 End Select
     
         Next rngC
   
        
        Set rngAll = Nothing                                    '개체변수 초기화(메모리 비우기)
    


지금까지 작성한 부분이고

그아랫부분인 최소값을 찾는 부분에서

선택한 셀밖에 확인을 못하는데

a1셀 a2셀 계속 비교를 할 수 있는 방법을 찾다가 도저히 답이안나와..이렇게 올려봅니다.
 
[불량 게시물 신고]  
조삿갓코드 자체가 오류 투성이이고, 도대체 무엇을 원하는 것인지 이해가 안됩니다.
첫번 중첩 For루프에서 안쪽 c=1 to 1은 결국 한 바퀴만 돌고 마는 루프를 왜 구성한 것인지?
With 안쪽 대입문에서도 A1 셀에 대입하겠다고 해 놓고 좌변은 Cells(1,2)로 쓰면 A1이 아닌 A2 셀에 대입이 되는 것이고

아래 쪽 For Each 구문은 언뜻 보면 반복 루프에 의해 최댓값과 최솟값을 구하는 알고리즘 같아 보이는데, 비교는 Cells(1,1)과 비교를 하고 다시 Cells(1,2) (이것은 B1 셀이 아니고 A2 셀이 됩니다.) 와 비교를 하는 등...

아마 주어진 범위에 대해 워크시트 함수(Max, Min)으로 구한 최대/최소값과, 일반적인 알고리즘에 의해 구하는 최대/최소값의 결과를 비교하면서 알고리즘 공부를 하는 것 같은데... 코드 자체가 현재는 엉망입니다.
05-26 (21:09)
삭제 ■신고
조삿갓제가 짐작한 내용이 맞다면, 정확한 코드를 알려드리지요.

공연한 동문서답을 하기는 좀 그러네요.
05-26 (21:10)
삭제 ■신고
디레이지정확히 말하면 A열에서 나온값을 B열이랑 비교해 최소값을 구한값을 대입되는 부분입니다.

그랬을때 현재는 해당 지정된 셀 값만 구해지질 못해서...for문에서 range를 쓴후 1 to (지정된셀) 값까지 넣어봤지만...안되서..이렇게 문의를 넣었습니다.
05-27 (02:56)
삭제 ■신고
조삿갓문제는... 지금 답하신 내용도 실제 코드 내용과는 전혀 엉뚱하다는 것입니다.

첫번 For 루프 역할이 A열에 테스트를 위한 임의 값을 생성하는 것까지는 그렇다 치고

그런데 두 번째 rngAll 범위는 쌩뚱맞게 C열 범위를 택하고 있습니다. 그럼 도대체 C열에는 어떤 데이터들이 있다는 말인지?

세 번째, 워크시트 함수를 빌려쓰는 부분 역시 주석의 내용 A1, A3 셀과 실제로 대입되는 좌변의 개체 식 Cells의 행, 열이 맞지 않음은 앞에 지적과 같습니다. 주석이 맞는 것인지, 코드가 맞는것인지, 최대,최소를 구한 목적은 무엇인지?

최대, 최소를 구하는 것이 목적이라면 이미 워크시트 함수를 이용하는 이 대목에서 답은 구해지는데

그 아래에 굳이 For 루프를 돌려서 전통적인 알고리즘을 구현한 이유는 또 무엇인지?
뿐만 아니라, 여기서도 실제 실험 데이터는 A열에 있는데, 코드는 C열인 ranAll을 대상으로 하는데다가 답을 저장하는 장소 역시 A열인 것 같기도 하고 B열인 것 같기도 하다는 문제입니다.
05-28 (00:18)
삭제 ■신고
조삿갓결국...
대상 데이터 원본은 A열에 있는 겁니까, 아니면 C열에 있는 겁니까?

답은
최댓값 저장하는 셀은 정확히 어디입니까? A1인가요, B1인가요?
최솟값 역시 어디에다 저장할 목적입니까?

최대/최소값만 구하면 되는 겁니까, 아니면 알고리즘을 공부하고 싶다는 것입니까?
05-28 (00:20)
삭제 ■신고
        
  

작성일 : 2018-05-26(05:13)
최종수정일 : 2018-05-26(05:13)