Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 07.12.2011, 11:18   #1
alexsampler
Форумчанин
 
Регистрация: 29.03.2011
Адрес: Москва
Сообщений: 86
Репутация: 10
По умолчанию Замена одного значения на другое

Excel 2003
Очень нужна помощь!
Программа выдает файл с массивом, где цифры с отрицательным значением отображаются как например: 1,234.56- а нужно что бы было -1 234.56 (кол-во знаков и разряды могут быть разными)
В макросе с помощью мастера текста и функции автозамены (Ctrl+H) удается добиться лишь варианта 1234.56- , дальше чего бы не делал ни формат и само значение изменить не удается. Что бы добиться нужного формата приходиться убирать минус (-), НО тогда значение становится положительным 1 234.56, а это не приемлемо (нужно именно отрицательное число)
Выкладываю исходный файл из программы, и фал с макросом, которым преобразую текст в Excel , ну и пример того, что получается…
Мне предложили вот такое решение:

Цитата:
Dim s
s = "123.45-"
Debug.Print Val(s) * IIf(Right$(s, 1) = "-", -1, 1)
s = "-123.45"
Debug.Print Val(s) * IIf(Right$(s, 1) = "-", -1, 1)
s = "123.45"
Debug.Print Val(s) * IIf(Right$(s, 1) = "-", -1, 1)
но оно не работает…
Возможно, я его не правильно использую
Помогите пожалуйста, подскажите решение
И прежде чем предложить вариант решения протестируйте его пожалуйста на моем примере.
Спасибо!
Вложения
Тип файла: rar 401.rar (33.2 Кб, 7 просмотров)
alexsampler вне форума   Ответить с цитированием
Старый 07.12.2011, 13:33   #2
alex77755
Участник клуба
 
Аватар для alex77755
 
Регистрация: 15.02.2009
Адрес: Украина Павлоград
Сообщений: 753
Репутация: 64
По умолчанию

Можно создать процедуру и вызвать её из процедуры импорта
Код:

''''''''''''''' тут вся процедура импорта
ZNAK
End Sub

Sub ZNAK()
Dim J
For J = 10 To Cells(Rows.Count, 6).End(xlUp).Row
Cells(J, 6).Value = Val(Cells(J, 6).Value) * IIf(Right$(Cells(J, 6).Value, 1) = "-", -1, 1)
Cells(J, 7).Value = Val(Cells(J, 7).Value) * IIf(Right$(Cells(J, 7).Value, 1) = "-", -1, 1)
Next J
End Sub

Только разделительный знак станет запятая.
Если это принципиально - дописать Replace
__________________
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru

Последний раз редактировалось alex77755; 07.12.2011 в 13:35.
alex77755 вне форума   Ответить с цитированием
Старый 08.12.2011, 13:06   #3
alexsampler
Форумчанин
 
Регистрация: 29.03.2011
Адрес: Москва
Сообщений: 86
Репутация: 10
По умолчанию

Цитата:
Сообщение от alex77755 Посмотреть сообщение
Можно создать процедуру и вызвать её из процедуры импорта
Код:

''''''''''''''' тут вся процедура импорта
ZNAK
End Sub

Sub ZNAK()
Dim J
For J = 10 To Cells(Rows.Count, 6).End(xlUp).Row
Cells(J, 6).Value = Val(Cells(J, 6).Value) * IIf(Right$(Cells(J, 6).Value, 1) = "-", -1, 1)
Cells(J, 7).Value = Val(Cells(J, 7).Value) * IIf(Right$(Cells(J, 7).Value, 1) = "-", -1, 1)
Next J
End Sub

Только разделительный знак станет запятая.
Если это принципиально - дописать Replace
Вы знаете условием как раз таки является оставлять разделитель точку, я об этом забыл указать, работаю с несколькими рабочими комплексами, там условие именно точка!!!
alexsampler вне форума   Ответить с цитированием
Старый 08.12.2011, 13:09   #4
alexsampler
Форумчанин
 
Регистрация: 29.03.2011
Адрес: Москва
Сообщений: 86
Репутация: 10
По умолчанию

Всем, кому интересно
На самом деле решение найдено и оно оказалось вполне красивым и простым:
в конец макроса был дописан следующий код:
Цитата:
Dim r As Range
For Each r In [C:G].SpecialCells(2)
If InStr(r, "-") Then r = Val(r) * -1
Next
alexsampler вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Date из одного окна в другое окно delphicoding Общие вопросы Delphi 8 27.07.2011 19:53
Замена одного слова на другое в массиве строк С++ Тома1993 Помощь студентам 0 17.03.2011 22:52
Перевод с одного значения в другое в С++ 2008 atlon Общие вопросы C/C++ 11 11.01.2009 01:34
Перетаскивание значения одного поля в другое inret Общие вопросы Delphi 3 09.05.2008 15:26
[Delphi] Замена одного слова на другое... ZhooZhik Помощь студентам 5 10.01.2008 00:31


08:14.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru