Получить номер строки источника данных активной ячейки Сводной таблицы

#excel #vba #pivot-table

Вопрос:

Мне нужно найти способ определения номера строки из таблицы источников данных выбранной ячейки в моей сводной таблице.

Причина этого в том, что я хочу иметь возможность редактировать/обновлять значения из формы пользователя.

Моя таблица с источником данных находится на листе 1 с именем «Данные», а моя сводная таблица-на листе 2 с именем «Управление проектами».

Я знаю, что могу редактировать значения в сводной таблице, установив

 EnableDataValueEditing = False  

..но это не дает мне желаемого результата, так как мои исходные данные остаются неизменными, и у меня также есть скрытые столбцы, которые я использую только для условного форматирования, и было бы плохо, если бы пользователю приходилось раскрывать столбцы каждый раз, когда мне нужно их редактировать.

У кого-нибудь есть какие-либо идеи или предложения относительно того, как я могу получить исходный номер строки данных для определенной ячейки в моей сводной таблице ?

Например, вверху находится моя исходная таблица, а внизу справа-моя сводная таблица. Когда нажата ячейка «Фиктивные данные», я хочу, чтобы она дала мне номер строки этих данных из моей исходной таблицы.

«Плохим» обходным решением было бы использовать VBA для сопоставления выбранного значения ячейки с данными из таблицы, и когда совпадение будет найдено, извлеките адрес, но это не является надежным, данные должны быть уникальными, но с течением времени будет поступать больше данных, это может больше не иметь места. Поэтому я стараюсь избегать этого метода.

PS: если бы кто-нибудь мог отредактировать мой пост и вставить изображение, я был бы очень признателен.

Комментарии:

1. Я в замешательстве. Разве в источнике не должно быть много строк? Сумма строк? Вы пробовали дважды щелкнуть по данным в сводной таблице? Такой уровень предварительного просмотра не помогает?

2. @Бретт , спасибо за комментарий. Ну, это не для моего желаемого конечного результата. Я добавляю новые строки данных в свою исходную таблицу через форму пользователя, а затем обновляю свою сводную таблицу, чтобы показать эти данные, поэтому я хотел бы также иметь возможность редактировать существующие данные из нее. Нажав на ячейку в моей сводной таблице и получив номер строки этих данных из моей исходной таблицы, это помогло бы мне достичь этого.

Ответ №1:

Сводная таблица-это отчет, обобщающий информацию из связанной таблицы или запроса. Вы сможете обновить информацию только в том случае, если знаете идентификатор/номер строки, который хотите изменить, или отфильтруете источник данных до такой степени, чтобы его можно было идентифицировать.

Если вы собираетесь хранить и изменять записи, я бы предложил создать базу данных (Доступ, для чего-то быстрого и простого), чтобы обеспечить некоторую целостность, а затем связать вашу сводную таблицу и форму с этой базой данных.

РЕДАКТИРОВАТЬ: VLookup или индекс(Совпадение(…)) вернут только первое попадание, и это может быть не обязательно то, что вы хотите.

Ответ №2:

Я изложу свой неправославный, но совершенно функциональный способ сделать это на случай, если кто-то столкнется с подобной проблемой или пока не появится лучший способ.

Я фактически добавил новый столбец в свою таблицу данных с формулой

 =ROW([@Column1])  

Это дает мне номер строки для каждой записи.

Затем я просто добавляю этот столбец в качестве строки в свою сводную таблицу, отображаю в табличном режиме, чтобы иметь свой собственный столбец и скрывать его. Поэтому при выборе ячейки я ищу номер в скрытом столбце и, следовательно, получаю номер строки исходных данных.