使用Excel公式替换字符串的某些部分

使用Excel公式替换字符串的某些部分,excel,Excel,我得到一个字符串,看起来像这样: 015-02-1-1 我想用“019”替换“015”。 但字符串也可以是: 016-14-5-7 在这种情况下,“016”应替换为“018” 以下是应替换的所有值的列表: 015 => 019 016 => 018 018 => 016 019 => 020 020 => 021 021 => 022 022 => 023 023 => 024 字符串的其余部分(第一个破折号之后的所有内容)应保持不变。这可

我得到一个字符串,看起来像这样:

015-02-1-1
我想用“019”替换“015”。 但字符串也可以是:

016-14-5-7
在这种情况下,“016”应替换为“018”

以下是应替换的所有值的列表:

015 => 019
016 => 018
018 => 016
019 => 020
020 => 021
021 => 022
022 => 023
023 => 024 
字符串的其余部分(第一个破折号之后的所有内容)应保持不变。这可以通过公式实现,还是需要VBA


如果是这样,该公式会是什么样子?

这是一个假设数据从单元格G1开始的公式:

=LEFT(G1,1)&IF(MID(G1,2,2)="15",19,IF(MID(G1,2,2)="16",18,IF(MID(G1,2,2)="18",16,IF(MID(G1,2,2)="19",20,IF(MID(G1,2,2)="20",21,IF(MID(G1,2,2)="21",22,IF(MID(G1,2,2)="22",23,IF(MID(G1,2,2)="23",24,""))))))))&RIGHT(G1,LEN(G1)-3)
如何工作,找到左边字符串的第一个字符(G1,1)

使用嵌套ifs更改值,使用mid查找要更改的值,因为字符串被视为文本,我们必须使用“”来引用该值


然后把剩下的字符串加回去,用len减去3找到G1字符串的长度,这个值用于找到字符串中最右边的字符,将它们重新连接在一起

您也可以采用这样的查找方法

=IFERROR(HLOOKUP(LEFT(A1,3),{"015","016","018","019","020","021","022","023";"019","018","016","020","021","022","023","024"},2,FALSE),LEFT(A1,3))&RIGHT(A1,LEN(A1)-3)

使用CtrlShiftEnter作为数组公式输入

这可以用纯Excel公式完成,但它非常难看,而且容易出错。如果您可以访问,我可能会使用VBA。我的数据是一个Excel文件,所以我想留在Excel中。我将尝试为此开发一个VBA Sub。您能否确认只有字符串的第二位和第三位需要更改,或者字符串中的其他位置是否需要更改?能否确认@5202456它表示此公式存在问题它正在为我工作,请您确认您的数据位于单元格A1、A2、A3等中,另外,您使用的是什么版本的excel?是否提供了有关错误的详细信息?没有提供详细信息。使用Excel 2016且要拆分的字符串位于列G中您是否已更改公式以引用从第一行数据开始的列G中的单元格?抱歉,我发现了错误。我没有英文Excel,所以它可以简单地找到您使用的函数,因为它用我的语言检查函数。对不起,我弄错了