Модераторы: mihanik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функии форматирования в Excel существуют? 
:(
    Опции темы
kashemirny
Дата 27.11.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



Ребята, есть проблема: предположим, я делаю текстовый документ в Excel (цифры и условия автоматом переходят с другого листа), для этого использую функцию СЦЕПИТЬ, например:

если мне надо строка "договор № 06/512, заказ № 4128, сумма - 25744951"
я пишу:
=СЦЕПИТЬ("договор № ";реквизиты!C6;", заказ № ";реквизиты!C8; " сумма - ";расчет!D24)

однако, мне строка "договор № 06/512, заказ № 4128, сумма - 25744 951" нужна в виде "договор № 06/512, заказ № 4128", сумма - 25 744 951 (жирный шрифт + деление разрядов у больших цифр).

Как можно выполнить поставленную задачу?
PM MAIL   Вверх
Akina
Дата 27.11.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Только программно:

Код

ActiveCell.Characters(Start:=FragmentStart, Length:=FragmentLength).Font.FontStyle = "полужирный"



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kashemirny
Дата 28.11.2007, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



Akina, неужели нет функций?

хитрость в том, что у меня документ представляет собой 8 абзацев с большими кусками текста, в каждой из 8 ячеек используется функция СЦЕПИТЬ для вытаскивания данных с других листов. в результате того что не выделенны заголовки и суммы - документ нечитаем.....  smile 


Цитата(Akina @  27.11.2007,  21:45 Найти цитируемый пост)
1:    
ActiveCell.Characters(Start:=FragmentStart, Length:=FragmentLength).Font.FontStyle = "полужирный"

 smile 
могли бы состряпать xls? пока не понял как и куда........
PM MAIL   Вверх
Akina
Дата 28.11.2007, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Цитата(kashemirny @  28.11.2007,  01:00 Найти цитируемый пост)
неужели нет функций?

Встроенных? конечно нет. Только VBA-макрос.

Цитата(kashemirny @  28.11.2007,  01:00 Найти цитируемый пост)
хитрость в том

Нет в этом никакой хитрости, все плоско как блин. Надо просто взять и написАть код.

Цитата(kashemirny @  28.11.2007,  01:00 Найти цитируемый пост)
документ представляет собой 8 абзацев с большими кусками текста, в каждой из 8 ячеек используется функция СЦЕПИТЬ для вытаскивания данных с других листов. в результате того что не выделенны заголовки и суммы - документ нечитаем

Документ, с абзацами, наглядным форматированием - и вдруг в Экселе? ну-ну... а в фотошопе не пробовали?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 28.11.2007, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



kashemirny, создаешь новый модуль в VBA, кидаешь туда нижеприведённый код, обводишь те ячейки, которые хочешь отформатировать, запускаешь процедуру Paladin
Код
Private Sub Sceplenije(MyRange As Excel.Range)
  Dim ParamLengths(1 To 6) As Long
  Dim I1 As Long, I2 As Long
  Dim MyFormula As String, MyNumber As String, MyValue As String
  MyFormula = MyRange.FormulaLocal
  'надеюсь, знаки ; в тексте встречаться не будут ((:
  I1 = InStr(1, MyFormula, "(", 0) + 2
  I2 = InStr(I1, MyFormula, ";", 0)
  ParamLengths(1) = I2 - I1 - 1
  I1 = I2 + 1
  I2 = InStr(I1, MyFormula, ";", 0)
  ParamLengths(2) = Len(Range(Mid(MyFormula, I1, I2 - I1)).Value)
  I1 = I2 + 2
  I2 = InStr(I1, MyFormula, ";", 0)
  ParamLengths(3) = I2 - I1 - 1
  I1 = I2 + 1
  I2 = InStr(I1, MyFormula, ";", 0)
  ParamLengths(4) = Len(Range(Mid(MyFormula, I1, I2 - I1)).Value)
  I1 = I2 + 2
  I2 = InStr(I1, MyFormula, ";", 0)
  ParamLengths(5) = I2 - I1 - 1
  I1 = I2 + 1
  I2 = InStr(I1, MyFormula, ")", 0)
  ParamLengths(6) = Len(Range(Mid(MyFormula, I1, I2 - I1)).Value)
  'разряды
  MyNumber = Format(Range(Mid(MyFormula, I1, I2 - I1)).Value, "#,##0.00")
  MyRange.FormulaLocal = Left(MyFormula, Len(MyFormula) - 1 - Len(Mid(MyFormula, I1, I2 - I1))) & """" & MyNumber & """)"
  ParamLengths(6) = Len(MyNumber)
  'Bold
  MyValue = MyRange.Value
  MyRange.Formula = MyValue
  MyRange.Characters(Len(MyValue) - ParamLengths(6) + 1, ParamLengths(6)).Font.Bold = True
  MyRange.Characters(Len(MyValue) - ParamLengths(6) - ParamLengths(5) - ParamLengths(4) + 1, ParamLengths(4)).Font.Bold = True
  MyRange.Characters(Len(MyValue) - ParamLengths(6) - ParamLengths(5) - ParamLengths(4) - ParamLengths(3) - ParamLengths(2) + 1, ParamLengths(2)).Font.Bold = True
