【问题标题】:Excel 2007 Transpot - Merge with if statementsExcel 2007 Transpot - 与 if 语句合并
【发布时间】:2018-05-21 07:06:38
【问题描述】:

我必须在 excel 2007 中完成一项任务,但我找不到方法!

我有这张桌子:

        A       B         C           D
1    CODE    NUMBER    USERID      CHECKED
2    100     1501        317         OK
3    100     1502        318
4    100     1600        319
5    100     1601        319
6    101     1503        319
7    101     1504        317         OK 
8    101     1120        317
9    102     1505        325
10   102     1506        328
11   102     1807        319
12   102     1808        313         OK
13   102     2012        317

然后继续……(我还有一些标准,但如果我知道正确的功能,我想我可以独自完成)

所以我的输出会是这样的:

 |      F     |       G                     |         H
1| (IF A:A =) | (AND IF D:D <> OK) -        | (AND IF D:D <> OK) -    
 |            |    WITHOUT USERID           |    WITH USERID
2|   100      | 1502 - 1600 - 1601          | 1502(317) - 1600(319) - 1601 (319) --and keep going if have more
3|   101      | 1503 - 1120                 | 1503(319) - 1120(317) --and keep going if have more
4|   102      | 1505 - 1506 - 1807 - 2012   | 1505(325) - 1506(328) - 1807(319) - 2012(317) --and keep going if have more

在我的表中,我有 120 个代码,10 个用户 ID,每个数字都是唯一的。

【问题讨论】:

  • 你有我的同情 - 我现在必须在 Excel 97/2003 兼容模式下工作。很快就会发布一些东西。

标签: excel excel-2007


【解决方案1】:

如果您使用的是 Excel 2007,则可以使用 SUMPRODUCT 和 IFERROR 之类的内容,但不能使用 AGGREGATE,当然也不能使用 TEXTJOIN。

所以我认为不太可能有一个巧妙的解决方案。我会这样做:

不幸的是,您将需要一些帮助列。为了计算出您需要多少辅助列,您可以使用这样的公式(作为数组公式输入)来查找每个代码的最大数字数

=MAX(FREQUENCY(IF((D2:D100<>"OK")*(A2:A100<>""),A2:A100),A2:A100))

然后假设您有一种将唯一代码制成表格的方法,您可以使用 SMALL 来提取每个代码中对它们没有 OK 的不同数字,并且(因为 Excel 2007 中可用的连接函数不适用于数组) 将它们与从 H2 开始的先前结果连接起来:

=IFERROR(IF(G2="","",G2&" - ")&SMALL(IF(($D$2:$D$100<>"OK")*($A$2:$A$100=$F2),$B$2:$B$100),COLUMNS($A:A)),G2)

用户ID可以从M2开始添加

=IFERROR(IF(L2="","",L2&" - ")&SMALL(IF(($D$2:$D$100<>"OK")*($A$2:$A$100=$F2),$B$2:$B$100),COLUMNS($A:A))
&" ("&VLOOKUP(SMALL(IF(($D$2:$D$100<>"OK")*($A$2:$A$100=$F2),$B$2:$B$100),COLUMNS($A:A)),$B$2:$C$100,2,FALSE)&")",L2)

【讨论】:

    【解决方案2】:

    下面的数组公式可以解决您的问题。由于您输入的COL:D 标准是相同的,因此我已按我的意愿安排它们;如果它是相反的方式,你必须扭转它。

    将公式写入E2,按Ctrl+Shift+Enter并复制下来。该公式的开头和结尾将有“{”和“}”字符。

    =IF(D2="OK",CONCAT(IF(A2=A:A, B:B&" - ","")),CONCAT(IF(A2=A:A, B:B&"("&C2&") - ","")))
    

    字符串末尾会有多余的“-”;如果有问题,您可以使用LEFT 函数将其删除,将长度参数作为字符串的LEN()-1

    编辑:

    我找到了一个更简洁的解决方案,它最后不会创建“-”。这又是一个数组公式(s/b 由 Ctrl+Shift+Enter 输入)。唯一可能的问题是TEXTJOIN 是一种新公式,旧版 Excel 不支持。

    =IF(D2="OK",TEXTJOIN(" - ",TRUE,IF($A$2:$A$13=A2,$B$2:$B$13,"")), TEXTJOIN(" - ",TRUE,IF($A$2:$A$13=A2,$B$2:$B$13 & "("& $C$2:$C$13&")","")))
    

    【讨论】:

      猜你喜欢
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      相关资源
      最近更新 更多