목록엑셀 (213)
rand(life)
지식인 답변에서 가져온 것이다 이런 데이터가 있을 때 중복된 숫자는 한 번으로 치고중복없이 아래와 같이 숫자를 나열하는 방법이다 수식은 다음과 같다. {=IFERROR(SMALL(IF($B$4:$E$6>F4,$B$4:$E$6),1),"")} 배열수식이므로 마지막에 Ctrl-Shift-Enter해야한다 대략 수식의 구조를 설명하면, $B$4:$E$6 는 A부분의 데이터이다. 중복된 값을 포함해 여러 숫자가 있는 범위이다F4는 비어있는 셀이다. 여기서 오른쪽이나 아래쪽으로 끌어채우기를 하면, 이전에 나온 값보다 더 큰 값의 범위를 지정해줄 수 있다. IF($B$4:$E$6>F4,$B$4:$E$6)$B$4:$E$6 중에서 F4(현재는 0)보다 크다면 해당 셀값을, 아니라면 False값을 배정한다. (IF 조건..
엑셀파일을 열지 않은 상태로 해당 파일안에 있는 시트이름을 가져오는 코드이다.출처는 여기이다. 제대로 동작하기 위해서, 선행해야할 작업이 있다. VB편집기에서 도구 - 참조를 실행 Microsoft ActiveX Dara Objects 2.x Library Microsoft ADO Ext. 2.x for DDL and Security위 두 항목을 체크하고 확인한다. Sub GetSheetNames() '도구 - 참조에서 아래 두 개 체크 해야함 'Microsoft ActiveX Dara Objects 2.x Library 'Microsoft ADO Ext. 2.x for DDL and Security Dim cn As ADODB.Connection Dim cat As ADOX.Catalog Dim t A..
사용자 정의 폼은 아직 익숙하지 않다원래는 "어떤 시트에 있는 그림 중 랜덤으로 다른 시트에 불러오고 싶다"는 지식인 질문이 있어서 거기에 대한 답을 하려고했다.그림 자체만 불러오는 것은 쉽다 Set ws = Sheets("sheet2") For Each pic In ws.Pictures ReDim Preserve arr(1, i) arr(0, i) = pic.Name arr(1, i) = pic.TopLeftCell.Address i = i + 1 Next pic 이런 식으로 Sheet2에 있는 그림의 이름을 배열로 받은 다음, 배열의 인수를 랜덤으로 돌려서그 인수를 가진 배열에서 그림의 이름을 받아와서 시트에 불러오면 된다. (복사 - 붙여넣기) 그런데, 조건이 하나 있었던 것이 "이미지 틀"에 불러..
가나다 순이 아니라 사용자가 지정한 순서대로 정렬하는 매크로이다다른 책에서는 아래와 같이 나와있었는데 엑셀2016 환경에서 적용해보니 잘 안된다. 확인해볼 필요가 있다. .sortfields.add key:=range("a2"), customorder:="lee,park,kim" .apply 다음은 Stack Overflow에서 가져온 코드이다. Dim vCustom_Sort As Variant Dim lc As Long vCustom_Sort = Split("Body,Chassis,Theta,PC Forklift,5S", ",")Application.AddCustomList ListArray:=vCustom_Sort With ActiveSheet .Sort.SortFields.Clear lc = .Ce..
지식인 질문에 대한 답이다. 위의 표에서 사람이름 옆에 있는 날짜가 아래 표에서 각 사람 이름 아래에 있는 날짜 목록에 없으면 "O", 있으면 "X"를 표시하는 방법이다. 처음에는 다음과 같이 했다. =IF(COUNTIF(OFFSET($H$1,0,MATCH(B2,$A$8:$C$8,0),100,1),A2),"X","O") offset 함수의 구문은 다음과 같다. OFFSET(reference, rows, cols, [height], [width])이 중, 뒤에 height와 width를 이용한 방법이다. 평소에 이 옵션을 빈칸으로 주면 offset함수는 reference위치에서 rows만큼 아래로, cols만큼 오른쪽으로 간 위치의 셀값을 보여준다. 하지만 height와 width를 표시한 offset함수..
위의 그림처럼 D2셀에 사진의 이름을 주면, 그 이름과 같은 이름의 사진을 D5셀에 나타나도록 하는 방법이다.별도의 시트에 위와 같이 사진 이름과 사진을 매칭시켜 정리해두어야한다. 그 다음, 사진 하나를 아무거나 복사한다. (Ctrl-C)이제 사진이 나타나야하는 셀을 선택하고 그림으로 붙여넣기를 한다. "붙여넣기"에서 역삼각형을 클릭하면 나타나는 메뉴에서 "그림"을 선택하면 된다. 이제 그림을 셀의 크기에 맞게 적당히 조정해준다. 수식 - 이름관리자로 가서 이름정의를 해준다.상황에 따라 다르겠지만, 첨부화일의 경우에는 "사진위치"는 =INDEX(사진범위,MATCH(Sheet2!$D$2,사진이름,0),1)"사진범위"는 =데이타!$C$2:$C$4"사진이름"은 =데이타!$B$2:$B$4 이렇게 설정되어있다.이..
지식인에서 엑셀 카테고리에는 잘 올라오지 않는 질문이 하나 올라왔는데, 엑셀보다는 수학과 더 관련이 있는 것 같다. 바로 "어떤 점이 닫힌 다각형의 내부에 있는가?" 를 알게 해 주는 방법을 묻는 질문이었다. 관련한 로직은 수학 관련 블로그에 많이 있지만, 그림 하나로 대체하려 한다. 자세한 설명은 링크 참조. 위 그림에서 A와 B 두 개의 점이 있는데, A는 다각형의 외부, B는 다각형의 내부에 있다. 그것을 알 수 있는 방법은, 해당 점에서 오른쪽으로 (X축이 커지는 방향) 수평선을 그어서, 다각형의 선분과 교차하는 지점의 수를 세어보는 것이다. 교차점의 갯수가 홀수이면 다각형의 내부에 있는 것이고, 짝수이면 외부에 있는 것이다. 눈으로 보면 어린아이도 알 수 있는 것이지만, 이것을 알고리즘으로 구현..
지정된 셀 범위를 png, jpg 등 그림 파일로 저장하는 매크로이다지식인 질문글에 대한 답변이다. Option Explicit Sub Macro() Dim rng As Range Dim T As String T = "d:\" & "배정표_" & Format(Date, "yymmdd") Set rng = Range("A1:AI42") rng.CopyPicture xlScreen, xlPicture With ActiveSheet.ChartObjects.Add(0, 0, rng.Width, rng.Height) .ShapeRange.Line.Visible = msoFalse .Select .Chart.Paste .Chart.Export T & ".png", "PNG" .Delete End With MsgBo..