基于多个条件从单列和填充列中查询值

时间:2019-02-20 10:02:06

标签: google-sheets google-sheets-formula google-sheets-query

我正在尝试仅查询从源选项卡到输出选项卡的满足特定条件的客户端ID,并根据条件填充2列的静态值和2列的动态值。

在“来源”标签中,我有:

+-----------------------+------+
| Status                | ID   |
+-----------------------+------+
| Retired/Deceased      | 2a33 |
+-----------------------+------+
| Liquidation           | 1sTR |
+-----------------------+------+
| Dissolved             | 3B76 |
+-----------------------+------+
| Released from company | 463z |
+-----------------------+------+
| Active                | 557g |
+-----------------------+------+
| In progress           | zz34 |
+-----------------------+------+
| Demo                  | cc56 |
+-----------------------+------+

请注意,有7个条件值,我只需要其中4个的输出。这意味着我需要4个值,根据这些值将对动态列进行二进制填充。其他3个值已过时。

从这4个值中获取(例如)条件1,那么我将填充2个动态列中的一个,否则(对于其他3个值)将具有其他填充值。

所以我想简单地采用二进制解决方案来选择特定值是不可行的。

在输出标签逻辑中:

+--------------------------------------------------------------------------------+
|                                   Output tab                                   |
+--------------------------------------------------------------------------------+
| ID | Status | Reason | Comment                    | Detail                     |
+----+--------+--------+----------------------------+----------------------------+
| A1 | Static | Static | If criteria = criteria 1,  | If criteria = criteria 1,  |
|    |        |        |    then null,              |    then value 1,           |
|    |        |        |    else criteria value     |    else value 2            |
+----+--------+--------+----------------------------+----------------------------+
| B1 | Static | Static | If criteria = criteria 1,  | If criteria = criteria 1,  |
|    |        |        |    then null,              |    then value 1,           |
|    |        |        |    else criteria value     |    else value 2            |
+----+--------+--------+----------------------------+----------------------------+
| C1 | Static | Static | If criteria = criteria 1,  | If criteria = criteria 1,  |
|    |        |        |    then null, else         |    then value 1,           |
|    |        |        |    criteria value          |    else value 2            |
+----+--------+--------+----------------------------+----------------------------+
| D1 | Static | Static | If criteria = criteria 1,  | If criteria = criteria 1,  |
|    |        |        |    then null,              |    then value 1,           |
|    |        |        |    else criteria value     |    else value 2            |
+----+--------+--------+----------------------------+----------------------------+
| E1 | Static | Static | If criteria = criteria 1,  | If criteria = criteria 1,  |
|    |        |        |    then null,              |    then value 1,           |
|    |        |        |    else criteria value     |    else value 2            |
+----+--------+--------+----------------------------+----------------------------+
| F1 | Static | Static | If criteria = criteria 1,  | If criteria = criteria 1,  |
|    |        |        |    then null,              |    then value 1,           |
|    |        |        |    else criteria value     |    else value 2            |
+----+--------+--------+----------------------------+----------------------------+
| G1 | Static | Static | If criteria = criteria 1,  | If criteria = criteria 1,  |
|    |        |        |    then null,              |    then value 1,           |
|    |        |        |    else criteria value     |    else value 2            |
+----+--------+--------+----------------------------+----------------------------+

虚拟输出标签:

+-----------------------+------+-------------------+-------------+------------------+---------------------------------+
| Status                | ID   | Status            | Reason      | Comment          | Detail                          |
+-----------------------+------+-------------------+-------------+------------------+---------------------------------+
| Retired/Deceased      | 2a33 | Unable to proceed | Unspecified | Retired/Deceased | Retired/No longer in business   |
+-----------------------+------+-------------------+-------------+------------------+---------------------------------+
| Liquidation           | 1sTR | Unable to proceed | Unspecified | Liquidation      | Retired/No longer in business   |
+-----------------------+------+-------------------+-------------+------------------+---------------------------------+
| Dissolved             | 3B76 | Unable to proceed | Unspecified | Dissolved        | Retired/No longer in business   |
+-----------------------+------+-------------------+-------------+------------------+---------------------------------+
| Released from company | 463z | Unable to proceed | Unspecified | (null)           | No longer works for the company |
+-----------------------+------+-------------------+-------------+------------------+---------------------------------+

