https://cafe.naver.com/excelmaster/159887 에 올라온 질문입니다.
한달동안 연속근무 7일 이상이 되는 사람은 '7일 연속근무' 셀에 '연속근무' 라는 표시를 해야합니다.
Chronicle 님은 배열수식으로 해결했습니다.
이런 게 함수로 되는지도 몰랐네요. 함수는 알면 알 수록 신기합니다.
- https://blog.naver.com/asaph16/221464697666
아래는 매크로로 풀어낸 과정입니다.
1. A라는 사람부터 S라는 사람까지 크게 순환을 하고
2. 사람별로 1일부터 30일까지 다시 순환을 하면서
3. 근무를 하면 1씩 더하고 휴무일 땐 0으로 되돌려서
4. 합이 7이 되면 7일간 연속근무를 한 것이므로 '연속근무' 라는 표시를 하고 다음 행으로 넘어갑니다.
For 와 Do 를 섞어서 써서
조건이 되었을 때 순환문을 빠져나가면 매크로 실행시간을 줄일 수 있습니다.
Sub Macro() Dim SingleRange As Range Dim sum As Integer Dim c As Integer For Each SingleRange In Range("C7", Cells(Rows.Count, "C").End(3)) c = 3 'C열부터 AF열까지 순환을 합니다 sum = 0 Do Until c > 32 'AF열까지 순환하면 아래 행으로 내려갑니다. '근무일 때 1, 휴무일 때 0으로 계산합니다. '근무의 합이 7이 되면 AG행에 "연속근무"를 기록하고 다음 행으로 내려갑니다. Select Case Cells(SingleRange.Row, c) Case Is <> "휴" sum = sum + 1 Case "휴" sum = 0 End Select c = c + 1 If sum = 7 Then Cells(SingleRange.Row, "AG") = "연속근무" Exit Do End If Loop Next End Sub | cs |
'VB(A) > 당근쨈 & Chronicle' 카테고리의 다른 글
[& Chronicle] 정규식으로 특수문자 제외하고 문자와 숫자만 분리하기 (0) | 2019.02.15 |
---|---|
[& Chronicle] 경우의 수 구하기 (0) | 2019.02.13 |
[& Chronicle] 원하는 글자 추출하기 (0) | 2017.05.14 |
[& Chronicle] 표 구조 바꾸기 (0) | 2017.05.11 |
[& Chronicle] 일치하는 패턴 개수 (0) | 2017.05.08 |