Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 01:25   #1
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
Злость Возможно ли создать такой пользовательский формат?

Привет.
Возникла следующая проблема. В ячейке есть некоторый текст, и нужно создать некоторые свои форматы, при выборе которых по определенным правилам изменялось бы отображаемое в ячейке значение. Но само значение Cells(i,j).Value от этого бы не менялось, как бы мы там не переставляли форматы. Это главное.
Теперь о формате.
Текст имеет вид [min,max], где min, max - числа.
Например, [100,110]
Нужно иметь возможность:
- отображать это в виде min,max: 100,110
- менять разрядность произвольным образом: [100.0,110.0]
- делать процентный и экспоненциальный формат [10000%,11000%]
- и др. функции типа разделителей в виде пробелов [1 000, 2 000].
Также нужно, чтобы можно было представлять такой текст в виде одного числа, которое можно как-то вычислить - напр., среднее арифметическое, при выполнении какого-то условия - напр., если разница между числами не превышает к.-либо значения.
Итак, возможна такая вещь в Экселе (2007 или 2010) или нет? Если да, как ее сделать?
Спасибо
motorway вне форума Ответить с цитированием
Старый 17.05.2010, 01:50   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

За счет форматов в ячейке можно отобразить любую информацию. Надо только определить при каких обстоятельствах и по каким правилам назначается формат. Всего в книге можно задать 64 тыс. разных форматов ячеек.
Все это должен делать макрос.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.05.2010, 01:53   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Сначала формат у ячейки Общий. Формат должен включаться при выборе нового формата из списка или при программном присвоении ячейке этого нового формата.
К примеру, реально ли сделать такое: есть текст [20.11,30.57]. После применения формата из этого текста получается [20.1,30.6]. Либо есть [1111,2222], получается [1 111, 2 222]?
Спасибо за ответ
motorway вне форума Ответить с цитированием
Старый 17.05.2010, 10:42   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

небольшой пример во вложении
если скрыть колонки С, D, F и показать человеку немного понимающему в Excel, что находится в Е - это должно заставить его крепко задуматься.
Вложения
Тип файла: rar Книга336.rar (3.7 Кб, 37 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.05.2010, 14:26   #5
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Насколько я понял, вы сделали новые форматы (3 шт.). Но можно ли настраивать их полностью так же, как и обычные - делать число знаков после запятой и т.п.?
Насчет неравенства ячеек - в этом, по-моему, как раз и проявляется разница между Value и Text.
motorway вне форума Ответить с цитированием
Старый 17.05.2010, 17:23   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

В примере я задал форматы для ячеек А3 и А4.
В ячейке А3 содержится [20.11,30.57] хотя согласно формата видно [20.1,30.6]
Соответственно - в А4 находится [1111,2222], а видно [1 111, 2 222].
Формат можно настроить для положительных чисел, отрицательных, нуля и текста. Т.е. в формате ячейки может быть 4 формата, автоматически применяется формат согласно значения.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.05.2010, 20:21   #7
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Всё-таки ваш вариант с долей юмора - я попробовал изменить число в ячейке, а Эксел вместо нужного изменения опять возвращает старое число. Зачем так?
Кроме того, не понятно, как можно изменить разрядность.
motorway вне форума Ответить с цитированием
Старый 17.05.2010, 20:44   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Нет в моем варианте никакого юмора, в нем полное недоумение я совершенно не понимаю, что требуется получить.
прозвучал конкретный вопрос:
Цитата:
реально ли сделать такое: есть текст [20.11,30.57]. После применения формата из этого текста получается [20.1,30.6]. Либо есть [1111,2222], получается [1 111, 2 222]?
Было показано, что это реально: в А3 написано [20.11,30.57] а изображено [20.1,30.6], в А4 [1111,2222], а видно [1 111, 2 222]. Я об этом в каждом посте пишу. Кажется мы толчем воду в ступе.
Следующий шаг - Вы должны описать: данные такого типа (описать какого именно) должны выглядеть так (описать к какому виду их привести)...
И так для каждого типа.
Опишите пару типов, покажу что можно сделать.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.05.2010, 20:55   #9
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Я, конечно, написал это в виде примера, т.е. цифры там могут быть любые (а не только для разового случая). Поэтому я и попробовал изменить числа. При этом рассчитывал на то, что формат изменится автоматически, и останется нужное число цифр после запятой. Т.е., я ввел [64.11,90.57], а вместо [64.1,90.6] в ячейке A3 осталось видно то же самое [20.1,30.6].
К такому виду нужно приводить текст, находящийся в ячейке (string). Так как в начале строки находится квадратная скобка, это текст, а не какой-то другой тип.
Кроме этого, я понял, что ваш пример предусматривает автоматическое создание нового формата для каждого случая, т.е. формат должен генерироваться "на лету", если мы хотим видеть число в нужной форме. Ведь применение этого формата к новому числу не дает нужный рез-т!
Т.е., мы должны будем заменять везде формат на ;;;"[и тут нужное число]". Но тогда будет очень много разных форматов, а не один, который выполняет все нужные преобразования.
motorway вне форума Ответить с цитированием
Старый 17.05.2010, 21:56   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

наконец-то мы понимаем друг друга.
Чтобы формат поменялся на лету, надо располагать сводом правил как изменять формат.
В А3 числа будут округляться до десятых.
Аналогичным образом Вы можете заменить что угодно.
Вложения
Тип файла: rar Книга336.rar (8.6 Кб, 27 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как мне создать вот такой объект? Тупой Microsoft Office Excel 2 10.12.2009 00:12
Интересует такой вопрос. Как создать круговую диаграмму в Дельфи Grisha248 Компоненты Delphi 6 26.05.2009 18:06
Пользовательский формат VBA Excel luxery Microsoft Office Excel 13 07.11.2008 21:00
Создать свой формат файла Манжосов Денис :) Общие вопросы Delphi 7 24.08.2008 17:48
пользовательский формат или объединение содержимого mr.beginner Microsoft Office Excel 3 08.07.2008 16:39