목록배열 (22)
rand(life)
위 그림 A:C열의 데이터에서 E1의 조건에 해당하는 값을 F:H에 불러오는 수식이다. =IFERROR(INDEX($B$2:$B$9,1/LARGE(INDEX((ISNUMBER(FIND($E$2,$C$2:$C$9)))/ROW($C$2:$C$9),),ROW(C4))-1),"") 이 수식에 대한 설명은 어느 분이 해놓으신 수식 설명으로 대신한다. 완전히 똑같은 수식은 아니지만, 대략적인 원리는 같다. 설명이 깔끔하고 이해하기 쉽게 되어있다.
지식인에서 답변을 달기 위해 코딩을 하다가 문득 생긴 의문이다. 범위대 범위를 한번에 비교할 수 있는 방법은 없을까?그래서 지식인에 질문을 했다. A1:C1 범위와 A2:C2 범위의 값을 각각 비교하고 싶어서(즉, A1과 A2를 비교, B1과 B2를 비교, C1과 C2를 비교)if range("A1").resize(,3) = range("A2").resize(,3) then 이렇게 했더니 오류 메시지가 뜨네요.If [a1] = [a2] and [b1] = [b2] and [c1] = [c2] then이렇게 하나씩 비교하는 수 밖에 없나요?범위대 범위로 한번에 비교하는 방법이 있는지 궁금합니다. 두 개의 답변이 달렸다. 그것도 지식인 랭킹 1,2위를 하시는 분들께서! 한분의 답은 For ~ Next 순환문..
지식인 답변했던 것 중 쓸모있다고 생각되는 것을 기억하기 쉽게 정리해두려고 한다. 다음에 비슷한 일이 있으면 또 써먹을 수 있게..아래는 "특정문구가 들어가 있는 페이지만 인쇄할 수 있나요?"라는 질문에 대한 답이다. 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라는 값이 있는지, 있다면 어디에 있는지를 확인 가능하다.
242 괄호안의 숫자합계dim temp as variNt '배열변수temp = split (r, "(")for i = 1 to ubound(temp)fs = fs + val (temp (i) )next 'split으로 (를 기준해서 나누면 6), 8), 9)... 처럼 될텐데 val 을 씌우면 숫자로 인식되는지 확인 필요 94split을 이용해 배열변수에 값넣기변수 = split("1,20,300,200", ",") 쌍따옴표를 두번만쓰면된다 option compare binary 대소문자구분정렬option compare text 구분없음 일차원배열은 가로방향배열의 값을 범위에 한번에 쓸 수 있다range("a1:f10") = myarry [동적배열의 값 셀에 넣을때] Worksheets("sheet2")..
이전 글과 비슷한 기법인데, 조건이 하나 더 추가되었습니다. 위와 같이 날짜 옆에 텍스트가 있고, 특정 날짜에 해당하는 텍스트가 "중복없이" 몇개가 있는지 구하는 문제입니다.이전글에서 날짜라는 조건을 주지 않고, 일정 범위 내의 텍스트 개수를 중복없이 구하는 수식은 다음과 같았습니다.=SUMPRODUCT((A1:D2"")/(1-(A1:D2"")+COUNTIF(A1:D2,A1:D2))) 이번에는 "주어진 날짜와 같은 날짜"라는 조건이 추가로 주어졌습니다.위의 그림은 1월1일에 해당하는 텍스트의 개수를 중복없이 구하는 수식을 보여줍니다. (하나의 값만 구하므로 절대주소표시는 하지 않았습니다만, D열에 여러 날짜를 준다면 D2를 제외한 나머지 셀주소는 모두 절대주소로 표시해야합니다) 수식을 쓰면 다음과 같습니..
오늘은 오랜만에 배열수식 아래와 같은 표에서 가장 최근에 출고한 날짜를 찾는 함수이다주의할 것은 날짜가 정렬이 되어있지 않다는 것. 날짜 입고 출고 재고 06월 01일 20 100 07월 01일 50 150 08월 01일 60 90 07월 13일 30 120 07월 31일 40 80 07월 14일 20 100 배열수식을 이용한다. {=MAX(IF(C4:C9"",A4:A9))} C4:C9""을 먼저 계산하여 {TRUE;FALSE;TRUE;FALSE;TRUE;FALSE} 를 만들고그 다음에 A4:A9의 값인{42887;42917;42948;42929;42947;42930}와 함께 IF에 의해 합치면 IF({TRUE;FALSE;TRUE;FALSE;TRUE;FALSE}, {42887;42917;42948;429..
B열의 숫자처럼 보이는 것은 vlookup함수로 땡겨온것이라 엑셀에서는 문자 취급한다.B열 합계를 내려면 SUM함수로는 안되고 value함수를 써서 C열에 숫자로 바꾼 다음C열의 합계를 내면 된다.하지만 C열 추가하지 말고 B열에서 바로 수식을 써서 합계를 내고 싶다면?중간에 있는 "휴무"라는 텍스트가 SUM함수에서는 오류를 반환하기 때문에, 이 부분을 어떻게 0으로 인식하도록 만들어주는가가 관건이다. 나도 수식을 만들어보았지만 너무 길었는데, 네이버 지식인에서 언제나 믿고 보는 큰형님이 다음과 같은 답을 제시했다. {=SUM(IFERROR(B2:B9*1,0))}이 얼마나 간결하고 우아한가!계산단계는 다음과 같다. (참고로, 배열함수이다)