|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Суть вопроса такова Excel 2010, необходимо чтобы работающая формула (ессно в 1-ой ячейке находится), выдавала результат в эстетическом виде. То есть отформатированные надписи. Просто текстовое значение в ячейке можно сделать одно слово Красное другое Жирное . А вот если эти слова складываются из результата обработки формулы? Пример: Формула: ="Организация "& "ООО "БУБЛИК""" Результат должен выглядеть так: Организация ООО "БУБЛИК" Если возможность подобного управления формулой не предусмотренно в Excelle, то как данное проделать средствами макроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2012, 03:25 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Aprel9930Если возможность подобного управления формулой не предусмотренно в Excelle, то как данное проделать средствами макроса?Никак. Это невозможно НИКАКИМИ средствами. ЗЫ Прежде чем постить почему не воспользоваться поиском? Этот вопрос на форумах задают как минимум раз в неделю... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2012, 07:29 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Некоторое время назад, среди прочего, MSFT было предложено ввести функцию листа HTML(), чтобы воспользоваться всеми возможностями форматирования. Ждем-с :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2012, 16:37 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Кирилл и что, на этом успокоятся? Как бы не так. Наверняка найдется "эстет" с вопросом типа "а как верхнюю часть букв закрасить синим, а нижнюю - красным". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2012, 17:24 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
kuklp+ Кирилл и что, на этом успокоятся? Как бы не так. Наверняка найдется "эстет" с вопросом типа "а как верхнюю часть букв закрасить синим, а нижнюю - красным". ага, неплохой вопрос и если можно в Ворде ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2012, 01:24 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
В Word есть объект WordArt , так что можно использовать его возможности... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2012, 02:16 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Serge 007Aprel9930Если возможность подобного управления формулой не предусмотренно в Excelle, то как данное проделать средствами макроса?Никак. Это невозможно НИКАКИМИ средствами.Вы чего? Недавно же пример был, вроде Шокер приводил... Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2012, 02:25 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
AndreTM, Да, так можно, только прежде придётся формулу убить. Конечно, формулу можно где-нить хранить, а при наступлении события Calculate поднимать, считать, убивать. Но это уже по Фрейду. Также можно пихнуть в UDF что-то типа: Application.Caller.Characters.Font.Color = x (x - цвет, возможно вычисляемый). Только опять же, для UDF это недокументированно, и рано или поздно уронит Excel. В целом не представляю где может быть востребованна такая фича. По сравнению с другими возможностями форматирования, эта - капля в море. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2012, 07:00 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
ElenHim , почему это придется убить формулу? Если известно точно, как именно нужно форматировать (например, первое слово - обычный текст, далее - полужирный, кроме последнего слова) - то можно повесить UDF на WorkSheet_Change() и обрабатывать готовое значение. Можно сделать UDF и с параметрами для различных форматов, и сделать типа таблички "ячейка-формат", чтобы пользователь мог задавать их... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2012, 14:12 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
AndreTM, может нам посчастливится увидеть рабочий вариант в вашем исполнении? Думаю, в этом случае все будут вынуждены согласиться с вашей точкой зрения. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2012, 14:30 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
ElenHimAndreTM, может нам посчастливится увидеть рабочий вариант в вашем исполнении? Думаю, в этом случае все будут вынуждены согласиться с вашей точкой зрения. Согласен. Очень хочется увидеть это своими глазами ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2012, 14:38 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Ладно, потружусь немного над этим... Завтра-послезавтра будем посмотреть.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2012, 23:31 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
AndreTMЗавтра-послезавтра будем посмотреть.... Как успехи? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2012, 10:22 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Пока 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. Рекомендую. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 02:33 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
А я не хочу идти в сторону XML (хотя желающим ничего не будет стоить переписать функционал , ибо парсинг форматов прост), поскольку любое представление собственного формата - UDFке придётся разбирать, так что... Я немного занят сейчас, поэтому думаю-пишу урывками. Не хочется просто изображать из себя ЦЭ... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 05:37 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Ну чтож, уточняю. Дело не в том, прост или не прост парсинг форматов. Ежу понятно, что на xml можно теоретически что угодно запилить. Дело в том, как именно парсит xml Excel. Excel понимает исключительно OpenXml. Повторюсь, речь здесь про то, как Excel хранит данные. OpenXml - это только разновидность xml, стандарт, который регламентирует ВЕСЬ функционал офисных приложений от MS. И этот стандарт определяет не только какие тэги и как интерпретируются офисными приложениями, но также и то, что все другие инструкции в контексте данного стандарта будут считаться ошибочными, и в лучшем случае будут просто проигнорированы приложением. В случае программирования функционала (VBA, .NET , xml - неважно), когда дело доходит до работы с объектной моделью приложения (листы там, сводные таблицы и т.д.), на уровне данных приложения это реализуется именно манипулированием инструкциями OpenXml. Таким образом, мы не можем управлять свойствами, которых не предусматривает стандарт OpenXml. Конечно, как я сказал в предыдущем посте, это можно изменить, но лишь путём модификации самого приложения (Excel) так, чтобы оно начало понимать инструкции помимо стандартных OpenXml. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 08:34 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
И ещё, Насколько мне известно, MS не собирается выкладывать исходники своих приложений (не open source однако), так что про переписать функционал желающими - обратно фэйл. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 08:41 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
AndreTM Не хочется просто изображать из себя ЦЭ... Завтра-послезавтра будем посмотреть.... AndreTM , с 25-го марта прошло семь дней. Есть подвижки? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2012, 01:34 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Подвижки есть... я просто сильно подвижен - неделю уже на рабочем месте появляюсь от силы часа на два, дома - только чтобы включить фильм и уложиться в постельку. Просто я смотрю на рассуждения участников - и переосмысливаю иногда подход к написанию... будет, будет вам всё ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2012, 23:36 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
AndreTM, Ок. Просто очень интересно как сделать возможным невозможное ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2012, 23:38 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Судя по всему, воз и ныне там. Нужели AndreTM failed? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2012, 14:17 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Фэйл, фэйл я... А воз - и ныне там. Ну, подвинулся немного... У папы - 60 восьмого, у брата - 30 одиннадцатого.... Что желаете? ElenHim , будет вам усё.... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2012, 15:17 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
AndreTMУ папы - 60 восьмого, у брата - 30 одиннадцатого.... Поздравляю. Правда эт никому не интересно AndreTMЧто желаете?ElenHim, будет вам усё.... Лично мне эт не надо, я это где тут упоминал.Но, мы ведь не для себя стараемся? Людям свойственно собственные опрометчивость и легкомысленность прикрывать эмоциями. Надеюсь, вы не из тех, у кого слово - не более чем только слово? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2012, 15:45 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
AndreTMУ папы - 60 восьмого, у брата - 30 одиннадцатого.... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2012, 16:02 |
|
Результат формулы отформатировать по-разному (интересный вопрос)
|
|||
---|---|---|---|
#18+
Шокер, у папы будет 90, успокойся А я словом с делом не расхожусь - вот только осталось подвесить форму на ПКМ. Ну и, ес-но, не запрещать "использование макросов"... Проблемы только одни - дабы работало, включая оффис2010... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2012, 16:11 |
|
|
start [/forum/topic.php?fid=61&fpage=100&tid=2175680]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 149ms |
0 / 0 |