#excel #vba #pivot-table
Вопрос:
Мне нужно найти способ определения номера строки из таблицы источников данных выбранной ячейки в моей сводной таблице.
Причина этого в том, что я хочу иметь возможность редактировать/обновлять значения из формы пользователя.
Моя таблица с источником данных находится на листе 1 с именем «Данные», а моя сводная таблица-на листе 2 с именем «Управление проектами».
Я знаю, что могу редактировать значения в сводной таблице, установив
EnableDataValueEditing = False
..но это не дает мне желаемого результата, так как мои исходные данные остаются неизменными, и у меня также есть скрытые столбцы, которые я использую только для условного форматирования, и было бы плохо, если бы пользователю приходилось раскрывать столбцы каждый раз, когда мне нужно их редактировать.
У кого-нибудь есть какие-либо идеи или предложения относительно того, как я могу получить исходный номер строки данных для определенной ячейки в моей сводной таблице ?
«Плохим» обходным решением было бы использовать VBA для сопоставления выбранного значения ячейки с данными из таблицы, и когда совпадение будет найдено, извлеките адрес, но это не является надежным, данные должны быть уникальными, но с течением времени будет поступать больше данных, это может больше не иметь места. Поэтому я стараюсь избегать этого метода.
PS: если бы кто-нибудь мог отредактировать мой пост и вставить изображение, я был бы очень признателен.
Комментарии:
1. Я в замешательстве. Разве в источнике не должно быть много строк? Сумма строк? Вы пробовали дважды щелкнуть по данным в сводной таблице? Такой уровень предварительного просмотра не помогает?
2. @Бретт , спасибо за комментарий. Ну, это не для моего желаемого конечного результата. Я добавляю новые строки данных в свою исходную таблицу через форму пользователя, а затем обновляю свою сводную таблицу, чтобы показать эти данные, поэтому я хотел бы также иметь возможность редактировать существующие данные из нее. Нажав на ячейку в моей сводной таблице и получив номер строки этих данных из моей исходной таблицы, это помогло бы мне достичь этого.
Ответ №1:
Сводная таблица-это отчет, обобщающий информацию из связанной таблицы или запроса. Вы сможете обновить информацию только в том случае, если знаете идентификатор/номер строки, который хотите изменить, или отфильтруете источник данных до такой степени, чтобы его можно было идентифицировать.
Если вы собираетесь хранить и изменять записи, я бы предложил создать базу данных (Доступ, для чего-то быстрого и простого), чтобы обеспечить некоторую целостность, а затем связать вашу сводную таблицу и форму с этой базой данных.
РЕДАКТИРОВАТЬ: VLookup или индекс(Совпадение(…)) вернут только первое попадание, и это может быть не обязательно то, что вы хотите.
Ответ №2:
Я изложу свой неправославный, но совершенно функциональный способ сделать это на случай, если кто-то столкнется с подобной проблемой или пока не появится лучший способ.
Я фактически добавил новый столбец в свою таблицу данных с формулой
=ROW([@Column1])
Это дает мне номер строки для каждой записи.
Затем я просто добавляю этот столбец в качестве строки в свою сводную таблицу, отображаю в табличном режиме, чтобы иметь свой собственный столбец и скрывать его. Поэтому при выборе ячейки я ищу номер в скрытом столбце и, следовательно, получаю номер строки исходных данных.