Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 查找并替换为多个模式_Google Sheets - Fatal编程技术网

Google sheets 查找并替换为多个模式

Google sheets 查找并替换为多个模式,google-sheets,Google Sheets,假设我有一个文本值列(命名数据),由=unique()函数生成。此外,还有一组要查找和替换的模式(查找和替换列) 如果匹配,我应该使用哪个公式扫描数据中的每个单元格以查找并替换它中的多个模式 Data Find Replace Result 1 a c z a 2 b f y b 3 c e x z 4 d d 5 e x 6 c

假设我有一个文本值列(命名数据),由=unique()函数生成。此外,还有一组要查找和替换的模式(查找和替换列)

如果匹配,我应该使用哪个公式扫描数据中的每个单元格以查找并替换它中的多个模式

   Data Find Replace Result
1  a    c    z       a
2  b    f    y       b
3  c    e    x       z
4  d                 d
5  e                 x
6  c                 z

尝试了=SUBSTITUTE()和=IF()函数,但当我设置一个模式数组而不是单个模式时,它失败了。

如果表格在A1:E7范围内,请尝试以下公式

=TRANSPOSE(SPLIT(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(ARRAYFORMULA(CONCATENATE($B$2:$B$7&"|")),$C$2,$D$2),$C$3,$D$3),$C$4,$D$4),"|"))

您可以进一步了解此和。

阵列解决方案

此公式需要替换范围,因此可用于不同数量的图案:

=QUERY(数组形式({REGEXMATCH(A2,$B$2:$B$4)),
REGEXREPLACE(A2,$B$2:$B$4,$C$2:$C$4)}),
“按列1描述限制1选择列2订单”)

或者这个:

=INDEX(ArrayFormula(REGEXREPLACE(A2,$B$2:$B$4,$C$2:$C$4)),IFERROR(MATCH(A2,$B$2:$B$4,0),1))
或者这个:

=IFERROR(索引($C$2:$C$4,匹配(A2,$B$2:$B$4,0)),A2)

这个公式是需要拖下来的


单一公式和阵列解决方案

此外,此单个阵列公式也可以实现以下功能:

=ArrayFormula(trim(transpose)查询({IF(--REGEXMATCH(transpose)(A2:A7),$B$2:$B$4)=1,
REGEXREPLACE(转置(A2:A7),$B$2:$B$4,$C$2:$C$4),“”);
转置(如果(--not(REGEXMATCH(A2:A7,JOIN(“|”),B2:B4)),A2:A7,“”),COUNTA(A2:A‘‘‘);

或者这个较短的公式:

=ArrayFormula(iError(VLOOKUP(匹配(A2:A7,B2:B4,0)){ROW(间接(“a1:a”)和COUNTA(C2:C4))),C2:C4},2,0),A2:A7))


请参见

中的说明,它工作正常。除了自动更新之外,有没有其他方法可以做到这一点?在您的公式中,我应该为每个新的替换模式手动添加一个REGEXREPLACE。据我所知,最简单的方法是使用脚本。像REGEXREPLACE和SUBSTITUTE这样的公式不能与多个选项一起使用
=IFERROR(索引($C$2:$C$4,匹配(A2,$B$2:$B$4,0)),A2)
较短,并且执行相同的操作1。它是否总是被替换的整个字符串,如本例中所示,或者它可能是字符串的一部分?2.如果是后者,是否可能在一个字符串中需要替换多个子字符串?3.替换字符是否始终为一个字符?1。是的,是整根绳子。2.你能解释一下,什么是子串吗?3.不,所有字符串都包含一些句子2。如果您指的是数据列,那么它有重复项(非唯一值),应该用第一个替换。好的,假设您有一个数据单元格:
魔毯骑行
,在查找列表中,您有
魔幻车
骑行
,并有一个有效的替换项。这两个都会被替换吗?啊,我意识到问题出在哪里了。实际上,我只能添加到查找列表中的全名。比如说,在数据列中有两个单元格,名为
魔毯之旅
。我只想用
集尘器
替换这两个。