Я делаю некоторые обработки данных, и я использовал кодИспользование InStr для определения количества вхождений определенного символа?
If InStr(1, cell.Value, "/") > 1 Then
cell.Replace "/", ", "
End If
Теперь я понимаю, что было бы, если появились «/» больше, чем когда-то было бы тогда идти вперед и заменить его «». Однако кажется, что даже если есть только 1 "/", он все равно выполняет замену. Я не мастер кодирования, но кажется, что математика немного испорчена. Кто-нибудь знает, в чем проблема?
Edit: Полный код
Sub Title()
Application.ScreenUpdating = False
Dim rng As Range
Dim ws As Worksheet
Set ws = ActiveSheet
Dim cell As Range
Set rng = ws.Range(ws.Cells(2, 2), ws.Cells(ws.Rows.Count, 2).End(xlUp))
For Each cell In rng
If InStr(1, cell.Value, " ") > 0 Then
cell.Value = " " & cell.Value & " "
End If
Next cell
rng.Replace " ", " "
'Data Breakdown
'Remove phrases
rng.Replace "at *", ""
rng.Replace "We're *", ""
rng.Replace "We are *", ""
rng.Replace "we're *", ""
rng.Replace "we are *", ""
For Each cell In rng
If (Len(myCell) - Len(Replace(myCell, "/", ""))) > 1 Then
myCell = Replace(myCell.Text, "/", "")
End If
If InStr(1, cell.Value, " Manager of ") > 0 Then
cell.Replace " Manager of ", " Manager, "
End If
Next cell
rng.Replace " IT ", " IT, "
rng.Replace " Manager ", " Manager, "
Application.ScreenUpdating = True
End Sub
Instr находит позицию в строке первого вхождения, а не количество вхождений. Вы спрашиваете, находится ли '/' в позиции 2 или выше, если существует более одного '/'. Замена заменит все вхождения. –
Instr возвращает местоположение искомой строки, а не счет. –
Просмотрите документацию [msdn documentation] (https://msdn.microsoft.com/en-us/library/office/gg264811.aspx) функции InStr. – dee