2016-09-17 4 views
1

У меня есть книга Excel с контактной информацией на одном листе и в форме на другом. Я хочу создать еще один лист, который имеет отфильтрованный набор контактов FULLNAME для отображения в списке на листе формы. Я работаю со сводной таблицей с FULLNAME, но я не могу добавить сортировку в LASTNAME без группировки элементов, чего я не хочу. Любые предложения, которые не включают в себя дублирование данныхСортировка таблицы сводных таблиц Excel с использованием нескольких полей и без группировки

UPDATE:

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

enter image description here

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

enter image description here

, что дает мне этот результат в моем списке форм

enter image description here

, как вы можете увидеть запись Фамилия Группировка также отображается в списке, который не является желательным.

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

Так, используя решение Андреаса на изображении ниже, он дал мне первый набор данных справа от моей сводной таблицы. Как вы видите, у него есть пробелы и будет неприглядно привязывать эту таблицу к списку. Поэтому, используя следующую макрофункцию, мне удалось создать данные столбца 3 без пробелов. Функция выглядит следующим образом ...

=IFERROR(INDEX(SortedSpacedRange,SMALL((IF(LEN(SortedSpacedRange),ROW(INDIRECT("1:"&ROWS(SortedSpacedRange))))),ROW(A1)),1),"") 

Вместо использования варьировался данные в функции я создал таблицу из данных, второго столбца, который называется «SortedSpacedRange». Это позволяет мне использовать его на нескольких листах лучше. Не забудьте использовать Ctrl + Shift + Enter, чтобы вставить функцию.

enter image description here

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

enter image description here

Я надеюсь, что кто-то считает, что это полезно. Еще раз спасибо Andreas

+0

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

+0

Я сделал еще несколько тестов, и я думаю, что мне действительно нужно иметь таблицу на одном листе, а затем второй и третий листы, которые имеют разные подмножества этих данных. Затем я могу получить данные для списка для формы, но я бы хотел, чтобы 2-й и 3-й листы содержали ссылочные данные, поэтому, обновляя таблицу, листы получат обновления. Я обновляю op с некоторыми изображениями того, что я сейчас вижу. – Tim

ответ

1

Теперь я вижу, что вам нужно.
Только несколько дней назад я спросил, как разобраться элементы из сводной таблицы здесь:
https://stackoverflow.com/questions/39383971/how-can-i-detect-pivot-table-new-items

Что вам нужно:

Function IsItem(c) 
    If c.IndentLevel <> 0 Then ' I think this will work, not tested. Typing on my phone 
     IsItem = True 
    Else 
     IsItem = False 
    End If 

End Function 

Это вернет истина/ложь, если элемент в сводная таблица - это новый элемент или «сумма».

Таким образом, в новой колонке рядом с сводной таблицы с помощью следующей формулы:

EDIT: это, очевидно, не A1 сводная таблица начинается, мой плохой. Просто замените ячейку тем, какая ячейка является первой. КОНЕЦ РЕДАКТИРОВАНИЯ. РЕДАКТИРОВАТЬ 2: Я вижу теперь, что это A4, который является первым. КОНЕЦ РЕДАКТИРОВАНИЯ 2.

=if(A4="","",if(IsItem(A4),A4,"")) 

Сначала он смотрит на ячейку, а если пустой, то пустой.
Если он не пуст, он смотрит на это значение и, если это полное имя (а не только фамилия), оно вернет имя, иначе пустое.

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

Код vba должен быть помещен в модуль, и файл должен быть сохранен как макроактивированная рабочая тетрадь xlsm перед добавлением формул на листе.

+1

Спасибо, Андреас, это решило мою проблему. Мне пришлось сделать несколько других вещей, таких как удаление пустых строк из нового набора данных, но после того, как я понял, что это именно то, что я искал. – Tim