首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果符合某些条件,则确定列表中某项的第一次出现(EXCEL)

如果符合某些条件,则确定列表中某项的第一次出现(EXCEL)
EN

Stack Overflow用户
提问于 2015-06-26 23:01:59
回答 2查看 5.7K关注 0票数 1

我花了太多的时间想弄清楚这个问题的题目,并寻求一些帮助。

当标准等于AR时,我希望为第一次出现输出一个条目1,当标准等于独立列上的SFR时,输出第一次出现在列上的条目为1。

例如,下表中我想要的列是标题为ARSFR的列

代码语言:javascript
复制
|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中,但该表没有组织,因此AR在表行中排在第一位,反之亦然。下面是我公式的一个例子:

代码语言:javascript
复制
=IF(E2="AR", IF(COUNTIF($C$2:C2,C2)=1,1,""), "")

有时,我会遇到公司名称出现但计数不是1的实例。例如,orange grove。对于每个+1的例子,橘子树的计数将是连续的1,2,3。如果我的计数是1,并且是SFR,那么我的公式将输出1,但是如果我的标准是AR,而计数不是1(实际上是2或3),那么根据AR的标准,我不会得到第一次出现的输出。

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

有人能帮忙吗。一切都会感激的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-27 00:59:50

如果您可以CONCATENATE属性名称和公司,然后将下面提到的公式输入到ARSFR单元中,它将为您提供一个结果。

  1. 插入列并使用=CONCATENATE(A2," ",C2)合并产品名称和公司。它应该给出以空格分隔格式的结果。就像。橘子林SFR,烟囱清扫AR等。
  2. 在单元格E2中输入此公式,该公式属于AR列:=IF(TRIM(RIGHT($D2,3))=E$1,IF(OR(COUNTIF($D:$D,$D2)=1,MATCH($D2,$D:$D,0)>=ROW($D2)),1,0),0)
  3. 将剩下的公式拖到单元格F2上,以应用于SFR列,然后拖到每个列的底部,以应用所有记录/行。

最后,您将得到如下预期的结果:

表:

代码语言:javascript
复制
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

Explanation:

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

希望能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 2015-06-27 01:12:58

假设D列和E列分别位于AR列和SFR列中,请尝试:

表结构:

代码语言:javascript
复制
    AR  SFR
AR  1   0
AR  0   0
AR  0   0
AR  0   0
AR  0   0
SFR 0   1

单元格D2应该是(假设AR是D列的列标题)

代码语言:javascript
复制
=IF(C2=D1,1,0)

E2将是:

代码语言:javascript
复制
=IF(C2=E1,1,0)

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

代码语言:javascript
复制
=IF(SUM(D$2:D2)=0,IF($C3=D$1,1,0),0)

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

代码语言:javascript
复制
IF(SUM(E$2:E2)=0,IF($C3=E$1,1,0),0)

谢谢!

瑞安

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31083359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档