2013-07-29 2 views
1

Удивление, если кто-то может помочь мне с этим однимMacro: Транспонирование вопрос

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

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

enter image description here

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

Как она стоит на данный момент код для получения этой ячейки устанавливается на это:

Range("AA65").Select 
Selection.ShowDetail = True 

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

Есть ли способ создать код, в котором я всегда могу подобрать эту ячейку Grand Total в своде, независимо от того, сколько столбцов она растягивает?

Спасибо за чтение, и я надеюсь получить обратную связь в ближайшее время :)

С наилучшими пожеланиями

Zoe

+0

Чтобы получить последнюю использованную колонку, сделать Activesheet.Cells (rnum, Columns.Count) .end (xltoleft). Колонка, где rnum - это номер. Чтобы получить последнюю использованную строку, сделайте Activesheet.Cells (Rows.Count, cnum) .end (xlup) .Row, где cnum - столбец. Надеюсь, это поможет. –

ответ

3

, например

With ActiveSheet.PivotTables(1).TableRange1 
    .Cells(.Cells.Count).ShowDetail = True 
    End With 
+0

И вот он у вас есть, протестирован и отлично работает и вернулся к нормальности^_^большое спасибо Джози, что вы спасли меня много времени :) – Zoe

Смежные вопросы