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

 졸따구 (zolddagu)

추천:  2
파일:     조회:  3530
제목:   엑셀에서 값들 빨리 뿌리는 방법좀 추천해 주세요~
     
  현제 엑셀 VBA를 이용한 에플리케이션을 만들고 있습니다.

정형화 되어 있지 않은 순서의 값들(즉 연속적인 표형태에 들어가는 값이 아닌 즉 for루프를 쓸수 없는 상황)을 시트네에 여러 셀에 뿌려주어야 합니다. 
그리고 그 값들은 구조체에 들어 있습니다.
그런데 셀 범위를 선택해서 셀에 값을 넣어주는 속도가 너무 느립니다. 

제 나름대로 실험해 본 결과
1. ActiveSheet.Range("절대좌표").Value = pjtbean.name
   --> 극악으로 느리다 

2. ActiveSheet.Range("절대좌표").Select
   ActiveSheet.Offset("상대 좌표").Value = pjtbean.name
   --> 1번보다 조금 빨라짐 하지만 그래도 느림

3. Sheets("시트네임").Cells("절대좌표").Value = pjtbean.name
   --> 2.번과 별차이 없음 

4. 각 객체에서 직접 값을 뽑아 내는 것과 이를 다른 타입(Integer String...)에 잠시 저장한후 출력하는 것과 별차이 없음 

위 처럼 나왔습니다. 값들을 셀에 표시하기 위해 가장 속도가 나는 방법좀 추천해 주십시요
부탁드립니다.

==============[하하님 글에 대한 답변입니다]==============

안녕하세요?

일부 경험과 주변에서 주어 들은 말들을 모아 보았습니다.(그러니까 50%도 정답을 보장하지 못한다는 얘기지요^^;)

1. 꼭 필요한 경우가 아니면 'Select'를 사용하지 마십시요

2. 되도록이면 Application.ScreenUpdating = False 를 사용하여 '스크린 업데이트'를 보지 않도록 하십시요

3. 계속해서 다른시트의 자료를 참조하거나 입력할 때는 'worksheet'를 객체에 'Set"하거나 이름정의를 사용해 보십시요.
 Sheets("자료").Range("A1") 보다는 
   Set Sht=WorkSheets("자료") -> Sht.Range("A1") 하거나
    Sheets("자료").Range("A1").Name = "TarR" -> Range("TarR").Offset(10, 5)

4. 연속된 일정범위(여러셀)를 입력할 때는 가능하다면 'Variant"변수를 이용해 한꺼번에 입력해 보십시요
   다음은 '자료'시트의 'A2:A6'범위의 자료를 '입력'(ActiveSheet로 가정)시트의 'F5:F9'에 한꺼번에 입력하는 방법입니다.
   Dim Sht As WorkSheet
   Dim VarA As Valiant
   Set Sht = WorkSheets("자료")
   VarA = Sht.Range("A2:A6")
   ActiveSheet.Range("F5:F9") = VarA   '여기서 ActiveSheet는 생략가능

5. 반복적으로 사용되는 개체(Object)는 With...  End With문을 사용하십시요.

그럼 즐거운 추석이...
 
[불량 게시물 신고]  
        
  

작성일 : 2003-09-09(16:21)
최종수정일 : 2003-09-10(13:11)
 


 ◎ 관련글

  제 목   작성자   날짜
엑셀에서 값들 빨리 뿌리는 방법좀 추천해 주세요~ 하하 2003-09-09
엑셀에서 값들 빨리 뿌리는 방법좀 추천해 주세요~ 졸따구 2003-09-09