ArrayFormula根据验证数组验证和设置数组

时间:2018-04-17 04:45:24

标签: google-sheets

感谢您抽出宝贵时间来查看我的问题。

我正在努力寻找合适的组合或数组,vlookup,索引/匹配配对。我的目标是针对另一个1列数组中的单个或成对单词的验证集测试1列数据数组(类型字符串)的每个单元格。如果数据数组中的单元格包含验证字,则函数将验证字输入到数据数组中的相邻单元格中。如果未找到匹配项,则应将相邻单元格设置为空。为了测试我的功能,我使用的数据类似于以下内容。

       Desc_Array                         Result Array Validation_Array

     | A                                 |     B      |    C     |
   __________________________________________________________________
1    | Lorem ipsum dolor sit amet        |  (null)    | Quis nisi|
2    | Consectetur adipiscing elit       |  Cons      |   Ut     |
3    | Sed do eiusmod tempor incididunt  |  Sed       |   Et     |
4    | Ut labore et dolore magna aliqua  |  Ut        |   Ad     |
5    | Ut enim ad minim veniam           |  Ut        |   Cons   |
6    | Quis nostrud exercitation ullamco |  (null)    |   Sed    |
7    | Laboris nisi ut aliquip ex ea     |  Ut        |          |
8    | commodo consequat                 |  Cons      |          |

arrayformula函数将在单元格B1

结果数组中需要注意的几点。 如果验证字出现在数据数组中任何字的开头,则测试为TRUE。 找到第一场比赛时,测试可以返回TRUE。 该测试不区分大小写

对于测试,我可以使用简单的regexmatch表达式吗?

=if(Desc_Array<>"",regexmatch(Desc_Array,"\A(?i)"&Validation_Array),(NOT(ISBLANK(Desc_Array))))

我尝试过QUERY“contains”方法,但是测试1失败了。

我想我的事情就像:

=ArrayFormula(iferror(index(Validation_Array,match(Validation_Array,Desc_Array,FALSE),1),))

1 个答案:

答案 0 :(得分:1)

=TRANSPOSE(SPLIT(TEXTJOIN(",",1,ArrayFormula(IFERROR( REGEXEXTRACT(A1:A8, "(?i)[^a-z\-]("&JOIN(")|[^a-z\-](",C1:C6)&")|^("&JOIN("|",C1:C6)&")"), "(null)"))),","))

注意:

C1:C6 = Validation_Array

A1:A8 = Desc_Array