Разрядность в ячейке по условию

Автор andreya81, 25 сентября 2013, 15:22

0 Пользователи и 1 гость просматривают эту тему.

andreya81

День добрый господа форумчане! Вот такой вот вопрос: Возможно ли с помощью функций Сalc установить разрядность (количество нулей после запятой) в ячейке по условию указанному в другой ячейке. Ну например в ячейке В2 указываются единицы измерения материалов (кг. гр. шт. и т.д), а в ячейке С2 автоматически проставляется разрядность будущих значение, т.е для кг. - 0,000; для шт. - 0 и т.д  ??? Помогите кто чем может, добрым ли советом или примером. Заранее благодарен.

Hasim

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

andreya81

А с примером такого макроса не поможете? :-\

andreya81

Ну пожалуйста друзья помогите очень надо :-\

Hasim

Взят отсюда http://forumooo.ru/index.php/topic,3560.msg21746.html#msg21746 файл, приложенный JohnSUN'ом Обработка события Изменение листа.ods.
Внесены изменения по установке формата ячеек в столбце С в зависимости от значений в столбце В так, как вы хотели.
Попробуйте внимательно разобраться.
Значения формата ячеек (3, 109) можно получить при записи макроса по формату ячеек.

[вложение удалено Администратором]

JohnSUN

Извините, по ряду причин припозднился к началу разговора...
Хорошее решение, Hasim (не хватало, чтобы я критиковал собственный макрос  ;D !)
Вот только у меня почему-то при выборе "кг." значение форматируется в деньгах - "123,00 руб.". С чего бы это?


Давайте вернемся к самому началу, к вопросу темы... Нужно задать формат значения в ячейке по условию?
Не знаю у кого как, а у меня сразу возникла устойчивая ассоциация с термином "условное форматирование"...
Одна из тех фишек, которые появились в свободных офисах, раньше, чем в... э-э-э... ну, раньше, чем в том офисе, с которым постоянно сравнивают.  Кстати, я не в курсе, появилась ли она уже там... Я про функцию STYLE()

Гляньте такой вариант решения, может быть понравится...

[вложение удалено Администратором]
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Hasim

Цитата: JohnSUN от 26 сентября 2013, 22:12Вот только у меня почему-то при выборе "кг." значение форматируется в деньгах - "123,00 руб.". С чего бы это?
А если не 109, а 112?
Боюсь, что это теперь зависит от версии офиса.

Hasim

#7
Можно и стили (может быть это и лучше), но я предпочитаю макросы - они проще и нагляднее.
Но нужно, наверное, все-таки дать пояснения, как создать эти стили и как их использовать.
Для новичков это совсем не очевидно.

[вложение удалено Администратором]

andreya81

Цитата: Hasim от 26 сентября 2013, 23:06А если не 109, а 112?
В LibreOffice Версия 4.0.5.2 получается просто 123

andreya81

Цитата: Hasim от 26 сентября 2013, 17:48Значения формата ячеек (3, 109) можно получить при записи макроса по формату ячеек.
Объясните несообразительному как это сделать

andreya81

Цитата: JohnSUN от 26 сентября 2013, 22:12Гляньте такой вариант решения, может быть понравится...
Вариант неплохой но обязательно ли использование списка выбора, т.к у меня единица измерения устанавливается с помощью диалога и не совсем понятно как сделать так чтобы форматирование происходило именно в соседней ячейке и можно ли это сделать через одну.

andreya81

#11
И еще один вопрос :) а можно ли это дело провернуть в диалоге? Если например в ListBox1 выбирается единица измерения, в Numeric1 указывается количество в формате целого (просто 100) в Numeric2 указывается коэффициент в формате 0.981, а в Numeric3 происходит вычисление 100*0,981 = а тут уже согласно значения указанного ListBox1 или 0.000 или 0 или 0.00 :-\

JohnSUN

#12
Цитата: Hasim от 27 сентября 2013, 00:06
А если не 109, а 112?
Боюсь, что это теперь зависит от версии офиса.
Насколько я понял это описание, зависит от локали и от состава документа.
Насколько неправильно я перевёл этот абзац?
ЦитироватьNumber formats are defined on the document level. A document displaying formatted values has a collection of number formats, each with a unique index key within that document. Identical formats are not necessarily represented by the same index key in different documents.
ЦитироватьЧисловые форматы определены на уровне документа. Документ, который должен отображать форматированные значения, содержит набор числовых форматов, каждый из которых имеет уникальный числовой код (индекс) в этом документе. Идентичные форматы не обязательно будут иметь тот же индекс в разных документах.

Цитата: andreya81 от 27 сентября 2013, 08:34
Вариант неплохой...
Мне тоже так показалось  ;D
Цитата: andreya81 от 27 сентября 2013, 08:34...но обязательно ли использование списка выбора, т.к у меня единица измерения устанавливается с помощью диалога
Нет, не обязательно. Главное, чтобы название единицы измерения, вписанное в ячейку, точно соответствовало имени стиля, который нужно применить к числу.
Цитата: andreya81 от 27 сентября 2013, 08:34и не совсем понятно как сделать так чтобы форматирование происходило именно в соседней ячейке и можно ли это сделать через одну.
Можно применить к любой ячейке. Поищи на форуме темы, связанные с условным форматированием - о нём писали много раз и разными словами.
Цитата: andreya81 от 27 сентября 2013, 08:41
И еще один вопрос :) а можно ли это дело провернуть в диалоге? Если например в ListBox1 выбирается единица измерения, в Numeric1 указывается количество в формате целого (просто 100) в Numeric2 указывается коэффициент в формате 0.981, а в Numeric3 происходит вычисление 100*0,981 = а тут уже согласно значения указанного ListBox1 или 0.000 или 0 или 0.00 :-\
А это совсем-совсем другая задача (форматирование значений в элементах диалога), которая к первоначальной теме (форматирование значений в ячейках таблицы по условию) не относится. Помнишь правило форума? Новый вопрос - новая тема... (Но по секрету скажу - запрограммировать можно всё, что угодно)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

andreya81

Сорри опять наткнулся на те же грабли :)