Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2010, 17:49   #1
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию замена символов в строке(ячейке)

помогите решить задачу
в столбце "B" есть такие значения

06.00:00:00
06.00:10:00
06.00:30:00
06.00:48:00
................

нужен макрос с помощью которого "." меняется на ":" ,а последнее ":" меняется на "."
pooli вне форума Ответить с цитированием
Старый 24.09.2010, 17:57   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Пробуем так:

Код:
Sub test()
    Dim cell As Range, ra As Range: Application.ScreenUpdating = False
    Set ra = Range([b1], Range("b" & Rows.Count).End(xlUp))
    For Each cell In ra.Cells
        txt = Replace(cell, ".", ":"): pos = InStrRev(txt, ":")
        If pos Then Mid(txt, pos, 1) = "."
        If cell <> txt Then cell.NumberFormat = "@": cell = txt
    Next cell
End Sub
Пример в файле: http://excelvba.ru/XL_Files/Sample__...__19-57-06.zip
EducatedFool вне форума Ответить с цитированием
Старый 24.09.2010, 18:21   #3
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию

Спасибо, сработало!

есть еще вопросик касательно символов.
из excel сохраняю в .txt макросом книгу

Private Sub air()
Dim sname
sname = InputBox("ВВЕДИТЕ ИМЯ", "сохранение")

If sname = "" Then
Exit Sub
Else
ActiveWorkbook.SaveAs Filename:="C:\" & sname + ".txt", FileFormat:=xlText
End If

End Sub

на выходе получаю текстовый файл, но в нем присутствуют лишние пробелы, можно ли как-то тутже из макроса указать сохранение без них?
у меня программа вещания ТВ по другому не поймет.

в архиве
екселевский
исходник-то что сохранилось и файлик как должно быть .
Вложения
Тип файла: rar ccc.rar (26.1 Кб, 22 просмотров)
pooli вне форума Ответить с цитированием
Старый 24.09.2010, 18:51   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Надо заменить все символы табуляции на пробелы.
Это можно сделать при помощи этих функций: http://excelvba.ru/code/txt

Код:
Private Sub air()
    Dim sname: sname = InputBox("ВВЕДИТЕ ИМЯ", "сохранение")
    If sname = "" Then Exit Sub
    sname = "C:\" & sname + ".txt"
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs sname, xlText
    ActiveWorkbook.ChangeFileAccess xlReadOnly
    SaveTXTfile sname, Replace(ReadTXTfile(sname), vbTab, " ")
    Application.DisplayAlerts = True
End Sub


Function ReadTXTfile(ByVal filename As String) As String
    On Error Resume Next: Set fso = CreateObject("scripting.filesystemobject")
    Set ts = fso.OpenTextFile(filename, 1, True): ReadTXTfile = ts.ReadAll: ts.Close
    Set ts = Nothing: Set fso = Nothing
End Function

Function SaveTXTfile(ByVal filename As String, ByVal txt As String) As Boolean
    On Error Resume Next: Err.Clear
    Set fso = CreateObject("scripting.filesystemobject")
    Set ts = fso.CreateTextFile(filename, True)
    ts.Write txt: ts.Close
    SaveTXTfile = Err = 0
    Set ts = Nothing: Set fso = Nothing
End Function
PS: Для обработки текстового файла его совсем необязательно открывать в Excel...

Последний раз редактировалось EducatedFool; 24.09.2010 в 18:54.
EducatedFool вне форума Ответить с цитированием
Старый 24.09.2010, 19:07   #5
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию

Спасибо!
сработало
pooli вне форума Ответить с цитированием
Старый 27.09.2010, 01:41   #6
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Хоть и "нужен макрос", для разнообразия - формула:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;".";":"); ":";".";3)
vikttur вне форума Ответить с цитированием
Старый 27.09.2010, 08:46   #7
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию

Цитата:
Сообщение от vikttur Посмотреть сообщение
Хоть и "нужен макрос", для разнообразия - формула:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;".";":"); ":";".";3)
этот вариант я пробовал.
формулы в моем варианте не катят.

Последний раз редактировалось pooli; 27.09.2010 в 08:57.
pooli вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена во вводимой строке всех повторяющихся символов их восьмеричными представлениями и вывод результата AquaticSoul Общие вопросы C/C++ 5 08.03.2010 11:51
Замена во вводимой строке всех повторяющихся символов их восьмеричными представлениями. С++ AquaticSoul Помощь студентам 4 07.03.2010 22:48
Замена символов на слова в строке Shihmars Общие вопросы C/C++ 3 24.01.2010 18:51
TASM: Замена символов в строке. APTEMUC Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 18.01.2010 05:48
замена символов в строке euhenia Помощь студентам 3 30.11.2009 20:59