목록MATCH (9)
rand(life)
A열과 같이 같은 문자열이 반복되어 나오고 있을때, 가장 많이 나오는 문자열이 무엇인지, 또는 두 번째로 많이 나오는 문자열이 무엇인지를 알 수 있는 함수입니다.=INDEX(A1:A6,MATCH(LARGE(FREQUENCY(MATCH(A1:A6,A1:A6,0),MATCH(A1:A6,A1:A6,0)),C1),FREQUENCY(MATCH(A1:A6,A1:A6,0),MATCH(A1:A6,A1:A6,0)),0))배열함수이므로, Ctrl-Shift-Enter해야합니다. 길어서 복잡해보이지만, FREQUENCY(MATCH(A1:A6,A1:A6,0),MATCH(A1:A6,A1:A6,0)) 이 부분이 반복되어서 그런것입니다. 이 부분이 하는 역할은, A열의 각 문자열이 나오는 횟수를 배열로 만드는 것입니다. MATCH..
지식인 답변했던 것 중 쓸모있다고 생각되는 것을 기억하기 쉽게 정리해두려고 한다. 다음에 비슷한 일이 있으면 또 써먹을 수 있게..아래는 "특정문구가 들어가 있는 페이지만 인쇄할 수 있나요?"라는 질문에 대한 답이다. Sub checkprint()Dim ws As WorksheetDim rng As Range, c As RangeDim str As String, strFirstAddr As StringDim h As HPageBreak '페이지나누기 표시도 Type으로 지정할 수 있다는 것을 처음 알았다.Dim lc As Long, i As LongDim lpc As DoubleDim arr() '페이지 나누기가 있는 곳의 셀 주소를 담을 배열변수 Set ws = Worksheets(1)Set rng =..
2차원 배열에서 특정차원에 지정된 값이 있는지 검색하는 법 Application.Match(변수, Application.Index(배열, 0, 컬럼위치), 0) index함수에서 두,세번째 인수를 0을 주면 해당 배열을 반환한다는 점을 이용 index(arr, 0, 3) 하면 arr배열에서 3번째 칼럼을 의미index(arr, 2, 0) 하면 2번째 행 arr 배열이 다음과 같다면 1 학번1 이름1 과목12 학번2 이름2 과목23 학번3 이름3 과목3index(arr, 0, 3)은 이름1,이름2,이름3… 의 배열을 의미한다. 따라서 arr배열에서 이름2라는 값이 있는지, 있다면 어디에 있는지를 확인 가능하다.
역시 네이버 지식인에서 누군가가 올려주신 해답에서 연구해볼만한 것입니다. 이렇게 데이타가 있을 때 이런 식으로 합계를 내야합니다.문제는 G,H,I열이 셀병합이 되어있다는 점입니다. 셀병합이 안되어있다면 SUMIFS함수로 간단하게 해결됩니다만....셀병합을 하면 제일 첫셀(여기서는 G3과 G12)에만 데이타가 들어있고, 나머지 병합된 부분에는 아무 데이터도 들어있지 않습니다. 그러니 평소처럼 SUMIFS함수를 쓰게 되면 G3,G12외에는 아무 데이터도 없으므로 오류가 나게 됩니다. 즉, 이 상태에서는 SUMIFS함수를 쓸 수 없다는 뜻입니다.(그래서 엑셀에서 수식을 단순하게 만드려면 셀병합은 가급적 피하는 것이 좋습니다.) 여기서 어떤 분이 답을 달았습니다.이렇게하면 셀병합을 해제하지 않아도 답을 구할 수..
INDEX함수가 상당히 자주 쓰이는 유용한 함수인데 작년에 빠뜨려서 이번에 보충합니다. 엑셀 도움말에는 다음과 같이 되어있습니다. INDEX(array,row_num,column_num) array 배열 상수나 셀 범위입니다. 배열에 행이나 열이 하나만 있을 때는 row_num이나 column_num 인수를 생략할 수 있습니다. 배열에 행과 열이 두 개 이상 있을 때 row_num이나 column_num만 사용하면 배열의 전체 행이나 열이 하나의 배열로 반환됩니다. row_num 값을 반환할 배열의 행을 선택합니다. row_num을 생략하면 column_num을 지정해야 합니다. column_num 값을 반환할 배열의 열을 선택합니다. column_num을 생략하면 row_num을 지정해야 합니다. 주의..
계속해서 이원목적분류표에 있는 함수중 다중답의 개수를 구하는 수식을 살펴보겠습니다. 수식은 다음과 같습니다. =SUMPRODUCT(N(LEN(INDIRECT("C"&MATCH("유형",A:A,0)+2&":C"&MATCH("주관식",A:A,0)-1))>1)) LEN함수와 N함수를 제외하고는 모두 배운 함수입니다. 여기서 N함수는 내일 설명하겠지만, 여기서는 굳이 없어도 됩니다만 배열계산을 할때 배열이 하나밖에 없으면 집어넣는 것이 오류 가능성을 줄여준다고 합니다. 오늘은 LEN함수에 대해 배우겠습니다. LEN함수는 문자열의 길이를 반환하는 함수입니다. LEN(text) text 길이를 확인하려는 문자열입니다. 공백도 문자로 계산됩니다. 아주 간단하죠? ^^* 위에서처럼, 영어, 숫자, 한글, 구두점 모두 ..
지난번에 만들었던 이원목적분류표에서 가장 수식이 긴 것은 다음과 같은 수식이었습니다. =COUNTA(INDIRECT("R"&MATCH("유형",$A:$A,0)+2&"C"&COLUMN()&":R"&ROW()-1&"C"&COLUMN(),FALSE)) 이것은 평가목표와 난이도를 표시한 것의 개수를 세는 수식인데, 그냥 간단히 =COUNTA($G$8:$G$42) 라고 표시하면 안되냐고 생각하시는 분이 있을것입니다. 예, 그렇게해도 해당셀에 숫자나 문자가 입력되어있는 셀의 개수를 세는 것이니까 같은 역할을 합니다. 하지만 제 생각에는 그렇게하면 8행부터 42행까지의 개수는 셀 수 있지만, 행을 몇 개 추가하거나 삭제하여 행의 번호가 바뀌면 수식을 일일이 다시 고쳐야한다고 생각했었습니다. 하지만 이것은 완전히 잘못..
지난번에 엑셀로 이원목적 분류표를 만들었습니다. 여러가지 경우의 수를 생각하면서 수식을 만들다보니 이렇게 고생할바에야 그냥 개수를 세는게 낫겠다는 생각도 들었지만, 써보니 편하다고 말씀하시는 분들이 많아 보람도 느낍니다. 사소한 몇가지 오류를 수정하여 이전포스트에 올려두었습니다. 그리고 또 한가지 느낀 점은, 엑셀을 거의 사용하지 않으시는 분들이 의외로 많다는 것이었습니다. 제가 이것을 만들때는 어느정도는 엑셀을 사용할 줄 아시는 분들을 대상으로 만들었기에, 엑셀을 처음 다뤄보시는 분들이 난감해 하는 것을 볼때 제가 편하자고 만든 것이 또 어떤 분에게는 불편함이 되는구나 하는 생각도 들었습니다. 그래서, 다음 버전업때는 엑셀 초보이신 분들도 큰 불편없이 사용할 수 있게 대대적으로 바꾸어 볼까 합니다. 예..