如果满足特定条件 (EXCEL),则识别列表中条目的第一次出现
Identify first occurrence of an entry in a list, if certain criteria is met (EXCEL)
我花了太多时间试图弄清楚我们在这个问题的标题中强加的问题,并且正在寻求帮助。
当标准等于 AR 时,我想为第一次出现的条目输出 1,当标准等于单独列上的 SFR 时,我想为列上的第一次出现输出条目 1。
例如,我想要在下面的 table 中的列是标题为 AR
和 SFR
的列
|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
属性 姓名和公司,然后将下面提到的公式输入 AR
和 SFR
单元格,它会保证您的结果。
- 插入一列并使用
=CONCATENATE(A2," ",C2)
合并Product
姓名和公司。它应该给你 space 分隔的结果
格式。例如。 orange grove SFR、扫烟囱 AR 等
- 在属于
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)
- 将公式向左拖动到单元格 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
解释:
- 我们合并了产品名称和公司以识别唯一记录。
- 然后我们创建了一个条件来检查最后 3 个字符以匹配我们的列名称:
=IF(TRIM(RIGHT($D2,3))=E
- 如果上述条件为真,这意味着我们在正确的公司列中,我们现在可以继续检查产品名称实例是否在第一位。如果不是,那么我们在错误的列中,所以只打印 0.
- 如您所述,产品名称和公司可以是唯一组合或多个组合。因此有2个条件:
一种。当组合唯一时,即计数等于 1:
COUNTIF($D:$D,$D2)=1
b.当组合重复但第一个实例的行号小于等于当前行号时:MATCH($D4,$D:$D,0)>=ROW($D4)
- 如果以上 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)
谢谢!
瑞安
我花了太多时间试图弄清楚我们在这个问题的标题中强加的问题,并且正在寻求帮助。
当标准等于 AR 时,我想为第一次出现的条目输出 1,当标准等于单独列上的 SFR 时,我想为列上的第一次出现输出条目 1。
例如,我想要在下面的 table 中的列是标题为 AR
和 SFR
|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
属性 姓名和公司,然后将下面提到的公式输入 AR
和 SFR
单元格,它会保证您的结果。
- 插入一列并使用
=CONCATENATE(A2," ",C2)
合并Product 姓名和公司。它应该给你 space 分隔的结果 格式。例如。 orange grove SFR、扫烟囱 AR 等 - 在属于
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)
- 将公式向左拖动到单元格 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
解释:
- 我们合并了产品名称和公司以识别唯一记录。
- 然后我们创建了一个条件来检查最后 3 个字符以匹配我们的列名称:
=IF(TRIM(RIGHT($D2,3))=E
- 如果上述条件为真,这意味着我们在正确的公司列中,我们现在可以继续检查产品名称实例是否在第一位。如果不是,那么我们在错误的列中,所以只打印 0.
- 如您所述,产品名称和公司可以是唯一组合或多个组合。因此有2个条件:
一种。当组合唯一时,即计数等于 1:
COUNTIF($D:$D,$D2)=1
b.当组合重复但第一个实例的行号小于等于当前行号时:MATCH($D4,$D:$D,0)>=ROW($D4)
- 如果以上 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)
谢谢!
瑞安