임상시험 대상자 등록·방문 허용 범위 엑셀 계산기
프로토콜의 방문마다 목표일과 허용 범위(윈도우)가 있고, 범위 밖 방문은 프로토콜 이탈이에요. 대상자마다 손으로 날짜를 계산하면 하루씩 어긋나기 쉬워요. Day 1을 첫째 날로 보는지 0일로 보는지부터요. 이 통합 문서는 프로토콜을 한 번만 입력해요. 대상자의 Day 1을 넣으면 Schedule 탭이 모든 방문의 목표일과 범위를 만들고, 기록한 방문일을 가져와 Done in window, Done out of window, Window open, Upcoming, Missed로 표시해요. Enrollment 탭은 계획 대비 모집을 추적해요.
- 시트:
- 8
- 지원 버전:
- Microsoft 365용 Excel, Excel 2016 이후 버전, Mac용 Excel, 웹용 Excel
- 업데이트:
이 템플릿으로 할 수 있는 일
- 프로토콜 표: 방문별 목표일과 앞뒤 허용 일수, Day 1 = 1(Day 0 없음)
- 대상자 × 방문을 자동 생성: 목표일, 범위 시작·종료, 주말 표시
- 기록한 방문일로 정해지는 상태: 범위 내, 범위 이탈(이탈), 범위 진행 중, 예정, 누락
- 계획선 대비 월별 등록, 스크리닝 탈락률, 목표 도달 예상일, 기관별 결과

