Вопрос:
Я пытаюсь удалить часть строки. Например,
mystring=»site, site text, sales «
Я хочу удалить “ сайт” из mystring. Мой требуемый результат: “текст сайта, продажи
Я использую эту строку кода:
s1 = Replace(mystring, «site», «»)
но я получаю «text, sales»
Я не уверен, как это сделать, и я очень благодарен за вашу помощь!
Лучший ответ:replace(«site, site text, sales «,»site, «,»»,1,1)
Вы также можете отправить в качестве параметра начальную позицию, а затем количество раз, которое вы хотите заменить… (по умолчанию -1)
Ответ №1
Здесь есть много разных вариантов:
Просто добавив кому в строку поиска для замены и используйте Trim, чтобы избавиться от пробелов:
s1 = Trim(Replace(mystring, «site,», «»))
Укажите количество времени, в которое вы хотите заменить строку (сначала “1” – это начало, второе – количество замен)
s1 = Trim(Replace(mystring, «site,», «»,1,1))
Или жесткий/плохой способ, чтобы разложить вашу строку на две части после первого появления, а затем рекомбинировать, чтобы получить результат…
TempStart = Left(mystring, InStr(1, mystring, «site») + Len(mystring) + 1) TempEnd = Replace(mystring, TempStart, «») TempStart = Replace(TempStart, «site», «») mystring = CStr(TempStart & TempEnd) Ответ №2
Вы также можете использовать функцию VB MID для пользователя следующим образом:
Mystring=Mid(myString, 6)
вывод будет “текста сайта, продаж
Просто укажите количество символов, которые вы хотите удалить, в части номер.
Ответ №3
В моем случае я хотел удалить часть строк, которая была между “[” и “]”. И следующий код работал отлично.
Итак, с исходной строкой в столбце A (и решением в столбце B):
Sub remove_in_string() Dim i, lrowA, remChar As Long Dim mString As String lrowA = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lrowA mString = Cells(i, 1).Value If InStr(mString, «[«) > 0 Then remChar = InStr(mString, «]») — InStr(mString, «[«) + 1 Cells(i, 2).Value = Left(mString, Len(mString) — remChar) ElseIf InStr(mString, «[«) = 0 Then Cells(i, 2).Value = Cells(i, 1).Value End If Next End Sub