基于规则的顺序编号公式

时间:2014-10-27 05:25:23

标签: excel indexing vlookup

我有一个非常复杂的Excel公式,我需要创建,但我一直卡住。我的数据看起来像这样:

Date         ID   Focal  Time      Condition
08/22/2014   FJ   1      7:52:00   T
08/22/2014   FJ   1      7:52:00   T
08/22/2014   FJ   1      7:52:00   T
08/22/2014   RJ   1      8:52:00   T
08/22/2014   FJ   2      9:52:00   T
08/22/2014   FJ   2      9:52:00   T
08/22/2014   FJ   2      9:52:00   T
08/22/2014   FJ   2      9:52:00   T
08/22/2014   FJ   3      10:52:00  T
08/22/2014   FJ   3      10:52:00  T
08/22/2014   FJ   1      11:32:00  C
08/22/2014   FJ   1      11:32:00  C
08/22/2014   RJ   2      11:52:00  T
08/22/2014   RJ   2      11:52:00  T
08/22/2014   FJ   4      10:52:00  T
08/22/2014   FJ   4      10:52:00  T
08/22/2014   MD   1      12:52:00  T
08/22/2014   RJ   3      13:52:00  T
08/22/2014   RJ   3      13:52:00  T 
08/22/2014   FJ   2      14:52:00  C 
08/23/2014   FJ   1      7:52:00   T
08/23/2014   FJ   1      7:52:00   T
08/23/2014   RJ   1      8:52:00   T
08/23/2014   FJ   1      9:52:00   C

我需要根据以下规则自动填充焦点列:

  • 第一个条目将始终为" 1"。
  • 每个ID在其日期,时间和条件相同时应具有相同的焦点号。
  • 当只有时间变化时,应按顺序列出数字。
  • 当条件发生变化时,数字应从1开始,然后在时间变化时应该是连续的。
  • 如果条件更改为之前经历过的ID,则序列号应在停止时拾取。
  • 此外,当ID更改时,该数字应从1开始。
  • 最后,新的日期将重新开始所有ID的此过程。

2 个答案:

答案 0 :(得分:2)

我将此解决方案作为数组公式(使用 Ctrl + Shift + Enter 输入),例如在C2:

=IF(COUNTIFS($A$1:$A1,$A2,$B$1:$B1,$B2,$E$1:$E1,$E2)=0,1,MAX(IF(($A$1:$A1=$A2)*($B$1:$B1=$B2)*($E$1:$E1=$E2),$C$1:$C1,0)+IF(COUNTIFS($A$1:$A1,$A2,$B$1:$B1,$B2,$E$1:$E1,$E2,$D$1:$D1,$D2)>0,0,1)))
  • 这是查看当前行之上的所有行(例如$A$1:$A1将开头锁定为顶部,而将结尾锁定为上一行)
  • 如果现在有匹配的日期,ID&上述行中的条件 - > 1
  • 否则,使用数组公式部分查找该日期/ ID /条件的MAX焦点,如果是新时间,则添加1

希望这是一个明确的解释......

它似乎给你的例子带来了两个不同......最后一行(根据我的评论)以及FJ / T / 10:%2和Focal 4 ......这种组合已经存在。

祝你好运,并记得使用 Ctrl + Shift + 输入

输入

答案 1 :(得分:1)

我有一些东西,但我无法将其作为一个单一的公式。在第2行中输入以下内容并将公式复制:

在F栏:

=A2&B2&D2&E2    ' Concatenate the required fields to create a reference

在G栏:

=IF(COUNTIF($F$2:F2,F2)>1,"",1)    ' Create a marker to determine the first occurrence of each reference

在H栏:

=IF(G2=1,A2&B2&E2,"")    ' Create a reference to count occurrences in a day

在第一栏:

=IF(G2=1,COUNTIF($H$2:H2,H2),0)    ' Count first occurrences in the day

在第J栏:

=INDEX($I$2:I2,MATCH(F2,$F$2:F2,0))    ' Return the count of first occurrences

它可以整理一下,但我认为它符合您的要求,这是展示我所做的最简单的方法。