powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Результат формулы отформатировать по-разному (интересный вопрос)
25 сообщений из 64, страница 1 из 3
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721085
Aprel9930
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть вопроса такова
Excel 2010, необходимо чтобы работающая формула (ессно в 1-ой ячейке находится), выдавала результат в эстетическом виде. То есть отформатированные надписи. Просто текстовое значение в ячейке можно сделать одно слово Красное другое Жирное . А вот если эти слова складываются из результата обработки формулы?

Пример:
Формула:
="Организация "& "ООО "БУБЛИК"""

Результат должен выглядеть так:

Организация ООО "БУБЛИК"

Если возможность подобного управления формулой не предусмотренно в Excelle, то как данное проделать средствами макроса?
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721122
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aprel9930Если возможность подобного управления формулой не предусмотренно в Excelle, то как данное проделать средствами макроса?Никак. Это невозможно НИКАКИМИ средствами.

ЗЫ Прежде чем постить почему не воспользоваться поиском? Этот вопрос на форумах задают как минимум раз в неделю...
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721402
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некоторое время назад, среди прочего, MSFT было предложено ввести функцию листа HTML(), чтобы воспользоваться всеми возможностями форматирования. Ждем-с :)
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721435
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кирилл и что, на этом успокоятся? Как бы не так. Наверняка найдется "эстет" с вопросом типа "а как верхнюю часть букв закрасить синим, а нижнюю - красным".
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721663
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp+
Кирилл и что, на этом успокоятся? Как бы не так. Наверняка найдется "эстет" с вопросом типа "а как верхнюю часть букв закрасить синим, а нижнюю - красным".

ага, неплохой вопрос и если можно в Ворде
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721676
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Word есть объект WordArt , так что можно использовать его возможности...
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721678
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge 007Aprel9930Если возможность подобного управления формулой не предусмотренно в Excelle, то как данное проделать средствами макроса?Никак. Это невозможно НИКАКИМИ средствами.Вы чего? Недавно же пример был, вроде Шокер приводил...
Код: vbnet
1.
2.
3.
4.
5.
    ActiveCell.Font.ColorIndex = xlAutomatic
    ActiveCell.Font.FontStyle = "обычный"
    ActiveCell.Value = "красный жирный текст"
    ActiveCell.Characters(Start:=1, Length:=7).Font.ColorIndex = 3
    ActiveCell.Characters(Start:=9, Length:=6).Font.FontStyle = "полужирный"
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721696
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

Да, так можно, только прежде придётся формулу убить.
Конечно, формулу можно где-нить хранить, а при наступлении события Calculate поднимать, считать, убивать. Но это уже по Фрейду.

Также можно пихнуть в UDF что-то типа: Application.Caller.Characters.Font.Color = x (x - цвет, возможно вычисляемый).
Только опять же, для UDF это недокументированно, и рано или поздно уронит Excel.

В целом не представляю где может быть востребованна такая фича. По сравнению с другими возможностями форматирования, эта - капля в море.
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721879
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenHim , почему это придется убить формулу? Если известно точно, как именно нужно форматировать (например, первое слово - обычный текст, далее - полужирный, кроме последнего слова) - то можно повесить UDF на WorkSheet_Change() и обрабатывать готовое значение. Можно сделать UDF и с параметрами для различных форматов, и сделать типа таблички "ячейка-формат", чтобы пользователь мог задавать их...
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721886
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

может нам посчастливится увидеть рабочий вариант в вашем исполнении? Думаю, в этом случае все будут вынуждены согласиться с вашей точкой зрения.
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37721896
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenHimAndreTM,

может нам посчастливится увидеть рабочий вариант в вашем исполнении? Думаю, в этом случае все будут вынуждены согласиться с вашей точкой зрения.
Согласен. Очень хочется увидеть это своими глазами
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37722350
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, потружусь немного над этим...
Завтра-послезавтра будем посмотреть....
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37724776
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMЗавтра-послезавтра будем посмотреть....
Как успехи?
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37726627
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока AndreTM запиливает сабжевую вундервафлю, поделюсь своими изысканиями.
В настоящее время я работаю с Open XML, и, решив проблему наполнения данными, добрался до форматирования.
Вот как обстоят дела.
Собственно данные на листе хранятся в соответствующем файле sheet1.xml в следующем виде:


<sheetData> - разметка листа
<row r=""1"" spans=""1:4"" x14ac:dyDescent=""0.25""> - разметка строки
<c r=""A1"" s=""1"" t=""s""> - разметка ячейки
<v>2</v> - разметка значения ячейки
</c>
<c r=""B1"" s=""2"" t=""s"">
<v>0</v>
</c>
<c r=""C1"" s=""3"" t=""s"">
<v>1</v>
</c>
<c r=""D1"" s=""2"" t=""str"">
<f>B1&C1</f> - разметка формулы ячейки
<v>Test</v> - разметка кэш-результата формулы ячейки
</c>
</row>
<row r=""2"" spans=""1:4"" x14ac:dyDescent=""0.25"">
<c r=""A2"" s=""2"">
<v>1010</v>
</c>
<c r=""B2"" s=""4"">
<v>1000</v>
</c>
<c r=""C2"" s=""3"">
<v>10</v>
</c>
<c r=""D2"" s=""2"">
<f>B2+C2</f>
<v>1010</v>
</c>
</row>
</sheetData>


ключ к пониманию проблемы находится в строке разметки ячейки
Ячейка содержащая значение "test" с форматированием - первые 2 буквы красные, последние - черные Bold:

<c r=""A1"" s=""1"" t=""s"" >
<v>2</v>
</c>

Ячейка содержащая формулу - конкатенацию значений "Te" и "st" из соседних ячеек

<c r=""D1"" s=""2"" t=""str"" >
<f>B1&C1</f>
<v>Test</v>
</c>

Выделенные фрагменты содержат информацию о типе значения и форматировании ячейки.
Нетрудно заметить, что хотя оба значения - суть строки, типы (атрибут "t") у них разные.
Так, тип "s" - это inline string. Все строки-значения в ячейках имеют такой тип, и информация об этих ячейках хранится в специальном файле - sharedStrings.xml в следующем виде


"<?xml version=""1.0"" encoding=""UTF-16"" standalone=""no""?>
<sst xmlns="" http://schemas.openxmlformats.org/spreadsheetml/2006/main"" count=""3"" uniqueCount=""3"">
<si>
<t>Te</t>
</si>
<si>
<t>st</t>
</si>
<si>
<r>
<rPr>
<sz val=""11""/>
<color rgb=""FFFF0000""/>
<rFont val=""Calibri""/>
<family val=""2""/>
<charset val=""204""/>
<scheme val=""minor""/>
</rPr>
<t>Te</t>
</r>
<r>
<rPr>
<b/>
<sz val=""11""/>
<color theme=""1""/>
<rFont val=""Calibri""/>
<family val=""2""/>
<charset val=""204""/>
<scheme val=""minor""/>
</rPr>
<t>st</t>
</r>
</si>
</sst>"

Русским по белому это означает следующее:
Имеется 3 различных строки-значения(нумерация с 0 сверху вниз) - разметка <si></si>
Причём в них содержатся не только собственно значения, но и форматы этих значений, вплоть до отдельных символов строк.
Возвращаясь к файлу sheet1.xml, ячейка содержащая значение "test" в разметке <Value> содержит "2"(выделено красным выше).
В купе с атрибутами ячеки s=""1"" t=""s"", это и приводит нас к настоящему значению в файле sharedStrings.xml с соответствующим форматированием. Собственно, это и есть механизм той самой текстовой оптимизации файлов Office 2007-2010.

И буквально в двух словах о ячейке, содержащую формулу - конкатенацию значений "Te" и "st" из соседних ячеек.
Её атрибуты s=""2"" t=""str"" говорят на о том что тип значения - string, и что в связи с этим информацию о форматировании следует искать уже в файле styles.xml.
styles.xml содержит перечень всех уникальных стилей форматирования, применённых к ячейкам(так же, нумерация с 0 сверху вниз)
Это - ещё одна оптимизация Office 2007-2010. Отличие же в том, что здесь не ПРЕДУСМОТРЕНО посимвольное форматирование.Так же стили из styles.xml применяются к ячейкам, содержащим числовые значения.

Несмотря на то, что получилось много букаф, надеюсь принципиальная невозможность сабжа станет доступной каждому.
Решение, которое я предложил ранее, хоть и в рамках данной модели, всё равно является наидичайшим танцем с бубном.

Тем не менее, надеюсь у AndreTM всё получится, даже если ему придётся перепилить движок Excel.

PS
Тестовый файл прилагаю, весь xml в моём посте доставал из него.
И ещё, создали тему, близкую к тому, чем я тут поделился ( http://www.sql.ru/forum/actualthread.aspx?tid=929847 ), там ТС приводит ссылку на книгу по OpenXML. Рекомендую.
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37726661
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я не хочу идти в сторону XML (хотя желающим ничего не будет стоить переписать функционал , ибо парсинг форматов прост), поскольку любое представление собственного формата - UDFке придётся разбирать, так что...
Я немного занят сейчас, поэтому думаю-пишу урывками. Не хочется просто изображать из себя ЦЭ...
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37726725
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну чтож, уточняю.

Дело не в том, прост или не прост парсинг форматов. Ежу понятно, что на xml можно теоретически что угодно запилить.
Дело в том, как именно парсит xml Excel. Excel понимает исключительно OpenXml.
Повторюсь, речь здесь про то, как Excel хранит данные. OpenXml - это только разновидность xml, стандарт, который регламентирует ВЕСЬ функционал офисных приложений от MS. И этот стандарт определяет не только какие тэги и как интерпретируются офисными приложениями, но также и то, что все другие инструкции в контексте данного стандарта будут считаться ошибочными, и в лучшем случае будут просто проигнорированы приложением.

В случае программирования функционала (VBA, .NET , xml - неважно), когда дело доходит до работы с объектной моделью приложения (листы там, сводные таблицы и т.д.), на уровне данных приложения это реализуется именно манипулированием инструкциями OpenXml. Таким образом, мы не можем управлять свойствами, которых не предусматривает стандарт OpenXml.

Конечно, как я сказал в предыдущем посте, это можно изменить, но лишь путём модификации самого приложения (Excel) так, чтобы оно начало понимать инструкции помимо стандартных OpenXml.
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37726735
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё,

Насколько мне известно, MS не собирается выкладывать исходники своих приложений (не open source однако), так что про переписать функционал желающими - обратно фэйл.
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37733259
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM Не хочется просто изображать из себя ЦЭ...
Завтра-послезавтра будем посмотреть....
AndreTM , с 25-го марта прошло семь дней.
Есть подвижки?
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37739373
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подвижки есть... я просто сильно подвижен - неделю уже на рабочем месте появляюсь от силы часа на два, дома - только чтобы включить фильм и уложиться в постельку.
Просто я смотрю на рассуждения участников - и переосмысливаю иногда подход к написанию... будет, будет вам всё
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37739374
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

Ок.
Просто очень интересно как сделать возможным невозможное
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37750556
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему, воз и ныне там. Нужели AndreTM failed?
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37750683
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйл, фэйл я...
А воз - и ныне там. Ну, подвинулся немного...
У папы - 60 восьмого, у брата - 30 одиннадцатого....
Что желаете?
ElenHim , будет вам усё....
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37750746
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMУ папы - 60 восьмого, у брата - 30 одиннадцатого....
Поздравляю. Правда эт никому не интересно
AndreTMЧто желаете?ElenHim, будет вам усё....
Лично мне эт не надо, я это где тут упоминал.Но, мы ведь не для себя стараемся?

Людям свойственно собственные опрометчивость и легкомысленность прикрывать эмоциями.
Надеюсь, вы не из тех, у кого слово - не более чем только слово?
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37750789
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMУ папы - 60 восьмого, у брата - 30 одиннадцатого....
значит, когда у брата будет 60, у папы будет 120
...
Рейтинг: 0 / 0
Результат формулы отформатировать по-разному (интересный вопрос)
    #37750809
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шокер, у папы будет 90, успокойся

А я словом с делом не расхожусь - вот только осталось подвесить форму на ПКМ. Ну и, ес-но, не запрещать "использование макросов"...
Проблемы только одни - дабы работало, включая оффис2010...
...
Рейтинг: 0 / 0
25 сообщений из 64, страница 1 из 3
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Результат формулы отформатировать по-разному (интересный вопрос)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]