不需要“状态”列。我添加它只是为了参考和可读性。

抱歉,但是我在共享指向Google表格的链接方面存在公司安全限制。

我最苦恼的部分是第4列(动态列中的第一个)需要从“源”标签中返回第2列中的条件值。

到目前为止,我已经围绕查询的第一部分进行了工作,在该部分中,我基于多个条件QUERY标识了ID,并标记并填充了静态值列。

=QUERY(Data!$A$3:$BN, 
    "SELECT B, 'Unable to proceed', 'Unspecified' 
     WHERE A = 'Retired/Deceased' 
      OR A = ''Liquidation' 
      OR A = 'Dissolved'  
      OR A = 'Released from company' 
      AND A IS NOT NULL
     LABEL 'Unable to proceed' 'Unspecified' , 'Status' 'Reason'", 1)

但是,我正在根据多个条件来处理动态列。

我在嵌套的ARRAYFORMULA中用IFERRORVLOOKUP查找了QUERY,但无法解决。

此外,我对如果有两个以上的值选项来填充“输出”选项卡中的第3列和第4列的方法非常感兴趣。 据我所知,根据准则解决2个值的方法是嵌套IFERROR函数以使其成为二进制。但是,如果有两个以上的值来填充数组怎么办?

2 个答案:

答案 0 :(得分:1)

基于ID:

=QUERY({QUERY(Data!$A$1:$B, 
        "SELECT B, 'Unable to proceed', 'Unspecified' 
         WHERE A = 'Retired/Deceased' 
            OR A = 'Liquidation' 
            OR A = 'Dissolved'  
            OR A = 'Released from company' 
           AND A IS NOT NULL
         LABEL 'Unable to proceed''Status', 'Unspecified''Reason'", 1),
        QUERY(ARRAYFORMULA(IFERROR(VLOOKUP(
        QUERY(Data!$A$2:$B, 
        "SELECT B
         WHERE A = 'Retired/Deceased' 
            OR A = 'Liquidation' 
            OR A = 'Dissolved'  
            OR A = 'Released from company' 
           AND A IS NOT NULL", 0), 
 {"2a33", "Retired/Deceased", "Retired/No longer in business";
  "1sTR", "Liquidation",      "Retired/No longer in business";
  "3B76", "Dissolved",        "Retired/No longer in business";
  "463z", "",                 "No longer works for the company"}, {2, 3}, 0), )), 
        "LABEL Col1'Comment', Col2'Detail'", 0)}, , 0)

答案 1 :(得分:1)

基于状态:

=QUERY({QUERY(Data!$A$1:$B, 
        "SELECT B, 'Unable to proceed', 'Unspecified' 
         WHERE A = 'Retired/Deceased' 
            OR A = 'Liquidation' 
            OR A = 'Dissolved'  
            OR A = 'Released from company' 
           AND A IS NOT NULL
         LABEL 'Unable to proceed''Status', 'Unspecified''Reason'", 1),
        QUERY(ARRAYFORMULA(IFERROR(VLOOKUP(
        QUERY(Data!$A$2:$B, 
        "SELECT A
         WHERE A = 'Retired/Deceased' 
            OR A = 'Liquidation' 
            OR A = 'Dissolved'  
            OR A = 'Released from company' 
           AND A IS NOT NULL", 0), 
 {"Retired/Deceased",      "Retired/Deceased", "Retired/No longer in business";
  "Liquidation",           "Liquidation",      "Retired/No longer in business";
  "Dissolved",             "Dissolved",        "Retired/No longer in business";
  "Released from company", "",                 "No longer works for the company"}, {2, 3}, 0), )), 
        "LABEL Col1 'Comment', Col2 'Detail'", 0)}, , 0)

0

相关问题