Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] макрос преобразования форматов

Ответить
Настройки темы
2010 - [решено] макрос преобразования форматов

Старожил


Сообщения: 292
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Подскажите, как используя регулярные выражения переделать формат дат с 10.05.2005 на формат 10-05-2005 . нужно именно макросом , а не ctrl+h и заменить точку на тире

Отправлено: 21:45, 13-04-2015

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Надо полагать, его нет у Вас в списке форматов. Насколько я понимаю, перед тем, как использовать пользовательский тип формата в .FindFormat/.ReplaceFormat — его нужно добавить к списку пользовательских форматов. Т.е., что-то наподобие:
Код: Выделить весь код
Option Explicit

Sub Макрос1()
    ActiveSheet.Range("D1").NumberFormat = "dd-mm-yyyy"
    
    With Application
        With .FindFormat
            .Clear
            .NumberFormat = "m/d/yyyy"
        End With
        
        With .ReplaceFormat
            .Clear
            .NumberFormat = "dd-mm-yyyy"
        End With
    End With
    
    ActiveSheet.Cells.Replace What:="", Replacement:="", SearchFormat:=True, ReplaceFormat:=True
    
    ActiveSheet.Range("D1").NumberFormat = "General"
End Sub
поскольку единственным известным мне способом программного добавления является применение формата к ячейке листа рабочей книги. В примере была взята некая пустая ячейка, отформатирована потребным форматом, сделан поиск и замена, затем эта же пустая ячейка приведена к формату по умолчанию.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:04, 17-04-2015 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 292
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar proverka.rar
(17.0 Kb, 11 просмотров)

Iska,
Цитата kontox:
вот для примера набор данных. Взял из головы
столбец A это id
B-фио
С номер кейса
D-состояние
E номер телефона
как можно сделать чтобы отобразились те данные, где
в столбце А тип number (4)
в столбце B тип varchar(20 char)
в столбце С тип varchar(12 char)
В столбце D тип number(1)
в столбце E тип number(11)
Вложения »

что-то код написан, а не работает. Можете посмотреть, где в нем ошибка?

Отправлено: 10:58, 18-04-2015 | #12


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата kontox:
что-то код написан, а не работает. Можете посмотреть, где в нем ошибка? »
Что значит «не работает»? А как должен был работать?

Ваших потребностей я не понял, о чём писал уже выше. Других пояснений Вы не дали.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:31, 18-04-2015 | #13


Старожил


Сообщения: 292
Благодарности: 0

Профиль | Отправить PM | Цитировать


Исходя из описанного ниже формата нужно выделить только корректные записи, т.е. записи такого вида.
Название поля Тип (длина) Обязательность
1 ID number (4) NOT NULL
2 FIO varchar (20 char ) NOT NULL
3 Document varchar (12 char NOT NULL
4 Type_phone number (1) NULL
5 Phone number (11) NULL

Отправлено: 18:36, 19-04-2015 | #14


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


kontox, что означает, например, «длина (4)» применительно к «number»? Число десятичных символов при отображении?!

Update: и по поводу:
Цитата:
4 Type_phone number (1) NULL
5 Phone number (11) NULL
как понимать — должны быть пустыми? Или могут быть пустыми?

В общем, как-то так:
Скрытый текст
Код: Выделить весь код
Sub Sample()
    Dim objRow As Range
    Dim objRange As Range
    Dim objSelection As Range
    
    Dim boolSkipFromSelection As Boolean
    
    
    Set objSelection = Nothing
    
    For Each objRow In ThisWorkbook.Worksheets.Item("proverka").UsedRange.Rows
        boolSkipFromSelection = False
        
        For Each objRange In objRow.Range(Cells(1, 1), Cells(1, 3)).Cells
            If IsEmpty(objRange.Value) Then
                boolSkipFromSelection = True
                
                Exit For
            End If
        Next
        
        If Len(CStr(objRow.Cells(1, 1).Value)) > 4 Then
            boolSkipFromSelection = True
        ElseIf Len(CStr(objRow.Cells(1, 2).Value)) > 20 Then
            boolSkipFromSelection = True
        ElseIf Len(CStr(objRow.Cells(1, 3).Value)) > 12 Then
            boolSkipFromSelection = True
        ElseIf Len(CStr(objRow.Cells(1, 4).Value)) > 1 Then
            boolSkipFromSelection = True
        ElseIf Len(CStr(objRow.Cells(1, 5).Value)) > 11 Then
            boolSkipFromSelection = True
        End If
        
        If Not boolSkipFromSelection Then
            If objSelection Is Nothing Then
                Set objSelection = objRow
            Else
                Set objSelection = Union(objSelection, objRow)
            End If
        End If
    Next
    
    objSelection.Select
    
    Set objSelection = Nothing
    Set objRange = Nothing
    Set objRow = Nothing
End Sub

Последний раз редактировалось Iska, 19-04-2015 в 19:19.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:52, 19-04-2015 | #15



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] макрос преобразования форматов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] удаление файлов определенных форматов DOCznet Скриптовые языки администрирования Windows 8 21-02-2014 01:50
2003/XP/2000 - Макрос Excel для преобразования колонки текста в число в dbf файлах aRHangel2013 Microsoft Office (Word, Excel, Outlook и т.д.) 8 11-01-2013 17:07
2010 - [решено] Таблицы форматов A1 и А2 Хоррор Microsoft Office (Word, Excel, Outlook и т.д.) 4 08-10-2010 17:07
CD и DVD - [решено] Выбор форматов записи для CD-дисков DIDIDIDIMA Программное обеспечение Windows 4 20-11-2009 14:15
Delphi - [решено] Bitmap и Canvas для преобразования изображения, работает очень долго hackroute Программирование и базы данных 2 02-11-2009 11:01




 
Переход