목록컴퓨터 (366)
rand(life)
이전 글과 비슷한 기법인데, 조건이 하나 더 추가되었습니다. 위와 같이 날짜 옆에 텍스트가 있고, 특정 날짜에 해당하는 텍스트가 "중복없이" 몇개가 있는지 구하는 문제입니다.이전글에서 날짜라는 조건을 주지 않고, 일정 범위 내의 텍스트 개수를 중복없이 구하는 수식은 다음과 같았습니다.=SUMPRODUCT((A1:D2"")/(1-(A1:D2"")+COUNTIF(A1:D2,A1:D2))) 이번에는 "주어진 날짜와 같은 날짜"라는 조건이 추가로 주어졌습니다.위의 그림은 1월1일에 해당하는 텍스트의 개수를 중복없이 구하는 수식을 보여줍니다. (하나의 값만 구하므로 절대주소표시는 하지 않았습니다만, D열에 여러 날짜를 준다면 D2를 제외한 나머지 셀주소는 모두 절대주소로 표시해야합니다) 수식을 쓰면 다음과 같습니..
이전에 쓴 글에 어느 분이 답글을 주셨습니다.혹시 저 과목들을 몇개 단위로끊어서 쓸수 있을까요? 예를 들면 5개 과목을 쓰면 줄을 바꾸거나 셀을 아래로 삽입하여 작성하는 게 가능할까요? 그래서 만들어보았습니다.Function ConcatText(ByVal 범위 As Range, 구분 As String) As String Dim strTemp() As StringDim rng As RangeDim a As StringDim cr As IntegerDim k As IntegerDim i As Integer For Each rng In 범위 If rng = 구분 Then ReDim Preserve strTemp(i) If rng.Offset(0, 2).Value > 2 Then strTemp(i) = rng...
오늘은 오랜만에 배열수식 아래와 같은 표에서 가장 최근에 출고한 날짜를 찾는 함수이다주의할 것은 날짜가 정렬이 되어있지 않다는 것. 날짜 입고 출고 재고 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..
어쩌다보니 이런 것도 하게 되었다. 사용자정의폼을 만들어서, 각 시트에 있는 특정 정보를 한 시트에 모으는 방법이다. 목록상자가 복수의 항목을 선택할 수 있게 하였다. 제일 어려운 부분은 목록상자에 .Rowsource로 목록을 집어넣는 것인데,가볍게 "A1:A10"하면 간단하지만앞으로 목록이 추가될 경우에도 자동으로 목록이 갱신되도록 하다보니 어려워졌다. 결국 구글신의 도움을 받아 해결 Private Sub UserForm_Initialize()With ListBox1.ColumnCount = 1.ColumnHeads = False.ColumnWidths = "10".AddItem "수입".AddItem "지출"End WithSheet1.Range("M3:p18").ClearContentsEnd Sub ..
지난번에 몇번 올라왔던 사용자 정의함수의 매크로 버전이다. 어떤 분이 엑셀이 느려진다고 해서 만들어보았다.속도 자체는 크게 다르지 않은 것 같다. 아무래도 전체 셀을 순환해야하니까....그래도 사용자정의함수였을 때는 셀에 다른 입력을 하거나하면 새로 계산을 하느라 버벅였는데지금은 결과값이 수식이 아니라 텍스트로 입력이 되기 때문에, 새로 계산을 하지 않는다.그 점은 더 나아진 것 같다.Option ExplicitSub CText()Dim strTemp() As StringDim rng1 As RangeDim rng2 As RangeDim rng3 As RangeDim r1 As RangeDim rr1 As RangeDim i As Integer, n As Integer, k As Integer Set r..
'시트의 모든 내용 지우기 Worksheets("시트명").Cells.Clear '시트안에 있는 모든 그림 지우기 Worksheets("시트명").Pictures.Delete 시트안에 있는 첫번째 그림등을 복사해서 붙여넣기Worksheets(시트명).Shapes(1).CopyWorksheets(시트명).PasteSpecial 붙여넣은 다음에는 자동으로 선택상태가 되므로With Selection ' 그림 위치 조정 .Top = 20 .Left = 40End With 띄어쓰기나 특수문자가 있는 경우에는 아래처럼 입력하세요.cmb차종.Rowsource = "'차량-판매현황'!A3:A10"시트이름을 작은 따옴표로 묶어야 합니다. [변수 선언시 접미사]데이터 형식 | 접미사Integer : %Long : &Cur..
주문번호를 시트마다 검색하여 송장번호 출력문제는 제목이 일정한 위치에 있지 않다는 것...... Set rngTitle1 = sht.Range("A1:Z10").Find("주문번호", Lookat:=xlPart) Set rngTitle2 = sht.Range("A1:Z10").Find("송장번호", Lookat:=xlPart) '주문번호가 있는 위치와 송장번호가 있는 셀위치 파악하여 해당 셀을 range변수에 설정 '아무리 불규칙적이어도 설마 "A1:Z10"사이에는 제목이 있겠지라고 생각해서 넣음 iGap = rngTitle2.Column - rngTitle1.Column '주문번호와 송장번호가 있는 열위치 간격 Set rng = Range(rngTitle1, sht.Cells(Rows.Count, rn..