当前位置: 首页 > 知识库问答 >
问题:

如何删除单元格vba中符号或短语后的文本

经嘉
2023-03-14

我正在尝试编写一个宏,它将循环遍历大量的行(一个特定的列),如果找到一个特定的单词,则删除文本。不幸的是,我没有取得任何进展,并希望社区可以帮助。

该行的一个示例是

“一”lorem ipsum dolor sit amet,consectetur adipiscing elit“六十六”sed do eusmod tempor incidunt ut labore et dolore magna aliqua.

宏完成任务后的预期结果是:

“One”Lorem ipsum dolor sit amet,consectetur adipiscing elit

所以所有以“66y_six”开头和之后的内容都将被删除。

到目前为止我有的代码是:

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

我得到的错误声明“无效的限定符”,但不确定如何修复它。

事先谢谢你的帮助。

共有1个答案

丰景同
2023-03-14

首先,声明一个工作表,这样您就可以在这里对对象进行适当的限定。您还在循环一个无效的范围--请参见循环下面列上所有行的正确方法(假设要更改的字符串在列C中)

假设值“66y_six”将出现一次或根本不出现,则可以使用split将字符串转换为两个元素,其中:

  • 第一个元素是“66y_six”
  • 之前的所有元素
  • 第二个元素是“66y_six”
  • 之后(包括)的所有元素

如果字符串中没有出现“66y_six”,则整个字符串将保留在第一个元素中

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

只需使用搜索和替换(CTRL+F)并使用通配符搜索“66y_six”*和替换(一个空字符串)即可避免VBA。

突出显示目标列并选择全部替换

@Bigben用于调用非Excel解决方案

 类似资料:
  • 我有一个字符串,其中包含重复出现的短语,或者它甚至可能是一个连续出现多次的单词。 尝试了各种方法,但找不到更好的节省时间和空间的方法。 这是我尝试过的方法 Groupby() re 在我的情况下,他们两个似乎都不起作用 我的预期结果: 这些是我提到的一些帖子 有没有办法删除字符串中重复和连续的单词/短语?-不工作 我怎么能删除重复的字在一个字符串与Python?-工程部分,但需要一个最佳的方式为大

  • 问题内容: 起初,我使用了网格。创建新版本的GWT后,我想替换CellTable上的Grid。 问题答案: 查看javadoc以获取详细信息。我的示例就像您可以在此处找到的示例(稍稍扩展一下):

  • 我的VBA脚本中有一些代码,当行的相应B列的值等于零时,应该删除整行。不幸的是,我所使用的代码行并不是我想要的,因为如果相应行中的任何单元格等于零,它会删除整行。以下是迄今为止的代码: 例如,我有一行,其中D列中的单元格等于零,而这段代码删除了整行,即使B列中的单元格的值不是零。如何更改代码,使其实际上只扫描列B中的条目? 如有任何帮助,我们将不胜感激。

  • 我想删除Vaadin 8网格中所有单元格周围的边框。我不相信这可以用代码来做,并且表格的css不适用于网格,因此你如何为网格执行此操作?

  • 我有一个excel,它有多个行和列,每行的列值范围不同。 需要一个宏,该宏将删除每行中除第一个和最后一个以外的所有单元格,并将最后一个值粘贴到第一个值旁边。 尝试了以下脚本:

  • 我有一个工作表,我需要根据单元格值删除行。。 要检查的单元格位于A列中。。 如果单元格包含“-”。。删除行 我找不到这样做的方法...我打开一个工作簿,将所有内容复制到另一个工作簿,然后删除整个行和列,但必须根据单元格值删除特定的行。 这里需要帮助。 更新 我拥有的数据样本