vba - 查找并删除 Excel 单元格内的文本

标签 vba excel

我已在单元格 A1 中粘贴了如下所示的文本:

“Vanguard - 总市场 - 综合”或“Vanguard - 总市场 - 混合”

我想剪掉“-Composite”或“-Commingled”并将其余部分返回到单元格 B1 中。目前我在 B1 中使用这个公式:

=LEFT(A1,FIND("- 复合",A1)-1)

但是,我不知道如何查找多个术语(即复合或混合)。有没有一个公式可以实现这一点?如果没有,我怎样才能在VBA中做到这一点?

感谢您的帮助!

最佳答案

如果我理解正确的话,您只是想删除第二次出现 - 之后的所有内容。 ,即返回第一个 - 左侧的修剪后的(删除了多余的空格)文本。特点。适应this solution要找到字符串中的最后一个单词,就是这样:

=TRIM(SUBSTITUTE(LEFT(A1,LEN(A1)-LEN(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))+1,LEN(A1)))),"-","",2))

无论 - 周围有空格,此公式都适用。 ,并且无论以下内容如何:

formula in action


如果均匀间距很重要,您可以用 SUBSTITUTE 将其包裹起来功能:

=SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(LEFT(A1,LEN(A1)-LEN(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))+1,LEN(A1)))),"-","",2)),"-"," - "),"  "," ")

现在您可以为所有情况提供干净且格式相同的输出:

even spacing

关于vba - 查找并删除 Excel 单元格内的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39644497/

相关文章:

C# 创建 Excel(完成)然后显示/打开它?帮助

返回集合的 VBA 函数

excel - 通过 MS Project 导入功能保持 MS Project 和 MS Excel 文件同步

angularjs - 如何使用 ALASQL 和 XLSX 设置自定义 header 名称

excel - 无密码取消工作簿保护

vba - 我在 Excel 中有宏的语法错误

c++ - 将 SAFEARRAY 变体从 c++ dll 传递给 vba

excel - 如何在 Excel-VBA 中将此 ElseIf 编写为 Case 语句?

sql - 如何使用 SQL Server 中的数据填充 Excel ComboBox?

excel - 使用公式从excel上的2列中提取和合并非重复数据