You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取表格中每个客户每次出现的首行行号?

提取客户每次出现的首行行号解决方案

原始数据

原始表格数据如下:

1 Customer 1
2 Customer 1
3 Customer 1
4 Customer 2
5 Customer 3
6 Customer 1
7 Customer 1
8 Customer 3
9 Customer 3
10 Customer 4

需求

提取每个客户每次出现的首行行号,预期输出(纵向排列):

1
4
5
6
8
10

遇到的问题

连续重复客户的首行行号易获取,但客户非连续出现时,基于INDIRECT()的公式失效。尝试使用FREQUENCY(IF())获取客户出现位置的数组,例如针对Customer 1使用公式:

ARRAYFORMULA(FREQUENCY(INDEX(IF(customersRange=customer 1;ROW(customersRange));IF(customersRange<>customer 1;ROW(customersRange))))

得到数组{1;2;3;FALSE;FALSE;6;7;FALSE;FALSE},但无法提取其中非连续的6。还尝试过INDEX(MATCH())、INDEX()+FREQUENCY()、MATCH()、SMALL()、LARGE()等方法,均无效。

可行解决方案

在Google Sheets中,可以使用以下数组公式直接实现需求(假设客户数据位于A列,且从A1开始):

=FILTER(ROW(A:A), A:A<>"", OR(ROW(A:A)=1, OFFSET(A:A, -1, 0)<>A:A))

公式说明:

  • ROW(A:A):获取A列所有行的行号
  • A:A<>"":过滤掉空行
  • OR(ROW(A:A)=1, OFFSET(A:A, -1, 0)<>A:A):筛选两种情况的行号:
    1. 第一行(必然是首次出现的行)
    2. 当前行的客户与上一行客户不同(说明是该客户新一轮出现的首行)

如果数据范围是固定的(比如A1:A10),可以把公式调整为:

=FILTER(ROW(A1:A10), A1:A10<>"", OR(ROW(A1:A10)=ROW(A1), OFFSET(A1:A10, -1, 0)<>A1:A10))

内容的提问来源于stack exchange,提问作者Orphal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:12:38