如何提取90天内重复访客的到访日期与姓名(Excel表格场景)
90天内重复到访访客的提取方案
一、Excel公式手动处理法
万行数据用公式也能搞定,步骤简单:
- 全选数据,按B列(访客姓名)升序、A列(到访日期)升序排序,保证同一访客的日期按顺序排列。
- 在C2单元格敲入公式:
=IF(B2=B1,DATEDIF(A1,A2,"d")<=90,""),下拉填充整列。- 逻辑:如果当前行和上一行是同一个人,就计算两次到访的间隔天数,≤90天就返回TRUE,否则留空。
- 筛选C列为TRUE的行,直接复制A、B列就是你要的结果。
- 要是想把首次到访也包含进去,把公式改成
=IF(B2=B1,DATEDIF(A1,A2,"d")<=90,TRUE)就行。
- 要是想把首次到访也包含进去,把公式改成
二、Power Query批量处理法
处理万行数据用Power Query更高效,不会卡顿:
- 选中数据区域,点「数据」选项卡→「从表格/区域」,把数据导入Power Query编辑器。
- 按姓名分组处理:
- 点「转换」选项卡→「分组依据」,分组列选B列(访客姓名),新列名设为「到访记录」,操作选「所有行」。
- 点击「到访记录」列的展开按钮,添加自定义列:
=Table.AddIndexColumn([到访记录],"索引",0,1)。 - 展开自定义列里的表格,再添一列计算间隔:
=if [索引]>0 then Duration.Days([到访日期]-List.FirstN([到访记录][到访日期],[索引])) else null。
- 筛选「间隔天数」列≤90的行,删掉多余的辅助列,点「关闭并上载」把结果导回Excel。
三、Python脚本自动化处理
如果经常要做这类分析,写个Python脚本一劳永逸:
import pandas as pd # 读取Excel数据,替换成你的文件路径 df = pd.read_excel("访客记录.xlsx") # 把日期列转成日期格式,确保计算准确 df["到访日期"] = pd.to_datetime(df["到访日期"], format="%d/%m/%Y") # 按姓名和日期排序 df = df.sort_values(by=["访客姓名", "到访日期"]) # 提取同一访客的上一次到访日期 df["上一次到访"] = df.groupby("访客姓名")["到访日期"].shift(1) # 计算两次到访的间隔天数 df["间隔天数"] = (df["到访日期"] - df["上一次到访"]).dt.days # 筛选间隔≤90天的记录,要是要包含首次到访就加 | df["上一次到访"].isna() result = df[df["间隔天数"] <= 90][["到访日期", "访客姓名"]] # 把日期转回原来的格式 result["到访日期"] = result["到访日期"].dt.strftime("%d/%m/%Y") # 打印结果或者保存到Excel print(result) result.to_excel("重复到访结果.xlsx", index=False)
内容的提问来源于stack exchange,提问作者Nate L
相关产品推荐
相关产品推荐

