以下是一个 Excel VBA 代码示例,用于删除数据特定部分:

Sub process_data()
    
    Dim last_row As Long
    last_row = Cells(Rows.Count, "E").End(xlUp).Row
    
    ' Step 1: 删除 E 列第一个字符
    Range("G1:G" & last_row).FormulaR1C1 = "=MID(RC[-4],2,LEN(RC[-4])-1)"
    
    ' Step 2: 删除 H 列中 F 列数据相同的部分
    Range("H1:H" & last_row).FormulaR1C1 = "=IF(ISNUMBER(SEARCH(RC[-2],RC[-1])),MID(RC[-1],LEN(RC[-2])+1,LEN(RC[-1])-LEN(RC[-2])),'')"
    
    ' Step 3: 删除 H 列中 C+数字前面的字符
    Dim cell As Range
    For Each cell In Range("H1:H" & last_row)
        Dim i As Integer
        For i = 1 To Len(cell.Value)
            If Not IsNumeric(Mid(cell.Value, i, 1)) Then
                cell.Value = Mid(cell.Value, i, Len(cell.Value) - i + 1)
                Exit For
            End If
        Next i
    Next cell
    
End Sub

代码逻辑:

  1. 删除 E 列第一个字符: 使用 MID 函数提取 E 列中每个单元格从第二个字符开始到最后一个字符的子字符串,并将结果放入 G 列。
  2. 删除 H 列中 F 列数据相同的部分: 使用 SEARCH 函数查找 H 列中是否存在 F 列的数据,如果存在则使用 MID 函数提取 H 列中从 F 列数据长度后的字符到最后一个字符的子字符串,并将结果放入 H 列。
  3. 删除 H 列中 C+数字前面的字符: 循环遍历 H 列每个单元格,使用 IsNumeric 函数判断字符是否为数字,如果为数字则退出循环,否则将该字符后的子字符串替换为当前单元格的值。

注意:

  • 该代码假设 C+数字前面没有其他字符。如果这个假定不成立,你需要根据你的实际情况修改代码。
  • 为了提高代码效率,可以使用数组来处理数据,而不是循环遍历每个单元格。

希望这个示例能够帮助你理解如何使用 Excel VBA 删除数据特定部分。如果你有任何问题,请随时提问。


原文地址: https://www.cveoy.top/t/topic/mJ6m 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录