【问题标题】:Search and Replace random cell text by first :通过 first 搜索和替换随机单元格文本:
【发布时间】:2013-09-17 14:56:35
【问题描述】:

我有大量行 (100K+) 来搜索和修改内容。

例如,单元格包含与 DGC9610411:DB:10:82 类似的文本

除了 : 对我来说意味着什么之外,所有这些文本都可以每行更改。

在这一行和其他每一行中,我需要删除第一个 : 以及之后的所有文本,以便单元格看起来像这个 DGC9610411

接下来我将在末尾添加另一个单元格的内容。我认为这将是一个简单的步骤,而且我很可能不费吹灰之力就能搞定。

我在每一行的 while 循环中都有这段代码。所以代码一次只查看一行。

我搜索过,但似乎每个人都有不同的需求。

【问题讨论】:

    标签: excel text replace cell


    【解决方案1】:

    只需使用查找和替换,无需 vba 或公式。

    1. 选择包含您需要修改的数据的列
    2. Ctrlh 打开“查找和替换”对话框。
    3. 在“查找内容:”字段中,输入:*
    4. 在“替换为:”字段中,将其留空
    5. 点击全部替换

    编辑:如果它必须是 VBA,这个简单的宏将完成同样的事情。请务必将A 更改为您的实际列字母。

    Sub tgr()
    
        Columns("A").Replace ":*", ""
    
    End Sub
    

    编辑: 根据要求,我正在添加公式解决方案。在单元格 B1 中并向下复制:

    =LEFT(A1,FIND(":",A1&":")-1)
    

    【讨论】:

    • 非常好!我没有意识到 Replace 方法支持通配符。
    • 是的,如果你真的想在 VBA 中做同样的事情:Columns("A").Replace ":*", ""
    • 我不得不使用 VBA,因为我正在使用这些数据执行大量其他命令。我检查了这是正确的答案,因为我使用了您的第二个建议 Columns("A").Replace ":*", "" 效果很好。谢谢!
    【解决方案2】:

    试试这个小宏:

    Sub colonoscopy()
        Dim c As String
        Dim r As Range, I As Long
        For Each r In ActiveSheet.UsedRange
            v = r.Value
            I = InStr(1, v, ":")
            If I > 0 Then
                r.Value = Mid(v, 1, I - 1)
            End If
        Next r
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 2023-01-25
      • 2012-04-15
      • 1970-01-01
      • 2012-02-16
      相关资源
      最近更新 更多