nØthing specia¡
Posts
129 posts루프없애는 게 대세라던데...
파이썬이나 함수형 프로그래밍 덕분에 당연히 사용하던 루프를 쓰면 웬지 촌스러운 느낌이 든다. 루프없이 쓴다면 웬지 멋있어 보인다. 얼마 전 셀 영역을 대상으로 조건부 최소값, 조건부 최대값, 조건부 표준편차 등이 필요했었다. 당연히 이를 계산하려면 필터함수 또는 루프를 사용해야 한다. 루프를 사용하지 않으려면 엑셀의 워크시트함수를 이용해야 한다. 엑셀의 워크시트함수중 조건관련함수로는 AVERAGEIF, AVERAGEIFS, SUMIF, SUMIFS 등이 있다. 그러나 MINIF, MAXIF와 같은 함수는 아직 없다. 그런데 VBA의 WorksheetFunction개체에는 MinIf, MaxIf함수가 보인다. 그런데 사용해보니 에러가 난다. 흠, 이넘들이 시험적으로 해보았다가, 현재는 함수를 삭제했
파일이 없으면 새로 만들고, 있으면 그냥 사용하기
엑셀 프로그래밍을 하다보면 외부파일(텍스트이건 바이너리이건)을 다룰 일이 그리 많치 않다. 다만 VBA의 조상님인 VB가 가진 위대한 유산을 물려받아 사용가능하다. (Open) (Input) (Line Input) (Get) (Put) (Print) (Write) (Close) 오랜만에 텍스트 파일을 열어 작업을 하려는 데, 만일 파일이 없다면 새로 만들지만, 이미 파일이 있다면 오버라이트하지 말고 내용만 추가하려고 한다. 따라서 파일이 있는 지 없는 지 알아보는 절차를 줄여야 한다. 레거시인 Open문은 이게 가능한데, Append, Binary, Output, Random 모드중 하나로 파일을 오픈하면 된다. 하지만 레거시만 있는 것은 아니다. VBA는 외부라이브러리를 사용할 수
엑셀계의 고인물
엑셀 가지고 이런 저런 장난을 치는 것을 종종 보는 데, 셀을 작게 만들고 색칠을 하여 그림을 그리는 도트장인, 게임(테트리스, 스내이크 게임등)을 만드는 장인이 있는 데, 이번에는 음악을 만드는 프로그램을 만든 사람이 있다. 이걸로 만든 '아하'의 '테이크온미'를 함 들어보자. [다운로드] xlStudio
INDEX(...MATCH...)(2)
Index(…Match…)는 의외로 쓸모가 많은 수식이다. 일단 첫 번째 컬럼에서만 검색이 가능한 VLOOKUP()의 단점을 극복하고, 직전 포스팅에서 모든 컬럼의 내용을 검색할 수 있다. 이번에는 검색결과가 여러 개 존재하는 경우 마지막 결과에 해당하는 데이터를 돌려주는 수식이다. 이것은 Oscar Cronquist가 쓴 Index Macth-Last – Last value포스팅을 옮긴 것이다. 위의 그림에서 찾는 값 'BB'에 해당하는 데이터는 네 가지이다(50, 100, 70, 10) 그중에서 가장 마지막에 나오는 '10'을 찾으려는 것이다. 수식의 핵심은 역시 MATCH()함수의 성질을 이용한 것이다. MATCH(lookup_value, lookup_array, [match_
워크시트함수 하나로 해결못하는 문제
엑셀이 많은 워크시트 함수를 제공하고, 우리는 VLOOKUP과 같은 함수 하나로 해결하면 좋겠지만 반드시 그리 쉽게 해결하지 못하는 경우가 생긴다. 이런 경우 내가 해결할 수 있는 수준으로 데이터의 구조를 바꾸거나 불가피하게 컬럼을 추가해서 보조적인 정보를 담아 그걸로 해결해야만 한다. VLOOKUP함수의 경우 매우 편리한 함수이지만, 찾으려는 데이터가 반드시 첫 번째 컬럼에 있어야 한다는 점이 문제이다. 그래서 INDEX(...MATCH...)와 같은 형식으로 수식을 만든다. 다음의 문제는 VLOOKUP이나 INDEX(...MATCH...)로 해결하기 곤란한 문제이다. 요약하면 구성원을 입력하면 구성원이 어느 그룹소속인지를 표시하는 것이다(다만 같은 이름의 구성원은 아직 해결못한다)


