반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형

오늘 동료가 두개의 sheet에 있는 데이터를 비교하는 엑셀 프로그래밍을 문의했는데요.

구글링 해 보니까 아주 좋은 소스를 누가 올려 놨네요.


한번 분석해 봐야겠어요.


Public Sub ReconReport() 
    Dim rngCell As Range 
     
    For Each rngCell In Worksheets("Sheet1").UsedRange 
        If Not rngCell = Worksheets("Sheet2").Cells(rngCell.Row, rngCell.Column) Then _ 
        Let Worksheets("Sheet3").Cells(rngCell.Row, rngCell.Column) = rngCell 
    Next 
End Sub 


처음에 rngCell 이라는 Range 를 정의했습니다.


그리고 For문을 돌리는데요.


Sheet1 이라는 worksheet의 사용된 각 cell들 만큼 루프를 돕니다.

이거 아주 유용한 라인이네요.


UsedRange Property 는 아주 유용하게 이용될 수 있을 것 같습니다.


Worksheets("Sheet1").Activate
ActiveSheet.UsedRange.Select


이렇게 하면 Sheet1 중에 데이터가 있는 셀은 모두 선택이 되겠죠.


데이터가 있는 셀 중에 첫번째 row와 맨 마지막 row를 구하려면 아래와 같이 하면 됩니다.


FirstRow = ActiveSheet.UsedRange.Rows(1).Row 
LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row 
 'or
LastRow = ActiveSheet.UsedRange.Rows(UBound(ActiveSheet.UsedRange.Value)).Row 


특정 Field의 마지막 row를 구할 땐 End(xlUp).Row 를 사용할 수도 있습니다.


Sub PickedActualUsedRange()
  Range("A1").Resize(Cells.Find(What:="*", SearchOrder:=xlRows, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
      Cells.Find(What:="*", SearchOrder:=xlByColumns, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Column).Select
End Sub


Sub SelectActualUsedRange()
  Dim FirstCell As Range, LastCell As Range
  Set LastCell = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
      Cells.Find(What:="*", SearchOrder:=xlByColumns, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Column)
  Set FirstCell = Cells(Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _
      SearchDirection:=xlNext, LookIn:=xlValues).Row, _
      Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _
      SearchDirection:=xlNext, LookIn:=xlValues).Column)
  Range(FirstCell, LastCell).Select
End Sub

Sub GetLastRowWithData() Dim LastRow As Long LastRow = Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row MsgBox LastRow End Sub

구글링 하다 보니까 다양한 예제들이 나오네요.

나중에 좀 분석해 봐야 겠습니다.


다시 원래 보던 예제를 볼까요.

For 문 안에 보면 if 문이 나옵니다.


이 if문을 번역해 보죠.

If Not rngCell = Worksheets("Sheet2").Cells(rngCell.Row, rngCell.Column) Then

Sheet1의 각 Cell 이 같은 위치의 Sheet2의 Cell 값과 같지 않으면

Let Worksheets("Sheet3").Cells(rngCell.Row, rngCell.Column) = rngCell

Sheet3의 같은 위치에 Sheet1의 해당 값을 넣습니다.

거의 영어 해석하는 것 같네요.


Sheet의 모든 값을 비교하는 로직을 이렇게 간단히 구현할 줄이야....


Excel Programming 하면 할 수록 더 재밌어 지는데요.



반응형


반응형

엑셀 프로그래밍에서 다른 함수를 호출할 때는 아래와 같이 하면 됩니다.


Call function01


호출시 파라미터를 전달하려면 아래와 같이 하구요.


Call function01("test",1)


function01은 아래와 같이 선언되어 있어야 겠죠.


Sub TotalFuel(text As String, firstNum As Integer)


......


End Sub



함수에서 값을 return 할 경우 아래와 같이 합니다.


Public Function test() As Integer
    test=1
End Function

값을 return 할 때는 Sub 대신에 Function을 사용해야 하나 봅니다.

아직 값을 return 하는 것은 사용해 보지 않았는데 한번 다양하게 사용해 봐야겠네요.


반응형

San Diego 에서 열리는 강연회 소식

2014. 2. 4. 11:02 | Posted by 솔웅


반응형

샌디에고에 있을 때 참여했던 '사람사는 세상 샌디에고' 에서 이번에 강연회 행사를 준비하네요.


혹시 이 기간에 샌디에고에 방문하실 분들이나 샌디에고에 사시는 분들은 꼭 참석해 주세요.




<<<<UCSD 유종성 교수님 강연회>>>>>
UCSD Prof. Jong-sung You's Talk for Korean Community as well as UCSD Students,
co-hosted by '사사세 샌디에고 (Sa-sa-se San Diego)’, IR/PS 'Mannam' and 'Kommon Society'

1부 한국 발전국가의 기원: 박정희 신화의 재검토
(The Origin of the Developmental State in South Korea:
A Reexamination of Park Chung-Hee Myth)

2부 한국 민주주의와 표현의 자유
(Korean Democracy and Freedom of Expression)

<1부> 7:00~7:30 강연, 7:30~7:50 질의응답
<휴식> 7:50~8:10
<2부> 8:10~8:40 강연, 8:40~9:00 질의응답

초대강사 유종성 교수
● 미국 캘리포니아대학교 샌디에고 대학
국제대학원 교수
● 하버드 대학교 케네디 행정대학원
● 미국 하버드대학교 한국학연구소 객원연구원
● 경제정의실천시민연합 정책실장, 조직국장,
기획조정실장
● 시민의 신문 편집국 국장
● 국회 광주특별위원회 문동환 위원장 보좌관
● 대한YMCA연맹 간사
● 서울대학교 사회복지학과

일시: 2014년 2월 20일 목요일 저녁 7:00시
장소: UCSD, Robinson Building Complex #3201
(http://irps.ucsd.edu/experience/our-campus/driving-directions.htm)
사용언어: 한국어
문의: danchung811@gmail.com
* UCSD 지도와 유료 주차장 안내 *
http://irps.ucsd.edu/.../our-campus/driving-directions.htm
(주차장의 자판기에서 주차 권을 구입하신 후,
차 밖에서도 확인이 쉬운 곳에 놓아두셔야 합니다.)




반응형