목록분류 전체보기 (563)
rand(life)
지식인 질문 중 큰형님 답변 F:H 범위와 같이 주어진 표를 이용해노란색 셀에 들어갈 수식을 찾는 문제이다. 처음에는 If 구문을 세 번 쓰고그 안에서 match 함수를 이용해 찾는다고 생각을 했다. 오른쪽으료 표가 더 길어지만 VBA를 이용하고...... 그런데 큰형님의 답은=MAX(INDEX(($F$2:$H$6=B2)*$F$1:$H$1,)) 아주 간결하다.이 수식이 어떻게 동작하는지 알려면 엑셀에서 범위의 곱셈이 어떻게 동작하는지 알아야한다.엑셀의 범위는 수학에서 배우는 행렬과 유사하게 생겼지만 연산은 약간 다르다 일단 수학에서 말하는 행렬의 연산을 위키백과에서 알아보면 다음과 같다. 행렬 {\displaystyle A={\begin{bmatrix}a\\b\end{bmatrix}}}와 {\displa..
지식인 질문에 대한 답이다. 내가 한 답은 아니지만, 발상이 놀라와서 가져온다. 1부터 n까지의 숫자 합을 구하는 식은n∑ k 이렇게 표현이 된다 k=1 이것을 엑셀에서 수식으로 표현하는 방법이다. 정답은 =SUMPRODUCT(ROW(OFFSET(A1,,,A1,))) offset 함수의 성질을 이용했다.offset함수의 설명을 반복한다. offset 함수의 구문은 다음과 같다. OFFSET(reference, rows, cols, [height], [width])이 중, 뒤에 height와 width를 이용한 방법이다. 평소에 이 옵션을 빈칸으로 주면 offset함수는 reference위치에서 rows만큼 아래로, cols만큼 오른쪽으로 간 위치의 셀값을 보여준다. 하지만 height와 width를 표시..
지식인 답변에서 가져온 것이다 이런 데이터가 있을 때 중복된 숫자는 한 번으로 치고중복없이 아래와 같이 숫자를 나열하는 방법이다 수식은 다음과 같다. {=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 이렇게 설정되어있다.이..