У нас есть около 3500 документов, имена файлов которых необходимо вычистить вручную, чтобы удалить специальные символы, такие как скобки, двоеточия, точки с запятой, запятые и т. Д.
У меня есть текстовый файл, который я выгрузил в Excel, и я пытаюсь создать столбец, который помечает имя файла для модификации, если он содержит специальные символы. Формула псевдокода будет
=IF (cellname contains [^a-zA-z_-0-9], then "1", else "0")
помечать строку, если она содержит какие-либо символы, кроме AZ, 0-9, - или _, независимо от регистра.
Кто-нибудь знает что-то, что может работать на меня? Я не решаюсь писать код и делать массивные if
заявления, если есть что-то быстрое и простое.
Ответы:
Нет кода? Но это так коротко, легко и красиво и ... :(
Ваш шаблон RegEx
[^A-Za-z0-9_-]
используется для удаления всех специальных символов во всех ячейках.редактировать
Это как можно ближе к вашему первоначальному вопросу.
Второй код - это пользовательская функция
=RegExCheck(A1,"[^A-Za-z0-9_-]")
с 2 аргументами. Первый - это клетка для проверки. Второй шаблон RegEx, который нужно проверить. Если шаблон соответствует любому из символов в вашей ячейке, он вернет 1, иначе 0.Вы можете использовать его, как любую другую обычную формулу Excel, если сначала откроете редактор VBA с помощью ALT+ F11, вставите новый модуль (!) И вставьте приведенный ниже код.
Для новых пользователей RegEx я объясню ваш шаблон:
[^A-Za-z0-9_-]
источник
=RegExReplace(cell)
не распознается .... и я немного заржавел при создании новых функций.Используя что-то похожее на код nixda, здесь определена пользовательская функция, которая вернет 1, если в ячейке есть специальные символы.
Пользовательские функции (UDF) очень просты в установке и использовании:
Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx
Чтобы удалить UDF:
Чтобы использовать UDF из Excel:
= IsSpecial (А1)
Чтобы узнать больше о макросах в целом, смотрите:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
и
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
и
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
для уточнения на UDFs
Макросы должны быть включены, чтобы это работало !
источник
If sCh Like "[0-9a-zA-Z ]" Or sCh = "_" Then
чтобы макрос предполагал, что пробелы являются допустимыми символами?Вот решение для условного форматирования, которое помечает записи специальными символами.
Просто примените новое правило условного форматирования к вашим данным, которое использует (очень длинную) формулу ниже, где
A1
находится первая запись в столбце имен файлов:Эта формула проверяет каждый символ каждого имени файла и определяет, находится ли его ASCII-код вне допустимых значений символов. К сожалению, допустимые коды символов не все смежные, поэтому в формуле должны использоваться суммы
SUMPRODUCT
s. Формула возвращает количество плохих символов. Любые ячейки, которые возвращают значение больше 0, помечаются.Пример:
источник
Я использовал другой подход, чтобы найти специальные символы. Я создал новые столбцы для каждого из разрешенных символов, а затем использовал следующую формулу, чтобы подсчитать, сколько раз этот разрешенный символ был в каждой записи строки (Z2):
Затем я суммировал количество разрешенных символов в каждой строке, а затем сравнил его с общей длиной записи строки.
И наконец, я отсортировал последний столбец (BF2), чтобы найти отрицательные значения, что привело меня к столбцам, которые нуждались в исправлении.
источник