Excel:替换单元格字符串值的一部分

25

我有一个名为 "Roles" 的列的大型电子表格。在这个列中,有像下面这样的值:

ROLES
Author
Author;
Publishing; Author;
Something Else; Author; Publishing

还有其他的列中可能存在“Author”这个单词。

我需要做的是仅在我的“Roles”列中查找“Author”,并将其替换为“Authoring”,而不会丢失其前面或后面的任何内容。即最终结果应该是:

ROLES
Authoring
Authoring;
Publishing; Authoring;
Something Else; Authoring; Publishing

我尝试过使用FINDREPLACE函数,但这会替换整个单元格的值,而不仅是其中的一部分。

=IF(FIND("Author",[@Roles],1),REPLACE("Author",1,6,"Authoring"))

有人能帮忙吗?我不想使用VB解决方案,因为我不熟悉如何做,所以希望有基于公式的方法吗?

4个回答

73

你所需要的是使用SUBSTITUTE函数:

=SUBSTITUTE(A2,"Author","Authoring")

将作者(Author)替换为作者编写(Authoring),而不影响其他内容。


2
事实证明,使用shaylh的回答对我所需的情况更好,但你的回答也很棒,并且完全符合我想要的,基于问题来说。 (我没有说的是我有多次替换要做,而Ctrl + H版本对此最有效)。干杯 :) - QMKevin
不用担心,如果这是你需要的,那没关系,至少现在你有了选择,以防你需要其他东西。 - DarkAjax
我在寻找一个Excel中的函数名来执行与Oracle中的'Replace'相同的操作。好吧,我找了一段时间,在最后,我终于找到了正确的答案。 - pratik garg
如果像我一样,偶尔使用Excel生成SQL语句...你需要的是[ SUBSTITUTE(A1,"'","''") ]来转义单引号,从而防止垃圾脚本! - Mir

31
您需要执行以下操作:
  1. 列出项目。
  2. 通过单击相应的字母或仅使用鼠标选择单元格来选择整个列。
  3. 按Ctrl+H键。
  4. 现在您在“查找和替换”对话框中。 在“查找内容”文本框中写入“作者”(不含引号)。
  5. 在“替换为”文本框中写入“作者撰写”(不含引号)。
  6. 单击“全部替换”按钮。

就是这样!


哦,天哪!你说得完全正确。这是做这件事情最好、最快的方法。上次我尝试时显然做错了什么,因为它还替换了其他列中的值,但是你简明扼要的步骤解决了问题。谢谢 :) - QMKevin
4
这不是对所问问题的回答!请查看下面darkajax提供的答案中的SUBSTITUTE函数。并且这也不应该成为被采纳的答案。 - Nikolay Ivanov
这对我不起作用。在我的情况下,整个单元格内容被替换。 - Nouman Bhatti
这在我的Office 2010 Excel版本14.0.7214.5000中有效。 - gkubed

9

我知道这已经有点老了,但是我有一个类似的需求,我不想使用查找和替换版本。事实证明,您可以像这样嵌套替代方法:

=SUBSTITUTE(SUBSTITUTE(F149, "a", " AM"), "p", " PM")

在我的情况下,我使用Excel查看一个DBF文件,而无论它是如何填充的,时间都像这样:

9:16a
2:22p

所以,我刚刚创建了一个新列,并在其中放置了该公式,以将其转换为Excel时间格式。


-2

你有一个字符 = STQ8QGpaM4CU6149665!7084880820,还有另一列 = 7084880820

如果你想在Excel中只使用公式获取STQ8QGpaM4CU6149665!,请使用以下方法:

=REPLACE(H11,SEARCH(J11,H11),LEN(J11),"")

H11是一个旧字符,用搜索选项来找到起始数字,然后用长度选项来确定替换的字符数量,再用新字符进行替换。我将其替换为空白字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接