Не активна кнопка обновить в эксель
Сразу оговорюсь, что материал статьи предназначается для начинающих пользователей Excel. Опытные пользователи уже зажигательно станцевали на этих граблях не раз, поэтому моя задача уберечь от этого молодых и неискушённых «танцоров».
Вы не даёте заголовки столбцам таблиц
Многие инструменты Excel, например: сортировка, фильтрация, умные таблицы, сводные таблицы, — подразумевают, что ваши данные содержат заголовки столбцов. В противном случае вы либо вообще не сможете ими воспользоваться, либо они отработают не совсем корректно. Всегда заботьтесь, чтобы ваши таблицы содержали заголовки столбцов.
Пустые столбцы и строки внутри ваших таблиц
Это сбивает с толку Excel. Встретив пустую строку или столбец внутри вашей таблицы, он начинает думать, что у вас 2 таблицы, а не одна. Вам придётся постоянно его поправлять. Также не стоит скрывать ненужные вам строки/столбцы внутри таблицы, лучше удалите их.
На одном листе располагается несколько таблиц
Если это не крошечные таблицы, содержащие справочники значений, то так делать не стоит.
Вам будет неудобно полноценно работать больше чем с одной таблицей на листе. Например, если одна таблица располагается слева, а вторая справа, то фильтрация одной таблицы будет влиять и на другую. Если таблицы расположены одна под другой, то невозможно воспользоваться закреплением областей, а также одну из таблиц придётся постоянно искать и производить лишние манипуляции, чтобы встать на неё табличным курсором. Оно вам надо?
Данные одного типа искусственно располагаются в разных столбцах
Очень часто пользователи, которые знают Excel достаточно поверхностно, отдают предпочтение такому формату таблицы:
Казалось бы, перед нами безобидный формат для накопления информации по продажам агентов и их штрафах. Подобная компоновка таблицы хорошо воспринимается человеком визуально, так как она компактна. Однако, поверьте, что это сущий кошмар — пытаться извлекать из таких таблиц данные и получать промежуточные итоги (агрегировать информацию).
Дело в том, что данный формат содержит 2 измерения: чтобы найти что-то в таблице, вы должны определиться со строкой, перебирая филиал, группу и агента. Когда вы найдёте нужную стоку, то потом придётся искать уже нужный столбец, так как их тут много. И эта «двухмерность» сильно усложняет работу с такой таблицей и для стандартных инструментов Excel — формул и сводных таблиц.
Если вы построите сводную таблицу, то обнаружите, что нет возможности легко получить данные по году или кварталу, так как показатели разнесены по разным полям. У вас нет одного поля по объёму продаж, которым можно удобно манипулировать, а есть 12 отдельных полей. Придётся создавать руками отдельные вычисляемые поля для кварталов и года, хотя, будь это всё в одном столбце, сводная таблица сделала бы это за вас.
Если вы захотите применить стандартные формулы суммирования типа СУММЕСЛИ (SUMIF), СУММЕСЛИМН (SUMIFS), СУММПРОИЗВ (SUMPRODUCT), то также обнаружите, что они не смогут эффективно работать с такой компоновкой таблицы.
Рекомендуемый формат таблицы выглядит так:
Разнесение информации по разным листам книги «для удобства»
Ещё одна распространенная ошибка — это, имея какой-то стандартный формат таблицы и нуждаясь в аналитике на основе этих данных, разносить её по отдельным листам книги Excel. Например, часто создают отдельные листы на каждый месяц или год. В результате объём работы по анализу данных фактически умножается на число созданных листов. Не надо так делать. Накапливайте информацию на ОДНОМ листе.
Информация в комментариях
Часто пользователи добавляют важную информацию, которая может им понадобиться, в комментарий к ячейке. Имейте в виду, то, что находится в комментариях, вы можете только посмотреть (если найдёте). Вытащить это в ячейку затруднительно. Рекомендую лучше выделить отдельный столбец для комментариев.
Бардак с форматированием
Определённо не добавит вашей таблице ничего хорошего. Это выглядит отталкивающе для людей, которые пользуются вашими таблицами. В лучшем случае этому не придадут значения, в худшем — подумают, что вы не организованы и неряшливы в делах. Стремитесь к следующему:
- Каждая таблица должна иметь однородное форматирование. Пользуйтесь форматированием умных таблиц. Для сброса старого форматирования используйте стиль ячеек «Обычный».
- Не выделяйте цветом строку или столбец целиком. Выделите стилем конкретную ячейку или диапазон. Предусмотрите «легенду» вашего выделения. Если вы выделяете ячейки, чтобы в дальнейшем произвести с ними какие-то операции, то цвет не лучшее решение. Хоть сортировка по цвету и появилась в Excel 2007, а в 2010-м — фильтрация по цвету, но наличие отдельного столбца с чётким значением для последующей фильтрации/сортировки всё равно предпочтительнее. Цвет — вещь небезусловная. В сводную таблицу, например, вы его не затащите.
- Заведите привычку добавлять в ваши таблицы автоматические фильтры (Ctrl+Shift+L), закрепление областей. Таблицу желательно сортировать. Лично меня всегда приводило в бешенство, когда я получал каждую неделю от человека, ответственного за проект, таблицу, где не было фильтров и закрепления областей. Помните, что подобные «мелочи» запоминаются очень надолго.
Объединение ячеек
Используйте объединение ячеек только тогда, когда без него никак. Объединенные ячейки сильно затрудняют манипулирование диапазонами, в которые они входят. Возникают проблемы при перемещении ячеек, при вставке ячеек и т.д.
Объединение текста и чисел в одной ячейке
Тягостное впечатление производит ячейка, содержащая число, дополненное сзади текстовой константой « РУБ.» или » USD», введенной вручную. Особенно, если это не печатная форма, а обычная таблица. Арифметические операции с такими ячейками естественно невозможны.
Числа в виде текста в ячейке
Избегайте хранить числовые данные в ячейке в формате текста. Со временем часть ячеек в таком столбце у вас будут иметь текстовый формат, а часть в обычном. Из-за этого будут проблемы с формулами.
Если ваша таблица будет презентоваться через LCD проектор
Выбирайте максимально контрастные комбинации цвета и фона. Хорошо выглядит на проекторе тёмный фон и светлые буквы. Самое ужасное впечатление производит красный на чёрном и наоборот. Это сочетание крайне неконтрастно выглядит на проекторе — избегайте его.
Страничный режим листа в Excel
Это тот самый режим, при котором Excel показывает, как лист будет разбит на страницы при печати. Границы страниц выделяются голубым цветом. Не рекомендую постоянно работать в этом режиме, что многие делают, так как в процессе вывода данных на экран участвует драйвер принтера, а это в зависимости от многих причин (например, принтер сетевой и в данный момент недоступен) чревато подвисаниями процесса визуализации и пересчёта формул. Работайте в обычном режиме.
Исправление неправиленной ссылки
Внимание: Это действие нельзя отменить. Перед началом этой процедуры может потребоваться сохранить резервную копию книги.
Откройте книгу, которая содержит неверную связь.
На вкладке "Данные" нажмите кнопку "Изменить связи".
Команда "Изменить связи" недоступна, если книга не содержит ссылок.
Выберите команду Смена источника.
Перейдите к расположению файла, содержащего связанные данные.
Выберите новый исходный файл и нажмите кнопку "Изменить источник".
Удаление неявной ссылки
При разрыве связи все формулы, которые ссылаются на исходный файл, преобразуются в их текущее значение. Например, если формула =СУММ([Budget.xls]Годовой! C10:C25) — 45, после того как связь не будет нарушена, формула будет преобразована в 45.
Откройте книгу, которая содержит неверную ссылку.
На вкладке "Данные" нажмите кнопку "Изменить связи".
Команда "Изменить связи" недоступна, если книга не содержит ссылок.
В поле "Исходный файл" выберите ненужную ссылку, которую нужно удалить.
Примечание: Чтобы удалить несколько ссылок, щелкните каждую из , удерживая нажатой кнопку мыши.
Щелкните элемент Разорвать.
Исправление неправиленной ссылки
Внимание: Это действие нельзя отменить. Перед началом этой процедуры может потребоваться сохранить резервную копию книги.
Откройте книгу, которая содержит неверную связь.
В меню Правка выберите пункт Связи.
Если книга не содержит ссылок, команда "Ссылки" недоступна.
Выберите команду Смена источника.
Выполните одно из следующих действий:
Необходимые действия
Исправление неправиленной ссылки на лист в другой книге
В диалоговом окне "Открытие" найдите книгу и нажмите кнопку "Изменить".
Исправление неправиленной ссылки на книгу или другой документ Office
Введите новое имя или расположение документа в поле "Изменить ссылки на текстовое поле" и нажмите кнопку "ОК".
Отключение автоматического обновления связанных данных
Откройте книгу, которая содержит неверную связь.
В меню Правка выберите пункт Связи.
Если книга не содержит ссылок, команда "Ссылки" недоступна.
Нажмите Вручную.
Удаление неявной ссылки
При разрыве связи все формулы, ссылаясь на исходный файл, преобразуются в их текущее значение. Например, если формула =СУММ([Budget.xls]Годовой! C10:C25) — 45, после того как связь не будет нарушена, формула будет преобразована в 45.
Откройте книгу, которая содержит неверную связь.
В меню Правка выберите пункт Связи.
Если книга не содержит ссылок, команда "Ссылки" недоступна.
В поле "Исходный файл" щелкните ненужную ссылку, которую нужно удалить.
Примечание: Чтобы удалить несколько ссылок, щелкните каждую из , удерживая нажатой кнопку мыши.
Многие, кто работал со сводными таблицами наверняка знают, что при изменении значений в исходных данных(данные, на основании которых создана сводная) сама сводная таблица при этом не обновляется. Чтобы обновить надо проделать еще пару манипуляций:
-
Выделить любую ячейку сводной таблицы→Правая кнопка мыши→Обновить (Refresh) или вкладка Данные (Data) →Обновить все (Refresh all) →Обновить (Refresh)
Однако, если в конец исходных данных добавить строку(или несколько), то с большой долей вероятности даже обновление сводной таблицы не поможет - добавленная строка не появится в сводной. И чтобы её увидеть необходимо будет изменить источник данных для сводной таблицы, включив новую строку в диапазон. Не очень удобно, не правда ли? Чтобы добиться расширения диапазона исходных данных автоматически вместе с добавлением туда данных, лучше позаботиться об этом до создания сводной таблицы.
Недоавтообновление
Почему "недо" - жать кнопку Обновить все же придется. Но не отчаивайтесь - читайте до конца и мы научимся обновлять все автоматом.
Для счастливых обладателей Excel 2007 и старше есть простой способ без лишних телодвижений. Это встроенный инструмент Таблица (Table) . Его еще иначе называют "умная таблица" и я тоже буду применять этот термин, чтобы не было путаницы.
Умная таблица - это специальный объект, который представляет собой правильную таблицу с заголовками, которая расширяется по мере добавления в неё данных. В ней много еще чего полезного, но нас интересует сейчас именно то, что она расширяется сама по мере добавления данных и что на её основе можно создать сводную таблицу. В нашем случае она будет играть роль динамического именованного диапазона(стандартный именованный диапазон не может быть источником данных для сводной таблицы, поэтому и приходится идти другими путями). Чтобы создать такую таблицу необходимо:
- выделить таблицу исходных данных для создания сводной таблицы -перейти на вкладку Вставка (Insert) и выбрать Таблица (Table)
- В появившемся окне согласиться с указанным диапазоном или выбрать свой. Галочку Таблица с заголовками (My table has headers) при этом надо обязательно оставить включенной:
К выбранному диапазону автоматически будет применено форматирование как таблицы, используемое по умолчанию. На это можно не обращать внимания, т.к. для наших целей это по большому счету не важно.
-
Если вдруг захочется и здесь навести красоту, то это тоже делается довольно легко:
Выделяем любую ячейку в этой таблице-переходим на вкладку Работа с таблицами (Table tools) -Конструктор (Desigh) -Стили таблиц (Table styles) . Можно выбрать один из предлагаемых там вариантов и применить. Если ни один из вариантов не подходит - создаем свой. Раскрываем список стилей и выбираем Создать стиль таблицы (New table style. )
А дальше все как привыкли:
- Выделить любую ячейку исходной таблицы(теперь уже "умной")
- Вкладка Вставка (Insert) -группа Таблица (Table) -Сводная таблица (PivotTable)
- В диалоговом окне Создание сводной таблицы (Create PivotTable) в пункте Выбрать таблицу или диапазон (Select a table or range) в поле Таблица или диапазон (Range/Table) будет автоматически указан не адрес какого-то диапазона, а имя созданной умной таблицы:
Далее надо определить место размещения Сводной таблицы:
- На новый лист (New Worksheet)
- На существующий лист (Existing Worksheet)
Готово. Теперь при добавлении строк в эту таблицу для их отображения в сводной достаточно будет лишь обновить сводную таблицу как привыкли. Правда, тут тоже есть нюанс - добавлять строки надо правильно. Можно вбить данные в любую ячейку первой пустой строки таблицы - таблица автоматом расшириться, добавив еще одну строку. Теперь туда можно скопировать нужные данные или добить вручную. Если надо вставить сразу несколько строк - в правом нижнем углу последней строки умной таблицы есть слегка выделяющийся уголочек, который надо ухватить мышью и растянуть на нужное кол-во строк/столбцов.
Если мы просто скопируем строки ниже таблицы, то она не расширится. Это надо учитывать.
Если необходимо настроить на авторасширение уже созданную сводную , то порядок почти такой же, только сводную таблицу создавать не надо. Преобразуем исходные данные в умную таблицу, переходим на лист со сводной таблицей. Выделяем любую ячейку в сводной таблице, переходим на динамическую вкладку Работа со сводными таблицами (PivotTable Tools) -Параметры (Options) -группа кнопок Даныне (Data) -Источник данных (Change data Source) . В появившемся окне в поле Таблица или диапазон (Table/Range) указываем либо ссылку на всю умную таблицу, либо имя нашей умной таблицы(если знаете где его подсмотреть). На что здесь следует обратить внимание: если указывался диапазон, то если он указан верно - в поле вместо адреса ячеек будет отображено имя умной таблицы:
Если же после указания видите именно диапазон - значит что-то указано неверно или таблица не является умной(возможно, форматирование от умной таблицы, но сама умная таблица была удалена).
Полное автообновление
Для полного счастья можно подключить работу макросов. Что я хочу? Я хочу, чтобы как только я изменил/добавил данные в исходные данные - сводная тут же обновилась. Для этого надо сделать следующее:
- убеждаемся, что макросы разрешены(Почему не работает макрос?, Что такое макрос и где его искать?)
- перейти на лист исходных данных(в моем случае лист так и называется - Исходные данные)
- жмем на ярлычке этого листа правой кнопкой мыши -Исходный текст (View code) :
- вставляем туда следующий код:
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) 'проверяем - изменения внутри умной таблицы или нет If Not Intersect(Target, Target.Parent.ListObjects(1).Range) Is Nothing Then 'если внутри таблицы, то обновляем сводную таблицу на листе "Автообновляемая сводная" Sheets("Автообновляемая сводная").PivotTables(1).RefreshTable 'для всех сводных на листе ' Dim pt As PivotTable ' For Each pt In Sheets("Автообновляемая сводная").PivotTables ' pt.RefreshTable ' Next End If End Sub
Все, теперь при любом изменении внутри исходных данных(будь это добавление/удаление строк или просто изменение значений внутри таблицы) сводная таблица обновиться без занудных действий вроде выделения сводной и жмахания кнопки Обновить.
Пара важных комментариев к коду:
- Sheets("Автообновляемая сводная") - здесь Автообновляемая сводная это имя листа, на котором расположена сводная таблица. Это очень важно. Если будет указано неверное имя листа - код выдаст ошибку и никакого обновления, конечно же, не произойдет
- код сделан таким образом, что на листе исходных данных должна быть только одна умная таблица. Нет, их может быть несколько, но код будет ориентироваться исключительно на первую. И если вы плохо знакомы с принципами создания объектов - то лучше не рисковать. Хотя и здесь можно выйти из положения. Если вы знаете имя своей умной таблицы(его можно подсмотреть на вкладке Конструктор -группа Свойства), то можно изменить код так:
вместо строки
If Not Intersect(Target, Target.Parent.ListObjects( 1 ).Range) Is Nothing Then
записать такую
If Not Intersect(Target, Target.Parent.ListObjects( "Таблица1" ).Range) Is Nothing Then
где Таблица1 - имя вашей умной таблицы, на основании которой создана сводная. - тот же нюанс с листом самой сводной - код ориентирован так, что обновляет только первую сводную на листе Автообновляемая сводная . Здесь так же можно заменить цифру 1 на имя сводной(например .PivotTables("СводнаяТаблица1").RefreshTable ), либо же сделать обновление всех сводных. Для этого надо раскомментировать блок 'для всех сводных на листе (убрать апострофы перед строками) и убрать строку с именем листа, чтобы получилось так:
Private Sub Worksheet_Change(ByVal Target As Range) 'проверяем - изменения внутри умной таблицы или нет If Not Intersect(Target, Target.Parent.ListObjects(1).Range) Is Nothing Then 'если внутри таблицы, то обновляем все сводные на листе "Автообновляемая сводная" Dim pt As PivotTable For Each pt In Sheets("Автообновляемая сводная").PivotTables pt.RefreshTable Next End If End Sub
P.S. Так же можно использовать и иной подход - вставить в модуль листа Автообновляемая сводная такой код:
Private Sub Worksheet_Activate() Me.PivotTables(1).RefreshTable End Sub
тогда сводная на листе будет обновляться лишь тогда, когда будет активирован лист со сводной. Плюсы подобного подхода очевидны в случаях, если часто приходится менять исходные данные. В первом коде сводная будет обновляться при каждом ручном изменении в исходных данных, даже если после этого мы не переходили на лист сводной, а дальше стали делать изменения в исходных данных.
Если вы забыли пароль на лист, то можете воспользоваться командой моей надстройки MulTEx - Снять защиту с листа(без пароля). Надстройка платная, но есть ДЕМО период на один месяц, которого должно хватить, чтобы снять защиту с одного листа.
Причина третья - Запрещен ввод напрямую в ячейках
И самая экзотическая причина - редактирование напрямую в ячейках запрещено. Это значит, что редактировать значение ячеек напрямую на листе нельзя, однако через строку формул это действие допускается без проблем и ограничений(при условии, что озвученные выше причины отсутствуют).
Где расположена строка формул:
В таком случае надо проверить следующие настройки:
- для Excel 2003: Сервис -Параметры -вкладка Правка -установить флажок Правка прямо в ячейке
- для Excel 2007: Кнопка Офис -Параметры Excel (Excel Options) -Дополнительно (Advanced) -установить флажок Разрешить редактирование в ячейках (Allow Editing Directly in the Cells)
- для Excel 2010 и выше: Файл (File) -Параметры (Options) -Дополнительно (Advanced) -установить флажок Разрешить редактирование в ячейках (Allow Editing Directly in the Cells)
- Excel 2003:
Сервис-Безопасность-Уровень макросов "Высокий" - Excel 2007:
Кнопка Офис-Параметры Excel (Excel Options) -Центр управления безопасностью (Trust Centr) -Параметры центра управления безопасностью (Trust Centr Settings) -Параметры макросов (Macro Settings) -Отключить все макросы без уведомления (Disable All Macros without notification) - Excel 2010 и выше:
Файл (File) -Параметры (Options) -Центр управления безопасностью (Trust Centr) -Параметры центра управления безопасностью (Trust Centr Settings) -Параметры макросов (Macro Settings) -Отключить все макросы без уведомления (Disable All Macros without notification)
После изменения параметров безопасности макросов необходимо перезапустить приложение Excel: закрыть его полностью и открыть заново. Только после этого изменения вступят в силу.
О том, что такое модуль листа и где его искать можно прочитать в статье: Что такое модуль? Какие бывают модули?
Причина пятая - мы где-то про что-то забыли
А это уже скорее некий перечень действий, которые тоже не мешает проверить.
Читайте также: