엑셀 고객별 가장 최근 상담일과 내용 찾기

· 엉클벤 엑셀함수(스프레드시트)

핵심 요약

  • 한 사람의 기록이 여러 줄에 흩어진 표에서 고객마다 가장 최근 날짜와 그날의 내용을 한 줄로 뽑습니다.
  • 최근 날짜는 MAXIFS(엑셀 2019·365), 옛 버전은 MAX(IF(…)). 내용은 LOOKUP(2,1/(…),…) 조합으로 찾습니다.
  • 여기에 TODAY()-최근날짜를 붙이면 "마지막 연락 후 며칠 지났나"가 나와, 오래 연락 못 한 분을 먼저 챙길 수 있습니다.

상담 기록을 날짜순으로 한 줄씩 쌓아 가다 보면, "김하늘 고객님과 마지막으로 이야기한 게 언제였지?"를 확인하려고 표를 위아래로 훑게 됩니다. 고객이 수십 명이 되면 이 일만으로 시간이 꽤 갑니다. 고객별 최근 상담일을 한 표에 모아 두고 오늘로부터 며칠 지났는지까지 계산해 두면, 오래 연락드리지 못한 분부터 순서대로 연락할 수 있습니다.

생활에서는 운동 기록에서 종목별 마지막 운동일, 가계부에서 항목별 마지막 결제일을 찾을 때 같은 방법을 씁니다. 이 글은 엑셀 "목적별 함수 조합" 시리즈의 한 편입니다. 컴활을 준비한다면 MAX·IF·LOOKUP을 겹쳐 쓰는 풀이 연습으로도 볼 만합니다.

고객별 최근 날짜 찾기 - MAXIFS LOOKUP

예제 표 — 상담 기록 9줄

맨 위 줄은 열 문자, 맨 왼쪽 칸은 행 번호입니다. 이름은 모두 가상입니다. A열은 날짜 서식이 적용된 진짜 날짜입니다.

ABC
1상담일고객명상담 내용
22026-07-03김하늘전화상담
32026-07-10이도윤방문상담
42026-07-21김하늘서류안내
52026-08-04박서연전화상담
62026-08-12이도윤연락처변경
72026-08-25김하늘방문상담
82026-09-02박서연방문상담
92026-09-09최민준전화상담
102026-07-28이도윤전화상담

10행은 7월에 있었던 상담을 9월에 뒤늦게 적어 넣은 줄입니다. 실제 기록표에서 흔히 생기는 일이고, 이 한 줄 때문에 방법에 따라 결과가 달라집니다. 오른쪽 F열(F2:F6)에는 결과를 볼 고객 이름 김하늘·이도윤·박서연·최민준·정수아를 적어 둡니다. 정수아 님은 기록이 없는 경우를 보려고 넣었습니다.

완성 수식

아래 세 수식을 각각 G2·H2·I2에 넣고 6행까지 채웁니다.

G2 — 가장 최근 상담일 (엑셀 2019·365)

=MAXIFS($A$2:$A$10,$B$2:$B$10,F2)

H2 — 마지막 상담 후 지난 날수

=TODAY()-G2

I2 — 가장 최근 날짜의 상담 내용

=LOOKUP(2,1/(($B$2:$B$10=F2)*($A$2:$A$10=G2)),$C$2:$C$10)

G열은 날짜 서식을 적용해야 날짜로 보입니다. 서식이 없으면 46259처럼 숫자로 보이는데, 엑셀이 날짜를 속으로 숫자로 저장하기 때문이라 값 자체는 맞습니다. 결과는 아래와 같습니다. H열은 오늘을 2026-09-22로 두고 계산한 값이라, 실제로는 여는 날에 따라 달라집니다.

F 고객명G 최근 상담일H 지난 날수I 그날 내용
김하늘2026-08-2528방문상담
이도윤2026-08-1241연락처변경
박서연2026-09-0220방문상담
최민준2026-09-0913전화상담
정수아0 (기록 없음)아주 큰 수#N/A

