엑셀 값만 복사하기! (VBA을 이용한 복사영역 조절)

학습/엑셀 VBA|2011. 3. 22. 23:25
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


엑셀을 사용하다가 복사를 하고 싶은데.. 서식이 언제나 같이 붙어서 다닌다.
특히 표를 만들어 두었는데 표의 테두리가 같이 따라오는 것이 영 불편하다..
뭐... 핫키를 이용해서 사용할 수도 있고, 붙여넣기 옵션이 있지만..



영 불편하다..

그래서 VBA으로 복사영역을 따오고.. 값만 현재 선택한 셀에 붙여넣기 하려고 Script를 작성했다.


Sub CopyValues()

ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationNone, SkipBlanks:=True

End Sub

ActivCell은 현재 선택된 Cell을 의미하고
PasteSpecial은 복사영역을 가져온다

그냥 복사하기 위해서는
Active.PasteSpecial를 사용하면 된다.

그래서 옵션으로

Paste:=xlPasteValues 값을 지정하게 된다.
그러면 값만 복사해주게 된다.

뭐.. 그냥 편히 쓰고 싶으시면 위의 매크로를 Copy&Paste하시고,
매크로를 등록하고 Ctrl + B 정도의 핫키를 쓰시면 됩니다.
(다만 사용시에 복사영역이 없을 경우에는 오류를 출력합니다;;)

==아래는 조사하면서 알게 된 PasteSpecial의 매개변수이다. ==

Paste
붙여넣을 값을 정의하는 부분이다.

xlPasteAll
xlPasteColumnWidths
xlPasteComments
xlPasteFormats
xlPasteFormulas
xlPasteFormulasAndNumberFormats
xlPasteValidation
xlPasteValues
xlPasteValuesAndNumberFormats
xlPasteAllExceptBorders
msdn 설명글 주소
http://msdn.microsoft.com/ko-kr/library/microsoft.office.interop.excel.xlpastetype(VS.80).aspx

Operation
붙여넣기할 때 하는 작업 방식이다.
xlPasteSpecialOperationAdd
xlPasteSpecialOperationDivde
xlPasteSpecialOperationMultiply
xlPasteSpecialOperationNone
xlPasteSpecialOperationSubtract
msdn 설명글 주소
http://msdn.microsoft.com/ko-kr/library/microsoft.office.interop.excel.xlpastespecialoperation(VS.80).aspx

SkipBlanks
복사해서 넣을 때 빈 셀을 같이 붙여 넣을 경우 True, 아닐 경우 False
(빈 셀을 클립보드에 포함할지 아닐지를 결정하는 옵션)

Traspose
범위를 붙여넣을 때에 행과 열을 바꾸면 True, 아닐 경우 False



---
각 옵션들의 설명은 나중에 추가로 포스팅하겠습니다.
일단은 msdn을 확인해보시길...


댓글()

잡담을 합니다.

잡담|2011. 3. 22. 23:25
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

잡담이란?
  한문으로는  雜섞일 잡에 談말씀 담이라 하고
  영어로는 chat, small talk 등 여러가지 표현이 있습니다.
  네이버 국어사전에서 잡담의 의미를 찾아보면 '쓸데없이 지껄이는 말'. 이라고 되어있죠.

하버드에서 사람이 일평생 하는 말의 비율에서 잡담이 차지하는 비율은 약 90%정도라는 연구 결과가
있었습니다. 즉, 사람이 하는 말은 90%는 쓸데없이 지껄이는 말이라는 것이죠. 물론 개개인의 차이가 있겠지만, 결국 사람이 하는 말 중에서 잡담이 아닌 정말 의미있는 쓸모있는 말은 10%도 안되는 것입니다.

그렇다면 10%의 의미있는 말을 하는 순간이 어느 때인가 하면 순수한 어린 아이일 때 하는 말들이 그 대부분을 차지하고 있다고 합니다.  그 이유를 연구한 교수가 말하길, '사람은 나이가 들수록, 생각이 많을수록, 아는 것이 늘어 날수록 진실된 이야기를 할 수 없기 때문이다.' 라고 합니다. 
예를 들어 A라는 사람 있다고 가정할때 A는 어릴때는 자신의 생각하는 바를 있는 그대로 솔직하게 이야기 합니다. 그러나 나이가 들어갈수록 진실된 이야기를 하는것이 힘들어집니다. 수많은 이유가 있겠지만, 사람은 나이가 들면서 아는것이 많아지고 생각이 많아지면서 자신이 솔직하게 말하는것이 자신에게 득이 되지 않는다는것을 깨닫는다고 합니다. 즉, 내가 한 말이 상대방에게 어떤 영향을 주게 될지를 알고 있기에 쉽게 그 사람에게 진실을 전하지 못합니다. 결국, A라는 사람이 어른이 되어 갈수록, 그가 하는 말의 대부분은 잡담이 되어버리는 것입니다.

