목록엑셀 (213)
rand(life)
엑셀에서 매크로를 실행하여 특정 폴더안의 모든 워드 문서 중에서 본문에 특정한 단어가 있는지 검사한 후 해당 단어가 있는 문장과 문장의 첫단어가 있는 라인 수 해당 파일의 이름을 출력하는 매크로이다 VB편집기에서 도구 - 참조 클릭하고 Microsoft Word Object Library에 체크를 해야 작동한다. Option Explicit Sub macro() Dim WApp As Object, WDoc As Object, WDR As Object Dim ExR As Range, sPath As String Dim str2Find As String, myData As String, sFname As String, myfile As String Dim myline As Long Set ExR = Rang..
파워쿼리를 이용하여 다른 파일에 들어있는 데이터를 취합하는 방법은 이전에 올린 적이 있습니다. 이번에는 같은 파일안에 있는 여러 시트에서 데이터를 취합하는 방법입니다. 엑셀 2016 버전 기준으로 작성하였습니다. 엑셀 2010 ~ 2013버전은 추가기능을 다운로드하여 설치하면 사용할 수 있습니다. (2007버전 이하에서는 파워쿼리를 사용할 수 없습니다.) 먼저, 각 시트의 데이터를 “표(Table)”로 만들어야합니다.여기서 “표”는 일반적으로 우리가 사용하는 의미의 ‘가로 세로 사각형 안에 데이터를 집어넣는 것’이 아니라, 엑셀에서 특수한 기능을 하는 표입니다. 표로 만들어 두면 좋은 점이, 나중에 일부 시트에서 값의 변경이 생겼을때, 일일이 모든 시트를 다시 취합할 필요 없이, ‘새로고침’ 한 번으로 ..
네이버 지식인 노하우에 쓴 글입니다. 2016버전부터 정식으로 엑셀의 기능으로 들어온 파워쿼리를 이용해서많은 일을 간단하게 할 수 있게 되었습니다. 예를 들어, 여러개의 파일을 통합하여 하나의 파일을 만드는 일 같은 경우, 이전에는 VBA(매크로)를 이용해야했었지만, 파워쿼리를 이용하면 VBA를 몰라도 파일을 통합하는 일을 손쉽게 할 수 있습니다. 단순 통합 뿐 아니라, 데이터를 용도에 맞게 적절히 변형하여 통합파일을 만들 수도 있습니다. 아래는 특정 폴더 안에 있는 모든 csv 파일을 하나로 통합하고, 첫번째 열을 추가하여, 첫번째 열에는 파일명 중 숫자 부분을 넣는 작업에 대한 설명입니다. 엑셀 2016 버전 기준으로 작성하였습니다. 엑셀 2010버전 이상은 추가기능을 다운로드하여 설치하면 사용할 수..
네이버 지식인 노하우에 쓴 글입니다.100% 제가 한 것은 아니고, 외국의 한 사이트에 있는 방법을 가져왔습니다. 이중 유효성 검사를 구글 드라이브 시트에서 만드는 방법입니다. 엑셀에서는 indirect 함수를 이용하여 만들 수 있습니다. 참고: http://ttend.tistory.com/251 구글드라이브에서는 이름정의나 indirect함수가 엑셀과 똑같이 작동하지 않아서 위의 방법을 그대로 적용할 수 없습니다. 아래와 같이 해보세요 1. 일단 아래와 같은 표를 만들어 둡니다. 어느 셀 (여기서는 F2셀)에서 A사를 선택하면다른 셀(여기서는 G2셀)에서 A사의 제품인 '초콜렛,초콜렛바,사이다,콜라'가 유효성검사 목록으로 뜨게 만들겁니다. 2. F2셀을 선택하고 상단 메뉴에서 데이터 - 데이터 확인하고..
네이버 지식인 노하우에 쓴 글입니다.위의 그림처럼 D2셀에 사진의 이름을 주면, 그 이름과 같은 이름의 사진을 D5셀에 나타나도록 하는 방법입니다. 별도의 시트에 위와 같이 사진 이름과 사진을 매칭시켜 정리해두어야 합니다. 그 다음, 사진 하나를 아무거나 복사합니다. (Ctrl-C) 이제 사진이 나타나야하는 셀을 선택하고 그림으로 붙여넣기를 합니다. "붙여넣기"에서 역삼각형을 클릭하면 나타나는 메뉴에서 "그림"을 선택하면 됩니다. 이제 그림을 셀의 크기에 맞게 적당히 조정해줍니다. 수식 - 이름관리자로 가서 이름정의를 해줍니다. 상황에 따라 다르겠지만, 첨부화일의 경우에는 "사진위치"는 =INDEX(사진범위,MATCH(Sheet2!$D$2,사진이름,0),1)"사진범위"는 =데이타!$C$2:$C$4"사진이..
지식인 질문에 대한 답"한 시트에 여러 페이지가 있는데, 각 페이지를 별개의 시트로 나누는 방법"에 대한 문의였다. HpageBreak가 페이지 나누기니까, 그것을 기준으로 순환문을 돌리면 된다고 간단히 생각해서, 답변을 주려고 했는데예제 파일을 보니 시트 안에 글자만 있는 것이 아니라 도형과 차트들이 들어있었다문제는, 도형과 차트는 시트 복사를 하면 문자처럼 자동으로 같이 따라 오는 것이 아니라각 개체별로 따로 복사해서 위치를 조정해주어야한다는 점이었다. 그래서 작업의 순서를 다음과 같이 잡았다 1. 페이지나누기 갯수대로 원본시트복사하기2. 해당 각 페이지의 범위 설정 (eg. 2페이지는 15행~30행)3. 범위에 들지 않는 페이지는 삭제 (2페이지가 아닌 1~14, 31~끝은 삭제)4. 원본 시트에서..
지난 번에 쓴 글과 비슷한 내용인데 A처럼 되어있는 것을 B와 C열로 분리하는 작업이다. Option Explicit Sub macro()Dim r As RangeDim lc As LongDim s As StringDim bl As Boolean For Each r In Range("A1").EntireColumn.SpecialCells(2) Do lc = lc + 1 s = Mid(r, lc, 1) If Asc(s) = 32 Then bl = False ElseIf Asc(s) 122 Then bl = True End If Loop Until bl = True r(, 2) = Left(r, lc - 1) r(, 3) = Mid(r, lc) lc = 1 bl = False ..
Scripting.Dictionary를 이용한 방법이다. 지식인에 올라온 질문에 대한 답으로 작성했다.(들어가려면 성인 인증이 필요하다)특정 시간이 3회 이상 등장한 경우, 해당 시간에 발생한 수량을 합산하고, 같은 수량이 특정 구간에 3회 이상 반복 등장할 경우, 그런 수량들을 모두 더하는 결과를 나타낸다. Scripting.Dictionary를 이용해서 3회 이상 등장하는 시간을 Key로, 해당 시간에 발생한 수량을 Item으로 더하는 방법은 이전에 빈도 순위 높은 문자, 숫자 찾기에서 사용했던 방법과 동일하다. If Va(iv, 1) >= ds And Va(iv, 1) = 3 Then iCount = iCount + (ak(i) * ai(i)) Next순환문을 이용해 item이 2이상이면 item의..