Удалить повторяющуюся подстроку из целого столбца excel-VBA
У меня есть столбец с именем "Имя", чьи записи имеют
предшествующая часть записи строки, которая мне нужна. так например
"Имя: {пустое место} ABC Retailers" вместо "ABC Retailers"
или же
"ame: {пробелы} XYZ Suppliers" вместо "XYZ Suppliers"
Я просто хочу избавиться от "Name:" и "ame:" из этих записей строки, а затем также от пробела слева.
Как именно я это сделаю?
Я пытался с помощью Replace
начиная с этого:
Sub fix_names()
'declare variables
Dim arr() As Variant
arr = Range("B2:B3781")
'count rows
noRows = Range("B2:b3781").Rows.Count
'begin clean up operation
For i = 1 To noRows
arr(i) = (Replace(arr(i), "Name:", ""))
Next i
End Sub
но безрезультатно. Что я делаю неправильно? Как я могу это исправить?
1 ответ
Решение
Согласно моему комментарию, простая формула сделает это:
=TRIM(MID(B2,SEARCH(":",B2) +1, LEN(B2)))
Если вы хотите это в VBA, то:
Sub fix_names()
'declare variables
Dim i as long
Dim arr() As Variant
arr = Range("B2:B3781")
'begin clean up operation
For i = LBound(arr, 1) To UBound(arr, 1)
arr(i, 1) = Trim(Mid(arr(i, 1), WorksheetFunction.IfError(Application.Find(":", arr(i, 1)), 1) + 1))
Next i
Range("B2:B3781").Value = arr
End Sub
Проблема в том, что даже если вы загружаете массив только с одним столбцом, он все равно является двумерным массивом и должен рассматриваться как таковой.