하지만 여기서 또 재미있는 사실이 있습니다.
A가 말하는 잡담은 B에게는 진실된 말일 수 있다는 것이죠. 즉, B입장에선 A가 잡담을 한게 아니라 의미있는 중요한 이야기를 했다고 생각한다는 것이죠. 그리고 그 반대도 있을 수 있습니다.
그렇다면, 말을 한 A외에는 A가 잡담을 했는지 아니면 진담을 했는지, 도저히 알 방법이 없습니다.

A가 '~한 것이 ~한 것이다' 라고 이야기 했을 때, 이것이 진실인지, 잡담인지 구분할 수 있는 사람은
말을 한 화자인 A밖에 없다는 것이죠.그런데 문제는 그럼 A가 이야기 할때 잡담이 아니고 진담이라고 말해주었을때 그것이 진담인지 아닌지도 A밖에 알수 없습니다. B라는 사람 입장에서는 이 사람이 진담인지 농담인지를
구분하는 기준이 자신의 주관적인 생각밖에는 없으니까요. 
그래서 그 교수가 A의 말이 잡담인지 진담인지 구분하기 위해서 필요한 것이 뉴타입이였습니다.
자신의 의사를 왜곡되지 않은 진실로 전달하기 위해서는 진화된 인류인 신인류, 즉 뉴타입이 필요하다고 한것입니다. 하지만 뉴타입이 되기 위해서는 인류가 견디기 힘든 우주공간에서 적응을 해야 뉴타입이 될수 있었습니다.

결론은 이 글은 잡담이였습니다.

댓글()

구글 에드 센스 달아보기!! 1편 가입하자!!!

쓸만한 정보들|2011. 3. 22. 22:51
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
ㅎㅎ 구글 에드 센스 달아보기 1편!!!

- _- 후... 구글 에드 센스를 달아보자!
(이걸로 돈이나 만질 수는 없겠지만.. ㅋ 한 번 달아보게!)



1) 먼저 가입합니다.

사이트는 아래와 같네요..

www.google.com/adsense/ 

ㅎㅎ 일단 생각 없이 바로 가입 신청!!

헐.. 근데 생각보다 쓸게 많다;;;
알아보니 아래 그림과 같이 입력해주면 되요


이렇게 입력하면!

가입 신청을 할 수 있어요

가입 신청 이후에는 g-mail 개정을 이용할건지 아니면 타 사이트 이 메일로 등록할건지 묻게 됩니다.
뭐.. 전 간단히 네이버 메일로 요청했음

일단 1~2 기다리면 답이 오겠죠
(안 오면 안하고.. 어차피 궁금해서 해보는거라..)

댓글()

[엑셀]10억을 1로 표시하는 방법, 천을 1로 표시하는 방법

학습/엑셀 VBA|2011. 3. 22. 21:46
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


엑셀에서 1,000,000,000을 1로 표시하는 방법

엑셀의 셀 서식에서 #,,, 으로 설정하면 된다.

',' 하나당 1000단위를 설정하는 것으로 # 뒷 부분에 3개의 ','을 써 놓으면 약 9개의 단위를 제외한다.

4개 단위로 제외하는 방법은 잘 모르겠다.

아래는 엑셀의 사용자 지정 서식 코드 법이다.
http://office.microsoft.com/ko-kr/excel/HP051986791042.aspx?pid=CH010036911042

댓글()

VBA에서 엑셀 함수 이용하기.

학습/엑셀 VBA|2011. 3. 22. 21:45
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

VBA 쓰다가 가끔씩 필요한 함수들이 있기 마련이다
근데 엑셀에서 함수로는 기억이 나는데.. VBA은 어떤거지 라고 의문이 날 때가 있다.


-_- 그 때마다 공간 하나에 함수를 쓰고 가져오는 방법도 쓰지만..
Exam>


Range("B1").FormulaR1C1 = "=SUM("A:A")"  .. 뭐 이런식??으로 쓰고
Range("B1").Value                                    이런 식으로 값을 가져오는 방법..


하지만 그 보다  간단하고 좋은 방법이 있다.


dim fSum as SIngle
fSum =Evaluate("=SUM(A:A)")


부왘!
이렇게 그냥 바로 Evaluate를 사용하면 된다!


다른 방법으로...


Application.WorksheetFunction.sum()...
Application.WorksheetFunction.Acos()...
Application.WorksheetFunction.pi()...


처럼 Application의 Function으로 바로 접근하는 법도 있지만.. Excel함수를 바로 사용하는게 아니라서.. 익숙치 않아 힘들 때가 있으니깐.... 잘 안쓰게 되더라..


뭐 그렇다는 겁니다...


*반말 표현이나 상스러운 표현이 있더라도 이해해주세요 ㅠㅠ
*혼자 정리하기 위해서 쓰는 문서라서 그래요...

댓글()