Excel Macro: If the final characters of a cell is

2019-09-07 11:36发布

This is an extension of a previously asked question that was amazingly answered and made me think of how else I can simplify my sloppy code.

Dim i As Long, l As Long
l = Cells(Rows.Count, 4).End(xlUp).Row
For i = l To 1 Step -1
  If Right(Cells(i, 4).Value, 4) = " XX " Then 

   'do some stuff to cut and paste that ending to ColumnE'
    Cells(i, 5) = " XX "

   'i'm trying to do something like this to clear the final 4 characters.
    Right(Cells(i, 4).Value, 4).ClearContents

  End If
Next i

2条回答
手持菜刀,她持情操
2楼-- · 2019-09-07 11:52

Take the left of the string, the number of chars is equal to the total length minus 4

Cells(i,4).Formula = Left(Cells(i, 4).Value, len(Cells(i, 4).Value)-4)
查看更多
Melony?
3楼-- · 2019-09-07 12:01

Or directly via two array IF tests

Sub Recut()
Dim lngCnt As Long
lngCnt = Cells(Rows.Count, "D").End(xlUp).Row
[e1].Resize(lngCnt, 1) = Application.Evaluate("=IF(RIGHT(D1:D" & lngCnt & ",4)="" XX "","" XX "","""")")
[d1].Resize(lngCnt, 1) = Application.Evaluate("=IF(RIGHT(D1:D" & lngCnt & ",4)="" XX "",LEFT(D1:D1000,LEN(D1:D" & lngCnt & ")-4),D1:D" & lngCnt & ")")
End Sub
查看更多
登录 后发表回答