| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > Возможно ли создать такой пользовательский формат? |
| Автор: motorway 17.5.2010, 23:41 |
| Привет. Возникла следующая проблема. В ячейке есть некоторый текст, и нужно создать некоторые свои форматы, при выборе которых по определенным правилам изменялось бы отображаемое в ячейке значение. Но само значение Cells(i,j).Value от этого бы не менялось, как бы мы там не переставляли форматы. Это главное. Теперь о формате. Текст имеет вид [min,max], где min, max - числа. Например, [100,110] Нужно иметь возможность: - отображать это в виде min,max: 100,110 - менять разрядность произвольным образом: [100.0,110.0] - делать процентный и экспоненциальный формат [10000%,11000%] - и др. функции типа разделителей в виде пробелов [1 000, 2 000]. Также нужно, чтобы можно было представлять такой текст в виде одного числа, которое можно как-то вычислить - напр., среднее арифметическое, при выполнении какого-то условия - напр., если разница между числами не превышает к.-либо значения. Короче, мы просто выбираем формат, аналогичный всем уже присутствующим в Экселе, и строка меняется так, как если бы этот формат применился к обоим числам, и получилась бы новая строка [minNEW,maxNEW]. Итак, возможна такая вещь в Экселе (2007 или 2010) или нет? Если да, как ее сделать? Спасибо |
| Автор: Akina 18.5.2010, 07:32 |
| Существующие типы шаблонов оперируют только знакоместами и заполнителями (ну ещё округление), вычислениями там и не пахнет... даже штатной функции FORMAT() описанное не под силу. ИМХО невозможно. Созданием именно формата. Без изменения Cell.Value. Но ВООБЩе это (наполовину) возможно. Написанием макроса, который по событию на книге или листе переберёт имеющиеся ячейки, по какому-либо признаку в поле формата ячейки определит те, которые следует подвергнуть этому "хитрому" форматированию, и программно их переформатировать. При этом, несомненно, Value будет изменено. Я уж не говорю о том, что по смыслу такая функция должна быть либо обработчиком, либо Volatile, что гарантирует изрядные тормоза на более-менее приличных массивах данных. |
| Автор: motorway 18.5.2010, 23:39 |
| Да уж, очень жаль. А допустим, заказчику такая вещь очень нужна, и из-за этого может все сорваться. Что тут можно придумать? |
| Автор: Akina 19.5.2010, 07:33 |
| Задача на самом деле несложная, если её решать не форматированием, а макросом. |
| Автор: motorway 19.5.2010, 15:21 |
| А что вы думаете насчет генерации формата "на лету"? Есть возможность делать искусственный формат вида ;;;"[minNEW,maxNEW]". Стоит так делать? Минусы в том, что это будет у каждой ячейки новый формат, а не один общий. |