Страницы: 1
RSS
Очистка форматов таблицы Excel с сохранением типа данных
 
Доброе время суток!

Существует "База" на листе 2.
Задача очистить эту базу от всех красот. и преобразовать ее в "Умную таблицу" для последующей обработки. (База фильтруется по полю Подразделение, и затем рассылается по подразделениям, каждому свой кусок таблицы, но это уже реализовано)
Пример во вложении справляется с задачей очистки таблицы, с одним но: Типы данных ячеек тоже очищаются, и , как следствие, дата преобразуется в число, и конечный пользователь уже видит не то, что хотелось бы.
Проблема усугубляется тем,  что столбцов в таблице может быть сколько угодно, и любые столбцы могут быть датой. О таблице я знаю только номер столбца, который содержит номер Подразделения, все остальное произвольно.

Подскажите, пожалуйста, как правильно очистить форматы таблицы Excel с сохранением типов данных столбцов?
Скрытый текст
Изменено: tvit - 11.12.2015 21:41:28
 
перед вызовом BaseRange.ClearFormats пробежаться в цикле по столбцам, запомнить числовой формат каждого во временный массив, очистить форматы (как есть), снова пробежаться в таком же цикле - и восстановить числовые форматы из массива.
после этого массив можно уничтожить.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Это первое что пришло в голову, так и сделаю если не найду другого решения, но может есть какое то другое решение попроще, какой-то другой способ очистки не затрагивающий числовые форматы?
На самом деле этот вариант может и не сработать: если пользователь вставит "Умную таблицу", то заголовок может оказаться текстовым, а тело таблицы числовым. В моем файле пример такого столбца - "Номер счета"
Изменено: tvit - 13.02.2015 19:31:16
 
я не знаю.
и в Object Browser в VBE не вижу ничего похожего - ни для объекта Range, ни для (чем чёрт не шутит?) - Worksheet
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Изменил свое предыдущее сообщение, прочитай, пожалуйста последние две строчки.
 
Прочитал.
Файл до этого не смотрел.
С "умными" таблицами сам раньше не работал. Пришлось вникать буквально на днях.
Пока пришёл к выводу, что проблем гораздо больше, чем плюсов.
Но, конечно, если пользователи могут отформатировать диапазон как "умную" - то придётся учитывать и этот случай.
Как вариант - смотреть формат не в первой ячейке каждого столбца, а во второй.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Цитата
ikki пишет: С "умными" таблицами сам раньше не работал...
Пока пришёл к выводу, что проблем гораздо больше, чем плюсов.
Я тоже пришел к такому же выводу, у меня весь код изобилует затычками, где я перехожу на обычный Range, просто чтобы хоть как то  работало, а потом после того как в инете найду решение, переписываю кусок кода  на "правильный".   :D   Но надеюсь, что когда освою умные таблицы до конца, то все таки будет проще писать правильный код.
 
Давайте вместе подождём более опытного в данном вопросе специалиста ;)
Ибо, кроме описанного выше, другого варианта я себе пока не представляю.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
А, нет.
Ещё одна идея возникла. Именно на уровне идеи.
Можно попробовать поработать со стилями. Создать стиль с нужным числовым форматом и "стандартными" прочими свойствами (цвет-шрифт-заливка-рамки). Включить в нём все галочки.

А потом просто применить к соответствующему диапазону соответствующий стиль.
Но, опять же, пробегаться по столбцам и проверять - какой там числовой формат уже есть, всё равно придётся.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Хорошая идея   :D     Но у меня была еще одна, правда моих знаний не достаточно чтобы ее довести до ума. это использование стандартного стиля: ThisWorkbook.Styles("Normal"   Как то так:
Скрытый текст
но установкой шрифта по умолчанию есть некоторые проблемы
Изменено: tvit - 13.02.2015 19:55:58
 
Цитата
ikki пишет: Ещё одна идея возникла. Именно на уровне идеи.
Сам знаешь у кого мысли сходятся ;-)
 
у единомышленников, ясен перец.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Здрасьте.
Я дико извиняюсь. Я не волшебник, я только учусь... А есть ли возможность выйти из некогда сделанной "умной таблицы" в обыкновенную. Желательно без последствий.
Спасибо
Умные люди — это те, которые работают с людьми умнее их самих. (С)Р.Кийосаки
 
Не видя Вашего файла и возможный последствий. Меню Конструктор/Преобразовать в диапазон.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Спасибо JayBhagavan! Все так просто.
Да дело-то вобщем-то не в файле, а в том как из "умной" таблицы происходит обратный процесс преобразования в диапазон.
Теперь я тоже это знаю.
Спасибо
Умные люди — это те, которые работают с людьми умнее их самих. (С)Р.Кийосаки
 
Только вот непонятно, Ronin71, какое отношение Ваш вопрос к теме-то имеет? Да, обсуждается работа с умной таблицей. Но больше с созданием, чем с удалением. Учитесь различать вопросы и не задавать вопросы в первой попавшейся теме, где встретили упоминание чего-то, что Вас тоже интересует.
Спасибо.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Прошу прощения The_Prist, но ради одного мааааленького вопросика создавать новую тему?...
А так, мимо ходом спросил у профи, получил исчерпывающий ответ, и отошел...
Если мой вопросик портит всю картину, то удалите его из темы.
Еще раз прошу меня простить.
Всем хорошего настроения  :D
Умные люди — это те, которые работают с людьми умнее их самих. (С)Р.Кийосаки
 
Цитата
Ronin71 написал:
ради одного мааааленького вопросика создавать новую тему?
Именно так.
Страницы: 1
Наверх