구성
통합 문서에는 시트가 8개 있어요. 입력하는 시트는 몇 개뿐이고 나머지는 계산돼요.
| 시트 | 용도 | 입력하는 것 | 자동 계산되는 것 |
|---|---|---|---|
| Start Here | 연구 설정과 결과 | 프로토콜 이름, 기준일(오늘), 등록 목표, 계획 첫·마지막 등록일, 미리 볼 일수 | 스크리닝, 탈락률, 등록, 등록 속도, 목표 예상일, 누락, 범위 진행 중, 범위 이탈, 범위 내 % |
| Protocol | 방문 일정(15) | 방문, 목표일, 허용 −, 허용 + | 없음 |
| Subjects | 대상자별 한 행(80) | 대상자 ID, 기관, 동의일, 스크리닝, Day 1, 상태, 중도 탈락일 | 다음 방문, 그 목표일, 일관성 확인 |
| Visits Done | 완료 방문(1,200) | 대상자, 방문, 날짜 | 확인 |
| Schedule | 대상자 × 방문(1,200) | 없음 | 목표일, 범위, 주말 표시, 실제 방문일, 목표 대비 일수, 상태 |
| Enrollment | 모집 현황 | 기관 이름과 목표 | 월별 등록, 계획 대비 누적, 스크리닝, 탈락; 기관별 |
| Lists | 드롭다운 | 대상자 상태, 기관 | 없음 |
| Checks | 데이터 검사 6개 | 없음 | OK 또는 Review |
시작하기 전에
- 프로토콜의 평가 일정표에서 방문 일정과 허용 범위를 가져오세요.
- 연구의 날짜 계산 규칙을 확인하세요. 이 통합 문서는 Day 1 = 무작위 배정 또는 첫 투약일, Day 0 없음이고, 스크리닝은 음수 일을 써요.
- 대상자 ID는 EDC와 똑같이 써야 대조할 수 있어요.
단계별 사용법
프로토콜 입력
Protocol 탭: 방문마다 목표일과 며칠 일찍·늦게 해도 되는지.
등록 계획 설정
Start Here B8–B10: 목표 대상자 수와 계획 첫·마지막 등록일.
대상자 추가
Subjects 탭: ID, 기관, 동의일, 스크리닝일, Day 1, 상태.
방문 기록
Visits Done 탭: 대상자, Protocol 탭과 똑같은 방문 이름, 날짜.
일정 관리
Schedule 탭: Status를 Window open, Upcoming, Missed로 필터하세요. 목표일이 주말이면 표시돼서 범위 안에서 예약할 수 있어요.
모집 추적
Enrollment 탭과 Start Here: 계획 대비 등록, 스크리닝 탈락, 목표 도달 예상일.
수식 지도
통합 문서의 모든 수식을 시트와 열별로 정리했어요. 복사된 수식 열은 한 번만 세고, 적용 범위를 함께 표시해요.
| 시트 | 셀 | 함수 | 계산 내용 | 읽는 값 | 쓰이는 곳 |
|---|---|---|---|---|---|
| Schedule | A5 1204행까지 아래로 복사됨 | IFERROR, INDEX, INT, ROW, COUNTA | 행별 대상자 | — | K5는 MOD(ROW()-5, 방문 수)+1로 같은 방식으로 방문 번호를 구해요. |
| Schedule | E6 1204행까지 아래로 복사됨 | IF, OR, INDEX | 목표일 | D6, K6 | 허용 범위가 이 날짜를 중심으로 만들어져요. |
| Schedule | F6 1204행까지 아래로 복사됨 | IF, INDEX | 범위 시작 | E6, K6 | G6는 허용 +를 더해 종료일을 구해요. |
| Schedule | I6 1204행까지 아래로 복사됨 | IF, COUNTIFS, MAXIFS | 실제 방문일 | A6, B6 | 상태가 이 날짜를 범위와 비교해요. |
| Schedule | L6 1204행까지 아래로 복사됨 | IF, AND, INDEX, INT, ROW, COUNTA | 방문 상태 | I6, F6, G6 | Start Here에서 셉니다. 중도 탈락자의 이후 방문은 Not applicable. |
| Subjects | I5 84행까지 아래로 복사됨 | IF, OR, MINIFS | 다음 방문 목표일 | A5 | H5는 MATCH(1, INDEX((대상자)*(날짜), 0), 0)로 방문 이름을 찾아요. |
| Start Here | B19 | IF, IFERROR | 목표 도달 예상일 | B8, B17, B18 | B10의 계획 마지막 등록일과 비교하세요. |
| Enrollment | D5 18행까지 아래로 복사됨 | ROUND, MAX, MIN, EOMONTH | 계획 누적 등록 | — | 실제 누적 등록과 함께 차트에 그려요. |
모든 수식 설명
아래 수식은 파일에서 그대로 가져온 것이라 여기서 읽는 내용이 셀에 들어 있는 내용과 정확히 같아요. 엑셀에서 셀을 클릭하면 수식 입력줄에서 볼 수 있어요.
=IFERROR(INDEX(Subjects!$A$5:$A$84,
INT((ROW()-5)/COUNTA(Protocol!$A$5:$A$19))+1)&"",
"")프로토콜 방문 수만큼 대상자를 반복합니다: 1–10행은 첫 대상자, 11–20행은 둘째.
부분별 설명
ROW()-5- 0부터 세는 행 번호.
COUNTA(Protocol!$A$5:$A$19)- 프로토콜 방문 수(10).
INT(…/…)+1- 몇 번째 대상자.
INDEX(Subjects!$A$5:$A$84, …)- 대상자 ID.
예시 데이터로 보면: A5 결과 104-001
어떻게 쓰이나: K5는 MOD(ROW()-5, 방문 수)+1로 같은 방식으로 방문 번호를 구해요.
바꾸는 방법: 바꿀 것 없음. 대상자나 방문을 추가하면 일정이 늘어나요.
배우기: 엑셀 INDEX와 MATCH 함수 사용법 →=IF(OR(A6="", N(D6)=0), "",
D6+INDEX(Protocol!$B$5:$B$19,
K6)-IF(INDEX(Protocol!$B$5:$B$19, K6)>0,
1, 0))Day 1 + 방문 목표일, 양수 일이면 1을 뺍니다(Day 1이 첫날, Day 0 없음).
부분별 설명
D6- 대상자의 Day 1.
+INDEX(Protocol!$B$5:$B$19, K6)- 이 방문의 목표일(Week 2는 15).
-IF(…>0, 1, 0)- Day 15는 Day 1의 14일 뒤. 음수인 스크리닝 일은 옮기지 않음.
예시 데이터로 보면: D6 = 2026년 2월 17일, K6 = 2 → E6 결과 2026년 2월 17일
어떻게 쓰이나: 허용 범위가 이 날짜를 중심으로 만들어져요.
바꾸는 방법: 스폰서가 Day 0부터 센다면 −1을 빼세요.
배우기: 엑셀 INDEX와 MATCH 함수 사용법 →=IF(E6="", "", E6-INDEX(Protocol!$C$5:$C$19, K6))목표일 − 허용되는 앞당김 일수.
부분별 설명
E6- 목표일.
-INDEX(Protocol!$C$5:$C$19, K6)- 이 방문의 허용 −.
예시 데이터로 보면: E6 = 2026년 2월 17일, K6 = 2 → F6 결과 2026년 2월 17일
어떻게 쓰이나: G6는 허용 +를 더해 종료일을 구해요.
바꾸는 방법: Protocol 탭에서 범위를 고치세요.
배우기: 엑셀 INDEX와 MATCH 함수 사용법 →=IF(A6="", "", IF(COUNTIFS('Visits Done'!$A$5:$A$1204, A6, 'Visits Done'!$B$5:$B$1204, B6)=0,
"", MAXIFS('Visits Done'!$C$5:$C$1204, 'Visits Done'!$A$5:$A$1204, A6, 'Visits Done'!$B$5:$B$1204, B6)))Visits Done 탭에서 이 대상자·방문의 기록 날짜를 가져옵니다.
부분별 설명
COUNTIFS('Visits Done'!$A$5:$A$1204, A6, 'Visits Done'!$B$5:$B$1204, B6)=0- 기록 없음: 빈칸.
MAXIFS('Visits Done'!$C$5:$C$1204, …A6, …B6)- 이 대상자·방문의 날짜.
예시 데이터로 보면: A6 = 104-001, B6 = Day 1 (Baseline) → I6 결과 2026년 2월 17일
어떻게 쓰이나: 상태가 이 날짜를 범위와 비교해요.
바꾸는 방법: 바꿀 것 없음.
배우기: 엑셀 MIN, MAX 함수 사용법 →=IF(A6="", "", IF(I6<>"",
IF(AND(I6>=F6, I6<=G6), "Done - in window", IF(E6="", "Done", "Done - out of window")),
IF(E6="", "Not enrolled", IF(AND(INDEX(Subjects!$G$5:$G$84, INT((ROW()-5)/COUNTA(Protocol!$A$5:$A$19))+1)<>"", INDEX(Subjects!$G$5:$G$84, INT((ROW()-5)/COUNTA(Protocol!$A$5:$A$19))+1)<=F6), "Not applicable", IF('Start Here'!$B$7>G6, "Missed", IF('Start Here'!$B$7>=F6, "Window open", IF(F6-'Start Here'!$B$7<='Start Here'!$B$11, "Upcoming", "Scheduled")))))))날짜가 있으면 범위 내·이탈, 없으면 범위가 끝났으면 Missed, 오늘이 범위 안이면 Window open, 곧 열리면 Upcoming, 그 뒤면 Scheduled.
부분별 설명
AND(I6>=F6, I6<=G6)- Done - in window.
I6<>""- 아니면 Done - out of window(이탈).
'Start Here'!$B$7>G6- Missed.
'Start Here'!$B$7>=F6- Window open.
F6-'Start Here'!$B$7<='Start Here'!$B$11- Upcoming.
예시 데이터로 보면: I6 = 2026년 2월 17일, F6 = 2026년 2월 17일, G6 = 2026년 2월 17일 → L6 결과 Done - in window
어떻게 쓰이나: Start Here에서 셉니다. 중도 탈락자의 이후 방문은 Not applicable.
바꾸는 방법: 미리 볼 일수는 Start Here B11에서.
배우기: 엑셀 IF 함수 사용법 →=IF(OR(A5="", F5<>"Enrolled"),
"", IF(MINIFS(Schedule!$E$5:$E$1204, Schedule!$A$5:$A$1204, A5, Schedule!$I$5:$I$1204, "", Schedule!$G$5:$G$1204, ">="&'Start Here'!$B$7)=0,
"", MINIFS(Schedule!$E$5:$E$1204, Schedule!$A$5:$A$1204, A5, Schedule!$I$5:$I$1204, "", Schedule!$G$5:$G$1204, ">="&'Start Here'!$B$7)))아직 안 했고 범위가 끝나지 않은 이 대상자 방문 중 가장 이른 목표일.
부분별 설명
MINIFS(Schedule!$E$5:$E$1204, Schedule!$A$5:$A$1204, A5, Schedule!$I$5:$I$1204, "", Schedule!$G$5:$G$1204, ">="&기준일)- 가장 이른 진행 중·예정 방문.
예시 데이터로 보면: A5 = 104-001 → I5 결과 2026년 10월 27일
어떻게 쓰이나: H5는 MATCH(1, INDEX((대상자)*(날짜), 0), 0)로 방문 이름을 찾아요.
바꾸는 방법: 바꿀 것 없음.
배우기: 엑셀 MIN, MAX 함수 사용법 →=IF(B17>=B8, "Target reached",
IFERROR(B7+(B8-B17)/B18*30.4375,
""))오늘 + 남은 등록 인원 ÷ 지금까지의 월 등록 속도.
부분별 설명
B8-B17- 남은 등록 인원.
/B18- 현재 월 등록 속도로.
*30.4375- 개월을 일로.
예시 데이터로 보면: B8 = 60, B17 = 30, B18 = 3.49 → B19 결과 2027년 7월 25일
어떻게 쓰이나: B10의 계획 마지막 등록일과 비교하세요.
바꾸는 방법: 바꿀 것 없음.
배우기: 엑셀 기본 수식 작성법: 더하기, 빼기, 곱하기, 나누기 →=ROUND(MAX(0, MIN(1, (EOMONTH(A5, 0)-'Start Here'!$B$9)/('Start Here'!$B$10-'Start Here'!$B$9)))*'Start Here'!$B$8,
0)계획 첫 등록일 0에서 계획 마지막 등록일 목표까지의 직선.
부분별 설명
(EOMONTH(A5, 0)-'Start Here'!$B$9)/('Start Here'!$B$10-'Start Here'!$B$9)- 월말까지 지난 등록 기간 비율.
MAX(0, MIN(1, …))- 0–100% 사이로.
*'Start Here'!$B$8- × 목표 인원.
예시 데이터로 보면: D5 결과 2
어떻게 쓰이나: 실제 누적 등록과 함께 차트에 그려요.
바꾸는 방법: 직선이 아니라면 월별 계획으로 바꾸세요.
배우기: 엑셀 MIN, MAX 함수 사용법 →팁과 한계
- 용량: 대상자 80명 × 프로토콜 방문 15개, 기록 방문 1,200건.
- Visits Done 탭의 방문 이름은 Protocol 탭과 똑같아야 해요. Check 열이 오타를 잡아요.
- 비예정 방문은 일정에 없어요. EDC에 기록하거나 Protocol 탭에 넓은 범위로 행을 추가하세요.
- 주말 표시는 예약에 도움을 줘요. 대부분 프로토콜은 범위로 주말을 흡수하지만 확인하세요.
- 계획 보조 도구예요. 프로토콜, 스폰서 규칙, EDC가 공식 기록이에요.
이 템플릿에 쓰인 기능 배우기
도움이 되었나요? 잘못된 내용이 있나요? 의견 보내기 · admin@arumsoft.com