End Sub
Public Sub Paladin()
  Dim X As Long, Y As Long
  For X = 1 To Selection.Rows.Count
    For Y = 1 To Selection.Columns.Count
      Sceplenije Selection.Cells(X, Y)
    Next Y
  Next X
End Sub


Это сообщение отредактировал(а) kapbepucm - 28.11.2007, 14:34


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
kashemirny
Дата 28.11.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



kapbepucm, у меня ваш листинг не работает.... вам не затруднит описать что нужно сделать с документом чтобы макрос работал и как на счет примера?  smile 
PM MAIL   Вверх
kapbepucm
Дата 29.11.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Гм... Сделал проверку. Вроде работает. smile Данный комплекс у меня работает с ячейками, где  есть формула вида
Код
=CONCATENATE("договор № ";Sheet1!C6;", заказ № ";Sheet1!C8;" сумма - ";Sheet1!D24)
что есть эквивалент
Код
=СЦЕПИТЬ("договор № ";реквизиты!C6;", заказ № ";реквизиты!C8;" сумма - ";расчет!D24)
Я думаю языковая версия MsOffice роли здесь не играет: работа со строками.
Ну, давайте разбираться.
Цитата(kapbepucm @  28.11.2007,  14:32 Найти цитируемый пост)
создаешь новый модуль в VBA, кидаешь туда нижеприведённый код, обводишь те ячейки, которые хочешь отформатировать, запускаешь процедуру Paladin
Эти инструкции выполнили в полном соответствии?
Цитата(kashemirny @  28.11.2007,  20:29 Найти цитируемый пост)
у меня ваш листинг не работает
Будет ещё яснее, если бы вы указали сроку, где код перестаёт нормально работать и что пишет в "ругательстве". Жду ответа smile

Это сообщение отредактировал(а) kapbepucm - 29.11.2007, 12:20


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
kashemirny
Дата 29.11.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



kapbepucm, значит так: модуль создавать не умею, я просто записал простейший макрос через кнопку записи, вошел в редактор ВБА, очистил этот макрос и вбил ваш. В макросах высветилось гордое название - Paladin  smile. Далее я просто запустил этот макрос, выделив строчку с произвольным текстом..... Выбилась ошибка -   в строке
Код

ParamLengths(2) = Len(Range(Mid(MyFormula, I1, I2 - I1)).Value)

Вот.
PM MAIL   Вверх
kapbepucm
Дата 30.11.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Цитата(kashemirny @  29.11.2007,  23:02 Найти цитируемый пост)
запустил этот макрос, выделив строчку с произвольным текстом
 smile  smile  smile
Выделяйте не строчку с произвольным текстом, а именно те ячейки, в которых у вас присутствует формула вида
Код
=СЦЕПИТЬ("договор № ";реквизиты!C6;", заказ № ";реквизиты!C8;" сумма - ";расчет!D24)



--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
kashemirny
  Дата 3.12.2007, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



kapbepucm, да, действительно, работает.........
но что если мне нужна строка вида (с форматированием):


