Заменить, очистить и обрезать VBA - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь:

  1. Заменить двойные пробелы на одинарные.
  2. Очистить
  3. Обрезать

той же строки ия использую:

AmountI = Replace(Application.WorksheetFunction.Clean(Trim(.Cells(j, 9).Value)), "  ", " ")

Я хочу знать, есть ли определенный порядок этих трех функций VBA или этот порядок не играет никакой роли в результате. Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

vba.trim не удаляет двойной интервал, только начальные / конечные пробелы.Для удаления промежуточных двойных пробелов необходима версия рабочего листа Application.Trim или WorksheetFunction.Trim.

Если у вас тройной интервал, один заменитель оставит вас с двойным пробелом.Application.Trim не будет.

Вы не хотите, чтобы Clean обрабатывал символы (т. Е. Пробелы), которые вы собираетесь удалить в любом случае, поэтому сначала обрежьте.

.Value2 (без информации о валюте или дате)) незначительно ускоряет обработку, когда у вас нет данных о валюте или дате;у вас есть строка, поэтому используйте .Value2.

AmountI = Application.Clean(Application.Trim(.Cells(j, 9).Value2))
0 голосов
/ 25 октября 2018
 AmountI = Trim(Replace(Application.WorksheetFunction.Clean(.Cells(j, 9).text), "  ", " "))

Моя логика такова: 1. Текст быстрее, чем. Значение 2 Очистить можно закрыть два пробела, удалив между ними непечатаемый символ, так что сделайте это раньше ... 3 Превратите двойные пробелы в одинарные с заменой, затем 4 Удалить начальные и конечные пробелы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...