본문 바로가기
[엑셀/VBA] 전체시트 PDF로 출력하기 엑셀 전체시트 PDF로 출력하기엑셀시트를 PDF로 저장할 경우가 많은데, 저장하는건.. 그냥 다른이름으로 저장하면 되고,모든 시트를 페이지로 저장할때는 옵션 하나만 건드려 주면 끝이다. 그럼에도 불구하고, VBA로 단추를 하나 만들어주면 편하지 않을까 해서, 시작한 일인데, 의외로 좀 짜증나는 설정을 해줘야한다. 2019. 9. 19.
[엑셀] 열 피벗 해제하기... 파워쿼리 파워쿼리 사용해서 엑셀의 열 피벗 해제하기피벗테이블로부터 생성된테이블이나, 임의로 작성한 테이블을 보다보면,크로스 테이블 형태로 되어있어 더 이상의 편집이 애매한경우가있는데,   다시 DB테이블로 돌려놓는 작업을 연습해 봤습니다.파워쿼리는 처음써보는 기능인데, 각종 DB를 불러오기 편하게 되어있는 듯 하네요,    맘잡고 스터디좀 해봐야겠습니다만, R에서 자주보던 형태이긴 하네요. 2019. 9. 16.
[엑셀] 동일조건인 값이 2개 이상일때, 첫 값과 마지막 값 찾기 엑셀 - 동일조건인 값이 2개 이상일때, 첫 값과 마지막 값 찾기2개 이상의 조건값을 테이블에서찾을때, SUM배열함수나 SUMPRODUCT를 사용하게되는데, 조건결과값이 2개 이상이면, 해당값이 합산된다.합산을 원치않는경우, INDEX/MATCH를 사용하면, 값만 반환을 받을수 있는데, 반환되는값이 기본적으로 데이터 테이블의 순서상 첫번째 값이나온다.. 물론 첫번째 값이라는건 현재의 정렬기준인데, 다른 열의 정렬에 따라 첫번째 값은 바뀌게 된다. 그럼에도 정렬이 원하는데로 되어있다면, 순서상 마지막값을 반환하도록 만드는방법도 필요할 것이다. 그래서 찾아낸... 아는 사람만 아는 그 방법..    이정도면,, 수식이 좀 과하지 않나 싶다. ㅋㅋ 2019. 9. 9.
[엑셀/VBA] _xlfn 에러, textjoin 함수 VBA로 대체해보기 _xlfn 에러, textjoin 함수 VBA로 대체해보기_xlfn에러는 엑셀 2016버전에 새로 생긴 함수를 _xlfn은 2016 버전에서 지원하는 함수를 이하 버전에서 켰을 때 나오는 에러문구인데,예를들어 textjoin함수가 있겠다.억울하고 원통하지만, 이하버전에서는 이 기능을 못쓰게 되니, VBA로 대체 해봐야한다.    특히 회사에서는 2016버전을 쓰는 곳이 별로 없을 것 같은데, 뭐,,, MS도 장사하는거니 탓할수는 없다.약간 놀라운건 무료로 제공되는 안드로이드판 엑셀에도 이런 함수들이 적용이 되어있다는 점이다.그냥... 로컬 프로그램을 업데이트 하는 과정이 복잡한걸로 이해한다. 2019. 9. 8.
[엑셀] 피벗테이블 없이 동적인 리스트로 요약테이블 항목 만들기(match, index, countif) 피벗테이블 없이 동적인 리스트로 요약테이블 항목 만들기(match, index, countif)배열함수로 VBA처럼 조건문을 활용해야는 경우가 많은데, 아무래도 생각을 좀 해야하는 관계로;; 사용에 소극적이 될수 밖에 없다. 하지만, 한번 생각하고 서식에 두고두고 써먹을 수 있다면 의미가 있다고 생각한다. 지금 적는 글도 그와 다르지 않으니, 테이블에서 중복값을 없애고 새로운 요약테이블 항목을 만드는 작업이다.     내 경우에는 이해는 해도 막상 자유자재로 응용을 할수 있을까란 생각이 들었다. 하지만, 아무렴어떤가.. 지금의 문제를 해결한게 중하지.. ㅋ   아래 그림의 A열과 같이, 중복값을 처리할 target area가 있다고 하자. 영역을 tarr2로 이름정의를 해두었다. step #1 match.. 2019. 9. 4.
[엑셀VBA] 숨겨진 시트 전부 한방에 꺼내기 엑셀VBA로 숨겨진 시트 전부 한방에 꺼내기내가 숨겼든 남이 숨겼든, 숨겨져 있는 시트를 숨기기 취소로 일일이 꺼내기는 참으로 귀찮은 일이다.적어도 2013까지는 일괄 숨기기 취소나, 여러개를 선택해서 취소하는 기능이 없는 것 같아, VBA코드로 간단하게 짜본다.    [코드샘플]Sub showHiddenSheet() '감춘시트전체활성화 wsCount = Worksheets.Count For sheetCount = 1 To wsCount    Worksheets(sheetCount).Visible = True Next sheetCount Worksheets(1).Activate End Sub 2019. 8. 22.
[엑셀VBA] 랜덤 셀선택 값 표시 가끔 뽑기를 엑셀로 만들때가 있다.워크시트 함수로 만들면, 랜덤함수는 셀계산을 매번하는데, VBA로 만들면, 이를 방지할 수 있다.예를 들어, 몇 개의 숫자가 있고, 이를 임의로 가져오는 방법을 함수와 VBA로 만들어 봤다.    여러가지 방법이 있겠으나, 함수로 쓰면 대략 이런 모양이 되지 않을까?="선택한 값은 "& TEXT(OFFSET(D5,0,RANDBETWEEN(0,10)),"#,###") &" 입니다." 이번에는 VBA로 RANDBEETWEEN 함수를 OFFSET과 함께 사용했다. 별 건 없다. 여기에 기준셀을 선택하는 인풋창을 넣어두면 더 사용하기 편할 수 있겠지만 귀찮아서 패스. [코드샘플] Sub choice_value() Dim x As IntegerDim y As IntegerDim .. 2018. 2. 23.
[엑셀] 구간별 개수를 세는 방법(배열함수/countif함수) 엑셀 구간별 개수를 세는 방법(배열함수/countif함수)얼마전, 포인트 구간별 해당자수를 구할 일이 있었다.동료가 작성한 엑셀 문서를 봤는데, 놀라운 수식을 썼더라. 아래 왼쪽 테이블처럼 점수들이 혼재되어 있다고 치자.모두 51점에서 100점 사이에 위치한다고 치고,91~100 / 81~90 / 71~80 / 61~70 / 51~60 구간대별 개수를 세고 싶다고 하자. 왼쪽 표처럼 점수가 있다.당신이라면 어떻게 하겠는가...    동료가 가져온 엑셀 테이블이다.countif로 기준점수이상의 값을 찾는 수식을 쓰고, 놀랍게도, 상위값을 빼기로 했다.놀라운 노가다에 가까운 창의적 발상이다.값은 제대로 나오지만, 구간이 10개라면,,, 또는 그 이상이라면, 노가다에서 개노가다로 바뀌겠지.    배열수식으로 .. 2018. 1. 9.
[엑셀VBA] 시트 복사하기 - 특정 리스트로 갯수, 시트명 설정 엑셀VBA로 시트 복사하기 - 특정 리스트로 갯수, 시트명 설정제목만큼이나 난해하다. 1, 2, 3번 시트가 있다.이 중 2번 시트를 여러개 복사하는데,3번 시트에 있는 리스트의 갯수만큼 복사하고,이에 해당하는 이름을 붙이고 싶다.    [코드샘플] ' Null은 없을 것' 영역이 붙어 있을 것Sub 시트생성()    Dim s As Integer    Dim e As Integer       On Error Resume Next    Application.DisplayAlerts = False    '시트명으로 사용할 변수 영역 선택    Set rename_area = Application.InputBox("업체명 위치를 입력하세요", , , , , , , 8)    Application.Displa.. 2017. 12. 19.
[엑셀VBA] 짝수값이 들어있는 셀만 색칠하기 엑셀VBA 짝수값이 들어있는 셀만 색칠하기한동안 VBA를 안했더니 까먹어간다. 테스트 삼아 간단한걸 짜보자.특정 영역에서 값이 짝수이면, 회색을 칠하고,우측셀에 +1 한 값을 넣어본다.   아무 의미는 없다.어느새 mod 함수를 까먹고 있었다는 사실을 알아냈다. [코드샘플]Sub range_T()Dim a As RangeDim k As IntegerSet a = Range("a1:a10")For i = 1 To 10    k = Val(a(i))        If k Mod 2 = 0 Then          a(i).Offset(0, 1) = k + 1          a(i).Interior.Color = RGB(97, 97, 97)        End IfNext iEnd Sub   모르는 걸 인지.. 2017. 9. 21.
[엑셀VBA] 날짜 계산 엑셀 날짜 계산특정 날짜가 있다.30일,60일 뒤의 날짜가 몇일인지, 메시지 창을 띄워보자, 네이버 광고중에 30일단위 계약되는 상품이 있다.그걸 계산해 보자.   [1단계]인풋박스로 날짜를 입력받아서, A1, A2 / B1, B2 / C1, C2 셀에 나오게 했다.날짜 데이터를 LEFT, RIGHT, MID 함수로 쪼갯다.꽤나 노가다다.설계 단계라고 해두자.Sub brand_search_date()    start_date = InputBox("브랜드검색 시작 일자를 입력하세요(yyyy-mm-dd)", , "2017-")    Cells(1, 1) = "브랜드검색 시작일자 : "    Cells(1, 2) = start_date    Cells(2, 1) = "브랜드검색 30일 계약종료 일자 : "  .. 2017. 9. 18.
[엑셀] 날짜 데이터 참조시 날짜 서식 유지하기(text함수) 엑셀 날짜 데이터 참조시 날짜 서식 유지하기(text함수)날짜는 참 귀찮은 형식이다.엑셀에서도 그렇고, 다른 프로그램에서도 마찬가지일 것이다.      그럼에도 반드시 써야하기 땜시, 알아야 하겠지.우릴 귀찮게 하는 근본원인은, 날짜 데이터는 실제 데이터와 보여지는 데이터가 다른데서 부터 출발하겠다. 예를 들어 2017년9월14일은 실제로는 42992이다.아래 표를 보자.날짜형식으로 2017-09-14만 적는다면 아무 문제가 없다.물론 포맷도 자유롭게 바꿀수 있다.   하지만, 데이터를 참조해서, 뒤에 추가적인 텍스트를 붙인다면 얘기가 달라지겠다.그냥 텍스트와 연결하면, 날짜 데이터는 본 모습을 드러낸다. 그래서 text함수를 쓴다.=text(참조셀, "문자포맷")    아주 간단하지만, 모르면 매우 짜.. 2017. 9. 14.