如果满足特定条件 (EXCEL),则识别列表中条目的第一次出现

Identify first occurrence of an entry in a list, if certain criteria is met (EXCEL)

我花了太多时间试图弄清楚我们在这个问题的标题中强加的问题,并且正在寻求帮助。

当标准等于 AR 时,我想为第一次出现的条目输出 1,当标准等于单独列上的 SFR 时,我想为列上的第一次出现输出条目 1。

例如,我想要在下面的 table 中的列是标题为 ARSFR

的列
|Property Name  | product | company | AR | SFR |
|---------------|---------|---------|----|-----|
|orange grove   |    2    |   SFR   | 0  |  1  |
|orange grove   |    1    |   AR    | 1  |  0  |
|orange grove   |    6    |   AR    | 0  |  0  |
|garden court   |    2    |   SFR   | 0  |  1  |
|garden court   |    1    |   AR    | 1  |  0  |
|chimney sweeps |    6    |   AR    | 1  |  0  |
|chimney sweeps |    2    |   SFR   | 0  |  1  |
|chimney sweeps |    1    |   AR    | 0  |  0  |
|chimney sweeps |    4    |   SFR   | 0  |  0  |
|downing apts   |    2    |   SFR   | 0  |  1  |
|downing apts   |    1    |   SFR   | 0  |  0  |
|downing apts   |    6    |   AR    | 1  |  0  |

我尝试在我的公式中实现 countif 并且仅在我的输出结果为 1 时才考虑,然后将条件 "AR" 或 "SFR" 的公式与结果嵌套在我的 countif 中,如果满足条件,但 table 没有组织,因此 AR 在 table 行中排在第一位,反之亦然。这是我的公式的示例:

=IF(E2="AR", IF(COUNTIF($C:C2,C2)=1,1,""), "")

有时我会遇到公司名称出现但计数不是 1 的情况。以 orange grove 为例。对于每个 +1 实例,Orange grove 的计数将连续为 1、2、3。如果我的计数是 1 且 SFR,我的公式将输出 1,但如果我的条件是 AR 并且计数不是 1(实际上是 2 或 3),我不会第一次出现根据我的 AR 标准输出。

我看到可能有一种方法可以利用 sumproduct,但我不熟悉它。

谁能帮忙。我们将不胜感激!

如果您可以 CONCATENATE 属性 姓名和公司,然后将下面提到的公式输入 ARSFR 单元格,它会保证您的结果。

  1. 插入一列并使用=CONCATENATE(A2," ",C2)合并Product 姓名和公司。它应该给你 space 分隔的结果 格式。例如。 orange grove SFR、扫烟囱 AR 等
  2. 在属于 AR 列的单元格 E2 中输入此公式:=IF(TRIM(RIGHT($D2,3))=E,IF(OR(COUNTIF($D:$D,$D2)=1,MATCH($D2,$D:$D,0)>=ROW($D2)),1,0),0)
  3. 将公式向左拖动到单元格 F2 以应用于 SFR 列,然后拖动到每列的底部以应用于所有 records/rows.

最终你会得到如下结果:

Table:

R/C   A               B         C        D                    E     F

01    Property Name   product   company  Merged PN + C        AR    SFR
-------------------------------------------------------------------------
02    orange grove    2         SFR      orange grove SFR     0     1
03    orange grove    1         AR       orange grove AR      1     0
04    orange grove    6         AR       orange grove AR      0     0
05    garden court    2         SFR      garden court SFR     0     1
06    garden court    1         AR       garden court AR      1     0
07    chimney sweeps  6         AR       chimney sweeps AR    1     0
08    chimney sweeps  2         SFR      chimney sweeps SFR   0     1
09    chimney sweeps  1         AR       chimney sweeps AR    0     0
10    chimney sweeps  4         SFR      chimney sweeps SFR   0     0
11    downing apts    2         SFR      downing apts SFR     0     1
12    downing apts    1         SFR      downing apts SFR     0     0
13    downing apts    6         AR       downing apts AR      1     0

解释:

  1. 我们合并了产品名称和公司以识别唯一记录。
  2. 然后我们创建了一个条件来检查最后 3 个字符以匹配我们的列名称:=IF(TRIM(RIGHT($D2,3))=E
  3. 如果上述条件为真,这意味着我们在正确的公司列中,我们现在可以继续检查产品名称实例是否在第一位。如果不是,那么我们在错误的列中,所以只打印 0.
  4. 如您所述,产品名称和公司可以是唯一组合或多个组合。因此有2个条件: 一种。当组合唯一时,即计数等于 1:COUNTIF($D:$D,$D2)=1 b.当组合重复但第一个实例的行号小于等于当前行号时:MATCH($D4,$D:$D,0)>=ROW($D4)
  5. 如果以上 2 个条件中的任何一个为真,则记录是第一个实例,因此打印 1,否则不是,因此打印 0。

希望对您有所帮助。

假设 D 列和 E 列分别是您的 AR 和 SFR 列所在的位置,尝试:

Table结构:

    AR  SFR
AR  1   0
AR  0   0
AR  0   0
AR  0   0
AR  0   0
SFR 0   1

单元格 D2 将是(假设 AR 是 D 列的 Header 列)

=IF(C2=D1,1,0)

E2 将是:

=IF(C2=E1,1,0)

对于 D3,然后向下拖动 D 列中的每个单元格

=IF(SUM(D:D2)=0,IF($C3=D,1,0),0)

对于 E3,然后向下拖动 E 列中的每个单元格

IF(SUM(E:E2)=0,IF($C3=E,1,0),0)

谢谢!

瑞安