좋은 강의 감사드립니다. 한가지 질문 드립니다. 2차원 배열일때 arr(행,1번째열)의 자료와 arr(행,2번째열) 자료를 각각 특정 셀들에 입력 할수 있을까요? For i = 1 To UBound(arr, 1) Range("A1").Offset(i, 0).Value = arr(i, 1) Range("A1").Offset(i, 1).Value = arr(i, 2) Next i 이렇게 해야 하는 방법은 생각나느데, 시간이 엄청 걸리네요..ㅠㅠ 시간도 줄일수 있는 방법 있으면 가르침 부탁드립니다.
반복문 안에서 배열을 써서 두 개가 비슷해 보입니다만 서로 다른 개념입니다. 1. 반복문: 학습자 20명의 토익 점수를 판단해서 A, B, C, D 네 개의 학점을 주고 싶다. 조건문을 사용해서 If 학습자 >= 900 then "A" Elseif 학습자 >= 800 then "B" 블러블러.. 위의 조건문을 20번을 반복해서 돌려야 20명의 토익점수에 대한 학점이 출력되겠지요. 이 때, 20번 루프를 돌리는 구문을 '반복문' 이라고 합니다. 2. 배열: 변수(일반변수)는 기본적으로 한 방에 하나의 값만 저장이 됩니다. 그 방을 파티션 분할해서 여러 개 방으로 나누고 그 나뉜 방에 값을 하나씩 넣게 되면 겉으로 봤을 때는 하나의 방처럼 보이지만 내부적으로는 수 많은 나뉘어진 방에 값을 많이 넣을 수 있으므로 값을 읽고 처리하는 속도가 현저히 빨라집니다. 이것을 배열변수라 하고 보통 '배열'이라고 편하게 부릅니다.
배열로 가져오면 값만 가져오지요. 일단 배열로 원하는 영역에 데이터를 뿌린 후, 수식을 넣는게 어떻겠습니까. '엑셀 데이터처리 #15' 영상을 참고하세요. 하지만 수식을 직접 입력하는 방식은 데이터가 많으면 처리속도가 떨어집니다. 어떤 수식인지는 모르지만 워크시트 함수를 쓸 수 있는 상황이라면 함수로도 테스트해보세요. application.worksheetfunction.sum(계산범위)
네, 맞습니다. 메모리에서 비워내는 동작입니다. 보통 잘 만들어진 프로시저를 보면 프로시저를 빠져 나가기 직전 'Erase 배열변수'를 써서 메모리를 비우면서 처리속도를 높이는 효과를 내는 거지요. 동적배열의 공간이 작아도 프로시저 빠져 나가기 전 배열이나 개체변수를 reset해주는 것이 아주 바람직한 코딩 습관입니다.
선생님 배열 개념을 조금씩 터득하고 있습니다. 감사합니다 질문이 있는데 영상에서 동적배열 aa(i) 가 배열로 {0,1,2}값을 가지고 있는것같습니다. 이걸 시트 a1:c1에 뿌리려면 어떤 코드를 써야할까요 ? 그리고 for each 문도 셀각각의 내용을 하나씩 핸들링 할수 있는 개념인것 같은데 배열도 비슷한 것같아서 개념상 좀 헷갈립니다. 단순히 for next 중첩으로 코딩을 만들었는데 row data 가 5만개를 넘어가니 매우 버벅거려서 정말 속도 개선이 필요합니다. 매우 절실합니다. 선생님 도움 부탁드립니다 ㅠㅠ 그럼에도 여기까지 올 수있게 강의 만들어주셔서 너무 감사합니다!
그렇지요. 배열로 가져오면 값만 가져옵니다. 배열로 가져와서 특정영역에 뿌린 후, 수식을 넣으면 어떨까요? '엑셀 데이터처리 #15' 영상을 참고하시면 됩니다. 하지만 데이터가 많다면 수식을 직접 입력하는 방식은 처리속도가 떨어집니다. 그 수식이 어떤 수식인지는 모르겠지만 수식 대신 워크시트 함수를 사용하는 것도 테스트해보세요. applcation.worksheetfunction.sum(계산범위)
오...최고입니다
이해가 쏙쏙되네요
항상 배열과 포인터에 대해 볼때만 이해되고 쓰려고하면 헷갈리고 그러던데
귀에 쏙쏙들어옵니다^^
감사합니다^^ 어렵지만 꾸역꾸역 배워나가고 있습니다^^
영상을 보시면서 학습하시고
나의 실무 파일에 적용해보셔야 잊어버리지도 않고
나의 실력으로 차곡차곡 쌓이더군요.
꾸역꾸역...이 조만간 반짝반짝이 될겁니다.
화이팅입니다!
좀 더 빨리 알았더라면 아쉬움이 많이 남네요 ^^. 항상 즐겨 보고 있습니다.
좋은 강의 감사드립니다. 한가지 질문 드립니다. 2차원 배열일때 arr(행,1번째열)의 자료와 arr(행,2번째열) 자료를 각각 특정 셀들에 입력 할수 있을까요?
For i = 1 To UBound(arr, 1)
Range("A1").Offset(i, 0).Value = arr(i, 1)
Range("A1").Offset(i, 1).Value = arr(i, 2)
Next i
이렇게 해야 하는 방법은 생각나느데, 시간이 엄청 걸리네요..ㅠㅠ 시간도 줄일수 있는 방법 있으면 가르침 부탁드립니다.
차분한 핵심 강의로 너무 잘 배웠습니다. 너무 너무 감사합니다.
제가 더 감사드려요~~~
dim a() 뒤에 as 변수 없어도 컴파일 오류가 나질 않던데, 배열함수라서 as long, string 등을 쓰지 않는 것인가요? 강의 늘 감사합니다~!
좋은 강의 감사드립니다! 반복문과 배열이 비슷한 느낌이 있는 것 같아 두 가지의 공통점과 차이점이 무엇인지 알려주시면 감사하겠습니다!
반복문 안에서 배열을 써서 두 개가 비슷해 보입니다만
서로 다른 개념입니다.
1. 반복문:
학습자 20명의 토익 점수를 판단해서 A, B, C, D 네 개의 학점을 주고 싶다.
조건문을 사용해서
If 학습자 >= 900 then
"A"
Elseif 학습자 >= 800 then
"B"
블러블러..
위의 조건문을 20번을 반복해서 돌려야
20명의 토익점수에 대한 학점이 출력되겠지요.
이 때, 20번 루프를 돌리는 구문을 '반복문' 이라고 합니다.
2. 배열:
변수(일반변수)는 기본적으로 한 방에 하나의 값만 저장이 됩니다.
그 방을 파티션 분할해서 여러 개 방으로 나누고
그 나뉜 방에 값을 하나씩 넣게 되면
겉으로 봤을 때는 하나의 방처럼 보이지만
내부적으로는 수 많은 나뉘어진 방에 값을 많이 넣을 수 있으므로
값을 읽고 처리하는 속도가 현저히 빨라집니다.
이것을 배열변수라 하고
보통 '배열'이라고 편하게 부릅니다.
사소한 질문이 있습니다.
영상의 6:00에 보면
Dim aa()
Dim i as long, cnt as long 이라고 나오는데요.
그냥 한줄로
Dim aa()
, i as long, cnt as long 라고 하면 안되나요?
유익한 영상에 감사드려요.
네. 그러셔도 전혀 문제 없습니다.
이 부분은 개인적 코딩 습관입니다.
저는 같은 타입끼리 묶어서 씁니다.
그래야 변수가 많을 때 찾기가 쉽거든요.^^
절대 사소한 부분이 아닌
세심하고 훌륭한 질문이십니다.♡
질문이 하나있습니다 혹시 배열에 값을 넣는것이 아니라 그 셀에있는 수식을 넣고 불러올수없을 까요?
지금 원시트에서 타시트의 단가들을 들고오도록 되어있는데 배열로 정리하니 단가 물려있는 =수식이 없어지고 값만 남아있어서요
배열로 가져오면 값만 가져오지요.
일단 배열로 원하는 영역에 데이터를 뿌린 후,
수식을 넣는게 어떻겠습니까.
'엑셀 데이터처리 #15' 영상을 참고하세요.
하지만 수식을 직접 입력하는 방식은
데이터가 많으면 처리속도가 떨어집니다.
어떤 수식인지는 모르지만
워크시트 함수를 쓸 수 있는 상황이라면 함수로도 테스트해보세요.
application.worksheetfunction.sum(계산범위)
erase구문은 동적배열이 차지하는 공간이 클때 처리속도를 높이기 위해 쓰는 건가요?
네, 맞습니다.
메모리에서 비워내는 동작입니다.
보통 잘 만들어진 프로시저를 보면
프로시저를 빠져 나가기 직전
'Erase 배열변수'를 써서 메모리를 비우면서 처리속도를 높이는 효과를 내는 거지요.
동적배열의 공간이 작아도
프로시저 빠져 나가기 전
배열이나 개체변수를 reset해주는 것이
아주 바람직한 코딩 습관입니다.
선생님 배열 개념을 조금씩 터득하고 있습니다. 감사합니다
질문이 있는데 영상에서 동적배열 aa(i) 가 배열로 {0,1,2}값을 가지고 있는것같습니다.
이걸 시트 a1:c1에 뿌리려면 어떤 코드를 써야할까요 ?
그리고 for each 문도 셀각각의 내용을 하나씩 핸들링 할수 있는 개념인것 같은데 배열도 비슷한 것같아서 개념상 좀 헷갈립니다.
단순히 for next 중첩으로 코딩을 만들었는데 row data 가 5만개를 넘어가니 매우 버벅거려서 정말 속도 개선이 필요합니다.
매우 절실합니다.
선생님 도움 부탁드립니다 ㅠㅠ
그럼에도 여기까지 올 수있게 강의 만들어주셔서 너무 감사합니다!
선생님 혹시 실례가 안된다면 위 메일주소로 제가 만든 파일을 보내드려서 질문을 드려도 괜찮을까요 ?
@@Hello-Annyeong 오~~ vba로 자동화해서 업무에 적용하시고 계시군요. 멋지십니다!!!!
네. 메일로 보내줘 보세요.
@@엑셀디자인 와 선생님! 댓글 달아주셨었군요! 제겐 이상하게 알림이 안떠서 몰랐었어요 ㅠㅠ 지금은 어째저째 처리 속도조금 향상시켜서 하고는 있습니다. 나중에 선생님 수업때 찾아뵙고 질문드리고 싶습니다. 온라인이지만 마음써주심에 정말 감사합니다!
선생님, 강의하시는거 보면은 여러개를 드래그해서 한번에 주석처리하는 메뉴가 있던데, 저는 아무리 찾아봐도 없는데...알려주시면 감사하겠습니다.
찾았습니다. 편집을 밖으로 빼니가 메뉴가 나오네요...ㅎㅎ
질문이 하나있습니다 혹시 배열에 값을 넣는것이 아니라 그 셀에있는 수식을 넣고 불러올수없을 까요?
지금 원시트에서 타시트의 단가들을 들고오도록 되어있는데 배열로 정리하니 단가 물려있는 =수식이 없어지고 값만 남아있어서요
그렇지요. 배열로 가져오면 값만 가져옵니다.
배열로 가져와서 특정영역에 뿌린 후,
수식을 넣으면 어떨까요?
'엑셀 데이터처리 #15' 영상을 참고하시면 됩니다.
하지만 데이터가 많다면
수식을 직접 입력하는 방식은 처리속도가 떨어집니다.
그 수식이 어떤 수식인지는 모르겠지만
수식 대신 워크시트 함수를 사용하는 것도 테스트해보세요.
applcation.worksheetfunction.sum(계산범위)
♡♡