以下是一个可能的实现:

Sub process_data()

Dim last_row As Long
last_row = Cells(Rows.Count, "E").End(xlUp).Row

' Step 1
Range("G1:G" & last_row).FormulaR1C1 = "=MID(RC[-4],2,LEN(RC[-4])-1)"

' Step 2
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
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

这个VBA删除了E列的第一个字符,将结果放在了G列。然后,它在H列中查找F列中的数据,并删除它们相同部分后的内容。最后,它删除了H列中C+数字前面的字符。请注意,这个代码假定C+数字前面没有其他字符。如果这个假定不成立,你需要根据你的实际情况修改代码。

我需要一个excel的vba逻辑是:第一步删除E的第一个字符数据放在单元格G列;第二步当单元格G中包含了单元格F的数据则将他们相同部分删除后的数据放在单元格H列;第三步将H列中C+数字前面的字符删除

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

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