모든 값은 예제 표를 엑셀 파일로 만들어 파이썬 formulas 라이브러리로 계산해 확인했습니다(TODAY는 날짜를 고정해 계산). H열을 큰 순서로 정렬하면 이도윤 님이 가장 오래 연락이 없던 분으로 맨 위에 옵니다.

수식 풀어 보기 — 안쪽부터

G열 MAXIFS(최대값 범위, 조건 범위, 조건)

MAXIFS는 조건에 맞는 줄만 골라 그중 가장 큰 값을 돌려줍니다. 날짜는 속으로 숫자이고 최근일수록 큰 수이므로, "가장 큰 날짜 = 가장 최근 날짜"입니다. 이도윤 님은 B열에서 3행·6행·10행이 해당하고, 그 날짜 7/10·8/12·7/28 중 가장 큰 8/12가 나옵니다. 줄 순서와 상관없이 날짜 자체를 비교하므로 10행처럼 뒤늦게 적은 줄에 흔들리지 않습니다.

I열 LOOKUP(2,1/(조건1*조건2),결과 범위) — 이도윤 님(G열 2026-08-12) 기준으로 안쪽부터 봅니다.

단계식2~10행의 중간 결과
① 이름 비교$B$2:$B$10=F3F, T, F, F, T, F, F, F, T
② 날짜 비교$A$2:$A$10=G3F, F, F, F, T, F, F, F, F
③ 둘 다 맞나(곱하기)①*②0, 0, 0, 0, 1, 0, 0, 0, 0
④ 1을 나누기1/③오류, 오류, 오류, 오류, 1, 오류, 오류, 오류, 오류
⑤ 2 찾기LOOKUP(2,④,$C$2:$C$10)1이 있는 6행의 C열 → "연락처변경"
  • ①②의 T는 TRUE(참), F는 FALSE(거짓)입니다. 곱하면 TRUE는 1, FALSE는 0으로 계산되므로 두 조건이 모두 맞는 줄만 1이 됩니다.
  • 1을 0으로 나누면 #DIV/0! 오류가 나므로 ④는 맞는 줄만 1이고 나머지는 오류입니다.
  • ⑤에서 LOOKUP은 2를 찾습니다. 배열에는 1과 오류뿐이라 2는 없습니다. Microsoft 문서에 따르면 LOOKUP은 찾는 값이 없으면 그보다 작거나 같은 값 중 가장 큰 값에 맞춥니다. 그 결과 1이 있는 자리, 1이 여러 개면 마지막 1의 자리를 찾아 같은 위치의 C열 값을 돌려줍니다.

한 가지 밝혀 둘 점이 있습니다. Microsoft 문서는 LOOKUP의 찾을 범위가 오름차순이어야 한다고 설명합니다. 1/(…)로 1과 오류만 남긴 배열을 쓰는 이 방식은 문서에 나온 사용법이 아니라 엑셀 사용자들 사이에 널리 쓰이는 응용입니다. 이 글의 결과는 계산으로 확인했지만, 결과가 이상하면 아래 "다른 방법"의 버전별 대안을 함께 써서 맞춰 보십시오.

자주 막히는 곳

기록이 없는 고객이 0이나 엉뚱한 옛 날짜로 나올 때 — Microsoft 문서대로 MAXIFS는 조건에 맞는 칸이 없으면 0을 돌려줍니다. 0에 날짜 서식이 붙으면 엉뚱한 옛 날짜처럼 보이고, H열 지난 날수는 4만이 넘는 큰 수가 됩니다. 기록이 없을 때 글자로 표시하려면 COUNTIF로 먼저 확인합니다.

