Страницы: 1
RSS
Замена конкретного формата денежный, поиск и замена импортированных форматов
 
Здравствуйте!
Как найти и выделить в диапазоне ячейки с форматом "денежный" (€ немецкий Германия)? Задействованный поиск (Ctrl+F) с указанием формата искомой ячейки не нашел ни одной. Моя задача заменить форматы "денежный" (далее фД) на нужные форматы ячеек. фД, скорее всего импортировались из Outlook при вставке в экселевский файл таблиц или их частей из писем, появляется огромное количество стилей (XLCleanerDotNET показал более 50 000 стилей). Высылаемый файл очищен от лишних стилей, но проблема в оригинале (не загружается из-за размера) осталась.
 
Добрый день!
Денежный формат менять на какой-то конкретный или в каждом случае разный?
 
Форматы разные, но в целом меня удовлетворит "общий". И почему не получается выделить ячейки с этим форматом?

Макросом Ник. Павлова
Код
Sub Reset_Styles()
    'удаляем все лишние стили
    For Each objStyle In ActiveWorkbook.Styles
        On Error Resume Next
        If Not objStyle.BuiltIn Then objStyle.Delete
        On Error GoTo 0
    Next objStyle
    'копируем стандартный набор стилей из новой книги
    Set wbMy = ActiveWorkbook
    Set wbNew = Workbooks.Add
    wbMy.Styles.Merge wbNew
    wbNew.Close savechanges:=False
End Sub

не получилось:
компьютер долго-долго "молотит", а при снятии задачи Диспетчером задач выдает ошибку
Изменено: Александр Чекирда - 23.03.2020 12:02:38
 
Цитата
Как найти и выделить в диапазоне ячейки с форматом "денежный" (€ немецкий Германия)?
Код
If Selection.NumberFormat = "#,##0.00 [$€-407];[Red]#,##0.00 [$€-407]" Then
 
Kuzmich, можно на русском? Или это код VBA?
Изменено: Александр Чекирда - 23.03.2020 12:15:14
 
Александр Чекирда,
Да это код VBA
Попробуйте для столбца С
Код
Sub iConv()
Dim i As Long
Dim iLastRow As Long
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 2 To iLastRow
   If Cells(i, 3).NumberFormat = "#,##0.00 [$€-407];[Red]#,##0.00 [$€-407]" Then
      Cells(i, 3).NumberFormat = "#,##0.00"
   End If
  Next
End Sub
 
Compile error:
Syntax error
 
Синтаксической ошибки в #6 нет (вставляйте в стандартный модуль), тем не менее этот код может не дать желаемого результата, поскольку символ (eвро) не представлен в кодовой странице Windows-1251.
Вставьте следующий код в стандартный модуль, выделите ячейку с "немецким" денежным форматом и запустите макрос.
Код
' Меняет в листе формат всех ячеек, совпадающий с форматом ActiveCell, на числовой
Sub iConv_2()
Dim c As Range, v
v = ActiveCell.NumberFormat
For Each c In ActiveSheet.UsedRange
  If c.NumberFormat = v Then
    c.NumberFormat = "#,##0.00"
  End If
Next c
End Sub
Макрос не оптимизирован под большие объемы данных.
Изменено: sokol92 - 23.03.2020 14:18:23
Владимир
 
Володя, у меня
Цитата
Can't execute code in break mode
а у Вас?
 
Такое сообщение означает, что Вы пытаетесь запустить код в то время, когда уже есть код, запущенный ранее. Перейдите в редактор VBE и выберите в меню Run/Reset
Владимир
 
sokol92, получилось, спасибо. В коде можно внести изменения на формат "общий"? Если нет, то оставить числовой, но убрать десятичные?

На какой объем данных (ориентировочно) можно рассчитывать для этого макроса?
 
Можно указать любой формат для замены, например, общий:
Код
 c.NumberFormat = "General"

Если у Вас десятки (сотни) тысяч ячеек, то макрос нужно оптимизировать.
Владимир
 
Владимир, это относится к листу или ко всей книги?
 
В коде из сообщения #8 замените
Код
c.NumberFormat = "#,##0.00"
на
Код
c.NumberFormat = "General"
 
Kuzmich, спасибо
Страницы: 1
Наверх