Excel 如何删除单元格vba中符号或短语后的文本
我正在尝试编写一个宏,该宏将循环遍历一大组行(一个特定列),并在找到特定单词时删除文本。不幸的是,我没有取得任何进展,我希望社区能够提供帮助 这一行的一个例子是 “一个”是指一个人坐在一张桌子上,一个“六十六个”是指一个人在工作和生活中的时间 宏完成其任务后的预期结果是: “一个”Lorem ipsum dolor sit amet,献祭精英 所以所有以“六十六”开头和之后的内容都会被删除 到目前为止,我掌握的代码是:Excel 如何删除单元格vba中符号或短语后的文本,excel,vba,Excel,Vba,我正在尝试编写一个宏,该宏将循环遍历一大组行(一个特定列),并在找到特定单词时删除文本。不幸的是,我没有取得任何进展,我希望社区能够提供帮助 这一行的一个例子是 “一个”是指一个人坐在一张桌子上,一个“六十六个”是指一个人在工作和生活中的时间 宏完成其任务后的预期结果是: “一个”Lorem ipsum dolor sit amet,献祭精英 所以所有以“六十六”开头和之后的内容都会被删除 到目前为止,我掌握的代码是: Sub removeData() Dim i As Long Dim la
Sub removeData()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, "C").End(xlUp).Row
For i = 2 To lastRow
If InStr(i.Value, "sixty_six") > 0 Then
i.Value = Left(i.Value, InStr(i.Value, "sixty_six") - 1)
End If
Next i
End Sub
我获取的错误状态为“无效限定符”,但不确定如何修复它
提前感谢您的帮助。首先,声明一份工作表,以便您可以在此处正确限定您的对象。您也在一个无效的范围内循环-请参阅下面一列上所有行的正确循环方式(假设要更改的字符串位于
列C
)
假设您的值
“六十六”
将出现一次或根本不出现,您可以使用拆分
将字符串转换为两个元素,其中:
- 第一个元素是“六十六”之前的所有元素
- 第二个元素是“六十六”之后(包括在内)的所有内容
可供替代的 您只需使用搜索和替换(CTRL+F),使用通配符搜索
“sixth_six”*
和替换
(空白字符串),就可以避免VBA
突出显示目标列并选择“全部替换”
@要调用非excel解决方案,请首先声明一个工作表,以便在此处正确限定对象。您也在一个无效的范围内循环-请参阅下面一列上所有行的正确循环方式(假设要更改的字符串位于
列C
)
假设您的值
“六十六”
将出现一次或根本不出现,您可以使用拆分
将字符串转换为两个元素,其中:
- 第一个元素是“六十六”之前的所有元素
- 第二个元素是“六十六”之后(包括在内)的所有内容
可供替代的 您只需使用搜索和替换(CTRL+F),使用通配符搜索
“sixth_six”*
和替换
(空白字符串),就可以避免VBA
突出显示目标列并选择“全部替换”
@BigBen用于调用非excel解决方案
对目标值(“Sixth_six”
)进行拆分
),然后输出结果数组的第一个元素i
是一个长的
,因此没有值
。您还可以使用Find并用通配符替换:Find“Sixth_six”*i
是一个长的(2,3,4)…:-)。在单元格中使用它
或在范围内使用它
。顺便说一句,您不需要在目标值上使用循环(或VBA)。拆分
(“六十六”
)然后输出结果数组的第一个元素i
是一个Long
,因此没有.Value
。您也可以使用Find并替换为通配符:Find“sixth_six”*
i
是一个Long
(2,3,4):-)。在单元格中使用它
或与范围一起使用它
。顺便说一句,这里不需要循环(或VBA)。值得注意的是,您还可以在VBA中重新创建查找和搜索功能,并删除循环altogetherMay I建议的需要:ws.Range(“C”&I)=Split(ws.Range(“C”&I),“六十六”)(0)
=)对拆分的赞誉
值得注意的是,您还可以在VBA中重新创建“查找和搜索”功能,并且不再需要循环altogetherMay I sugest:ws.Range(“C”和I)=Split(ws.Range(“C”)和“六十六”)(0)
=)对拆分的赞誉
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim i As Long, lr As Long
Dim arr
lr = ws.Range("C" & ws.Rows.Count).End(xlUp).Row
For i = 2 To lr
arr = Split(ws.Range("C" & i), """sixty_six""")
ws.Range("C" & i) = arr(0)
arr = ""
Next i