Option Explicit Sub test() Dim arr, mark, i, j, t mark = Split("坡 型 级 侧 式") arr = Range("b3:b" & [b65536].End(xlUp).Row) For i = 1 To UBound(arr, 1) For j = 0 To UBound(mark) If InStr(arr(i, 1), mark(j)) > 0 Then Exit For Next If j < UBound(mark) + 1 Then t = IIf(InStr(arr(i, 1), "山坡") > 0, "山坡", vbNullString) arr(i, 1) = t & Split(arr(i, 1), mark(j))(1) Else arr(i, 1) = "无法分割!" End If Next [d:d].ClearContents [d3].Resize(UBound(arr, 1), 1) = arr End Sub