Excel VBA – добавьте пользовательский формат номера

У меня есть файл, созданный вне Excel со многими процентами. Все эти проценты имеют одно десятичное место. При импорте в excel Excel добавляет второе десятичное число к процентам – это, по-видимому, некоторый формат по умолчанию для процентов в Excel. Он просто добавляет «0».

Я хочу отформатировать все десятичные десятичные числа до одной десятичной точки. Если я сделаю это вручную, используя CTRL + H, найдите формат форматирования / замены, это будет хорошо. Но я не могу это сделать с помощью VBA / macro, даже если я записываю макрос при выполнении замены вручную. Код, созданный при записи макроса, таков:

Application.FindFormat.NumberFormat = "0.00%" Application.ReplaceFormat.NumberFormat = "0.0%" Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True 

Ошибка происходит:

 Application.ReplaceFormat.NumberFormat = "0.0%" 

После многих проб и ошибок я обнаружил, что новый формат должен быть в списке «Пользовательский формат». Но одно-десятичное число процентов по умолчанию отсутствует. Если я вручную отформатирую одну ячейку в желаемом формате, макрос работает. Конечно, я не хочу делать это с каждым файлом.

Любой вход был бы высоко оценен.

Заранее спасибо!

Если вы примените формат пользовательского номера в одну ячейку, он станет «указанным» и впоследствии будет доступен для будущего использования с операцией по массовой замене. Я бы рекомендовал использовать что-то вроде:

  .range("A1").NumberFormat = "0.0%;@" 

Эта специальная маска формата может применяться к любой ячейке с процентом или текстом. Если у вас есть метка заголовка столбца с текстовым значением и применяется к CNF, часть ;@ заставляет текст отображаться буквально (без изменений). Таким образом, вы открываете больше возможностей, когда ставите первую CNF. После того, как он был использован один раз, он будет доступен для операций (-ов) замены массы на оставшуюся часть процентных значений.

Рассмотрим простой:

 Sub dural() Dim r As Range For Each r In ActiveSheet.UsedRange If r.NumberFormat = "0.00%" Then r.NumberFormat = "0.0%" End If Next r End Sub 
Interesting Posts

Loop Up rows до тех пор, пока значение не будет равно. Продолжение

Объединить значения ячейки, если не null

Как сопоставить заголовок в разных листах и ​​скопировать / вставить вторую строку, если есть совпадение?

значение excel третьей ячейки на основе значения первых и переменных номеров клеток

Как получить расширение файла с помощью Microsoft XMLHTTP с помощью VBA

Оператор VBA «И» оценивает второй аргумент, когда первый является ложным?

Создайте таблицу истинности результатов в формуле excel

Форматирование номера до 10K 5M и т. Д. В Excel 2016

Excel защищает книгу с паролем, но позволяет читать только на английском языке

Как определить, было ли нажато текстовое поле внутри userform1? и получить его значение, чтобы я мог сделать msgbox, а затем отобразить текст?

Вставить скопированную строку на основе значения ячейки

Среднее из 10 лучших значений в строке, обрабатывающих пустые ячейки как единицы

C # – класс не зарегистрирован – создание электронной таблицы Excel с помощью макросов с использованием VBIDE

Разделите вкладку «Разбор» в VBA

Экран Excel Interop не отображается

Давайте будем гением компьютера.