=IF(COUNTIF($B$2:$B$10,F2)=0,"기록 없음",MAXIFS($A$2:$A$10,$B$2:$B$10,F2))
  • 날짜가 글자로 들어 있으면 빠집니다. "2026.09.30"처럼 점으로 찍어 입력한 칸은 엑셀이 날짜가 아닌 글자로 받는 경우가 있습니다. 계산해 보니 MAXIFS는 이런 칸을 건너뛰고 나머지 날짜 중 최대값을 돌려줬습니다. 최근 기록이 빠진 것 같다면 빈 칸에 =ISNUMBER(A2)를 넣어 보십시오. 진짜 날짜면 TRUE, 글자면 FALSE가 나옵니다.
  • 범위 크기를 똑같이 — MAXIFS의 최대값 범위와 조건 범위는 크기와 모양이 같아야 하고, 다르면 #VALUE!가 납니다(Microsoft 문서). A2:A10과 B2:B10처럼 시작 행과 끝 행을 맞춥니다.
  • $ 고정 — 아래로 채울 때 기록 범위가 밀리지 않도록 $A$2:$A$10처럼 고정하고, 고객 이름 칸 F2만 고정하지 않습니다.
  • H열이 날짜 모양으로 보이면 셀 서식을 "일반"이나 "숫자"로 바꾸면 28 같은 날수로 보입니다.

다른 방법

엑셀 2016 이하 — MAXIFS가 없을 때

MAXIFS는 Microsoft 문서 기준 Office 2019와 Microsoft 365에서 쓸 수 있습니다. 그 전 버전에서는 MAX와 IF를 겹칩니다.

=MAX(IF($B$2:$B$10=F2,$A$2:$A$10))

IF가 이름이 맞는 줄만 날짜를 남기고 나머지는 FALSE로 바꾸면, MAX가 남은 날짜 중 가장 큰 값을 고릅니다. 예제에서 G열과 같은 결과가 나왔습니다. Microsoft 365가 아닌 버전에서는 이런 배열 수식을 Enter 대신 Ctrl + Shift + Enter로 입력해야 합니다.

"마지막으로 적힌 줄"이면 충분할 때

기록을 늘 날짜순으로만 쌓는다면 날짜 조건 없이 짧게 써도 됩니다.

=LOOKUP(2,1/($B$2:$B$10=F2),$C$2:$C$10)
=LOOKUP(2,1/($B$2:$B$10=F2),$A$2:$A$10)

다만 이 식은 "가장 최근 날짜"가 아니라 "표에서 가장 아래에 있는 줄"을 찾습니다. 예제의 이도윤 님은 이 식으로 찾으면 10행의 2026-07-28, "전화상담"이 나옵니다. 실제 최근 상담인 8/12와 다릅니다. 뒤늦게 적는 줄이 생길 수 있는 표라면 앞의 날짜 조건을 넣은 식을 쓰십시오.

자주 묻는 질문

가장 오래된 날짜(첫 상담일)도 같은 방법으로 찾나요?

네. MAXIFS 자리에 같은 모양의 MINIFS를 쓰면 조건에 맞는 줄 중 가장 작은 날짜, 곧 첫 상담일이 나옵니다. MINIFS도 엑셀 2019·365에서 쓸 수 있습니다.

30일 넘게 연락 안 한 고객만 보고 싶어요.

H열에 필터를 걸고 숫자 필터에서 30보다 큰 값만 고르면 됩니다. 조건부 서식으로 30보다 큰 칸에 색을 칠해 두어도 한눈에 보입니다.

LOOKUP 식이 #N/A를 돌려줘요.

그 고객의 기록이 한 줄도 없거나, 이름 글자가 다른 경우입니다. 앞뒤 공백이나 띄어쓰기 차이가 있는지 확인하고, 기록이 없는 고객은 IFERROR로 감싸 "기록 없음"처럼 표시하면 됩니다.

함께 보면 좋은 글

참고: MAXIFS 함수 (Microsoft 지원) · LOOKUP 함수 (Microsoft 지원)

벤

글쓴이 · 엉클벤

엑셀·스프레드시트 함수, AI 활용법, 컴퓨터·스마트폰 생활 팁을 따라 하기 쉽게 정리합니다. 틀린 내용은 연락처로 알려 주세요. 소개 보기

📚 벤스페이퍼 엑셀 강좌

기초부터 피벗 테이블까지 배우는 순서대로 정리한 엑셀 강좌 전체 목차에서 다음 글을 이어서 볼 수 있습니다.

Powered by Blogger