_________________________________________________
2. ЦЕНА И  ПОРЯДОК  РАСЧЕТОВ
2.1.    Общая стоимость заказа, согласно прейскуранту № 15-04-03-190090106/01 составляет  930 548=(Девятьсот тридцать тысяч пятьсот сорок восемь рублей)
    2.2. После подписания договора Заказчик в течение 5-ти банковских дней перечисляет полную стоимость заказа или аванс в размере не менее  50 %  для приобретения Исполнителем комплектую-щих изделий  и  материалов.
    2.3. Датой оплаты считается  дата перечисления денежных средств на расчетный счет, указанный Исполнителем.
    2.4. После перечисления Заказчиком предоплаты в размере 100% на расчетный счет Исполнителя в сроки указанные в договоре и счет-фактуре  – цена на продукцию не меняется.
    2.5. В случае несвоевременной оплаты в сроки, указанные в договоре  и счет-фактуре Исполни-тель может изменить цену и сроки изготовления.
    2.6. В случае частичной оплаты цена может быть изменена по соглашению сторон с учетом уровня инфляции, стоимости ПКИ и материалов, а также в случае изменения технических требований Заказчика.
__________________________________________________

весь этот обзац забит в формуле СЦЕПИТЬ....
жирным выделено то, что приходит с других листов....
ваш макрос выделит жирным только то, что приходит с других листов?
а еще он убивает формулы (формулы - самое важное!) и не отделяет разряды больших чисел...... (((((((


Это сообщение отредактировал(а) kashemirny - 3.12.2007, 00:50
PM MAIL   Вверх
kapbepucm
Дата 3.12.2007, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Цитата(kashemirny @  3.12.2007,  00:48 Найти цитируемый пост)
весь этот обзац забит в формуле СЦЕПИТЬ
Надо увидеть формулу, чтобы более точно сделать форматирование.(т.к. перенос на новую строку [Enter] можно разными способами делать, например)
Цитата(kashemirny @  3.12.2007,  00:48 Найти цитируемый пост)
ваш макрос выделит жирным только то, что приходит с других листов?
пока нет, макрос работает только и только с формулой вида
Код
=СЦЕПИТЬ("договор № ";реквизиты!C6;", заказ № ";реквизиты!C8;" сумма - ";расчет!D24)
Цитата(kashemirny @  3.12.2007,  00:48 Найти цитируемый пост)
он убивает формулы
пошел на этот шаг, т.к. небыло условий сохранять формулу smile
Цитата(kashemirny @  3.12.2007,  00:48 Найти цитируемый пост)
не отделяет разряды больших чисел
Я ориентировался на ваши региональные настройки Windows ("#,##0.00" запятая это должна была сделать). А как насчёт копеек, их у вас не будет?
Ещё вопрос, формул много? (Есть желание их переделать.)
Пришлите формулу, надо будет сделать что нибудь другое. Жду.

Это сообщение отредактировал(а) kapbepucm - 3.12.2007, 12:07


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
kashemirny
Дата 3.12.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



kapbepucm, спасибо огромнейшее! завтра на работе буду - выдерну из файла формулы.
на счет региональных настроек - я живу в Беларуси, здесь копеек нет  smile 
PM MAIL   Вверх
kapbepucm
Дата 3.12.2007, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Про копейки я просто так спросил smile А про региональные настройки- я имел ввиду установленный символ отделения разрядов в больших цифрах (было бы неплохо если бы у вас там был символ пробела)


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Akina
Дата 3.12.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Я вот одного не пойму - зачем издеваться над формулой, когда по духу примера достаточно выделить жирным только цифры, что элементарно делается над текстовым результатом ячейки...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kashemirny
Дата 3.12.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



Akina, весь смысл в том, что форматирование текста должно быть ровно как в оригинале договора...... иначе юротдел попросту не пропустит..... а идея такова: хочу упростить себе жизнь в составлении договоров, которые пока составляются в Word на основе данных расчетов Excel.... проще говоря, хочется чтобы все было в екселе....

и еще: как можно перевести строку в формуле? аналог тега <br> языка html есть в Excel?

Это сообщение отредактировал(а) kashemirny - 3.12.2007, 22:58
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Работа с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Работа с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0667 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.