목록전체 글 (561)
rand(life)
지난 번에 쓴 글과 비슷한 내용인데 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 ..
예를 들어 아래와 같이 셀 하나에 한글, 영어가 이어서 나오는 경우, 한글은 지우고 영어만 남기려고 할때 값비싼, 일류의, 화려한 expensive, popular, and fashionable 영어 소문자의 아스키코드는 97에서 122까지라는 점을 이용한 방법이다. (출저: https://blog.naver.com/dowahn/130172409926) replace 함수도 이용했다. 워크시트함수의 replace나 '찾기바꾸기'의 replace와 약간 다르니 주의할 필요가 있다.replace(문자열, 찾을문자, 바꿀문자, 시작위치, 문자의길이) Sub checkhangul()Dim r As Range, intAsc As Long, sAll As String, i As LongFor Each r In Ra..
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의..
위의 경우에서처럼, 3행이 숨겨져 있는데, 거기에 숫자 3이 쓰여있다countif함수를 써서 A1:A5범위에서 3의 개수를 찾으라고 하면 숨겨진 3행도 포함하여 찾기에 1이라는 결과가 나온다 만약, 숨겨진 셀은 제외하고, 보이는 셀에서만 countif함수를 적용하려면 어떻게 할까?subtotal이라는 함수는 숨겨진 셀을 제외하고 보이는 셀만 셀 수 있는 함수다. 다만, countif처럼 조건을 줄 수는 없고위에 링크된 글에서 보듯이,셀의 개수, 평균, 합계, 최대값, 최소값 등을 낼 수 있다. 지식인에 질문글을 올렸더니 기발한 답이 도착했다.답은 아래와 같다.=SUMPRODUCT(--(A1:A5=C9), SUBTOTAL(103,OFFSET(A1,ROW(A1:A5)-ROW(A1),0))) 여기서 핵심은 아..
[수식으로 날짜 계산을 위한 팁]지식인에서 근태 관련한 질문에 대한 답변으로 나온 수식이다. 1. Mod함수 이용F3에는 2017-10-31 9:15:00 PM 와 같은 날짜+시간 값이들어있다 여기서 MOD(F3,1)-TIME(18,,) 이렇게하면 9:15:00 PM에서 6:00:00 PM 을 뺀 값인 3:15:00 이 나온다. 2017-10-31 9:15:00 PM 은 엑셀에서 43039.8854166677 과 같이 계산하는데여기서 정수 부분은 날짜를, 소수부분은 시간을 나타낸다. 그러므로 여기서 시간 부분만 가져오려면1로 나눈 나머지를 구하는 수식 Mod(F3, 1)을 쓴다 그러면 43039.8854166677 을 1로 나눈 나머지인 0.8854166677가 결과로 나오게 되며이 부분은 9:15:00..
이동 옵션 (F5 키 - 옵션)은 여러모로 쓸 모가 많은 기능이다. 그런데 가끔씩, "마지막 데이터 셀"이 의도대로 기능하지 않을 때가 있다. 우리 생각에는 이 기능이 "현재 데이터 중에서 맨 마지막행,열에 있는 셀"을 보여준다고 생각하는데실제로 해보면 "지금까지 이 시트에서 기록되었던 셀 중에서 맨 마지막행.열에 있는 셀"을 보여주는 것이다. 즉, 한번이라도 값이 기록된 적이 있었던 셀 전체 중에서 맨 끝셀을 보여준다. 예를 들어, A1셀에 데이터가 있는 상태에서 A1048576 셀 (A열의 맨 마지막 행이다)에 데이터를 기록했다가 삭제하면이동 옵션에서 마지막 데이터 셀을 선택하고 확인하면 일반인의 생각에는 A1셀로 이동해야겠지만 실제로는 A1048576 셀로 이동한다. 물론, 이 현상은 파일을 저장하..
성명 주민번호 김1 111111-1111111 김2 111111-1111112 김3 111111-1111113 김4 111111-1111114 김5 111111-1111115 김6 111111-1111116 이런식의 구조로 된 표에서 사람이름을 주면 주민번호를 찾는 방법은 vlookup을 쓰면 간단히 해결된다. 하지만, 데이터가 좌우로 넓게 퍼져있다면? 성명 주민번호 성명 주민번호 성명 주민번호 김1 111111-1111111 이1 222222-2222222 박1 333333-3333333 김2 111111-1111112 이2 222222-2222223 박2 333333-3333334 김3 111111-1111113 이3 222222-2222224 박3 333333-3333335 김4 111111-111..
MS엑셀 전문가 "급상승 랭킹"에서 1위를 했다.답변수 125개 중 채택이 105개 정도 된 것 같다.다음주가 되면 또 내려가겠지만, 그래도 기념이 될 듯 하여 남긴다.
C드라이브 사용량을 계산해보니 실제 사용중인 폴더의 크기와 맞지 않는다. 해결책을 찾아서 구글링해보니 c:\windows\temp 폴더 용량 증가 문제로 MS 커뮤니티에 올라온 질문과 답변이 있어서 해결방안의 하나로 소개한다. Windows 7 사용 중 temp 폴더에 용량이 계속 증가하는 증상으로 문의 주셨습니다.위 증상은 makecab.exe 프로세스로 인해 발생할 수 있습니다.CBS 폴더 내의 로그(c:\Windows\logs\cbs)를 삭제한 후 확인해 보시기 바랍니다.시작 > 실행 > services.msc 입력 > 확인서비스 창이 뜨면 오른쪽 이름 목록 중 Windows Modules Installer에서 오른쪽 마우스 버튼 클릭 후 서비스 중지를 선택이후 log 파일을 삭제 후 Windows..
sumif 함수는 여러 시트에 걸쳐서 적용할 수는 없다는 내용의 글을 이전에 작성한 적이 있습니다.그런 종류의 질문이 올라오면 VBA를 이용하던지 데이터- 통합 기능을 이용하라는 답변을 달았습니다.그런데, 우연히 이런 답변을 발견했습니다. 역시 큰 형님의 작품입니다. 비슷한 예제를 만들어 첨부하였습니다. 해당 예제에서 수식 계산 기능을 이용해, 이 수식이 어떤 식으로 작동하는지 보려고 합니다. =SUMPRODUCT(SUMIF(INDIRECT(ROW(INDIRECT("1:3"))&"월분!$C$5:$C$12"),C4,INDIRECT(ROW(INDIRECT("1:3"))&"월분!$D$5:$D$12"))) 일단, 수식을 전체적으로 보면맨 바깥에 sumproduct함수가 감싸고 있고그 안에 sumif함수가 있습니..