Создание подсписка на основе второго столбца в Excel - PullRequest
0 голосов
/ 26 апреля 2009

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

dog F
cat F
bell S
whistle 
bird F

Итак, у Фреда есть собака, кошка и птица; У Скотта есть колокол; и ни у кого нет свистка на их странице. Теперь, выполнив простое IF (), я могу сделать так, чтобы это выглядело для страницы Фреда

TOP OF ROW
dog
cat


bird

А страница Скотта будет выглядеть как

TOP OF ROW


bell

однако я хочу, чтобы Фред выглядел как

TOP OF ROW
dog
cat
bird

и Скотт будет таким же.

Моя текущая мысль состоит в том, чтобы использовать =VLOOKUP($C$1,Items!A2:C1000,3) в скрытом столбце в D, чтобы сказать мне, в какой строке находятся мои данные (где Столбец C на Предметах - это скрытый столбец с номером строки, а C1 параметр поиска (S или F)), затем =IFERROR(CELL("contents",INDIRECT(ADDRESS($D2,2,1,TRUE,"Items"))),""), однако я, кроме изменения индекса строки моего массива поиска на 1+ последнего найденного элемента (что я не выяснил, как это сделать), я не могу понять как продолжить поиск следующего элемента. Я знаю C ++ и C #, но никогда раньше не кодировал в VBA, и я очень полагаюсь на MSDN, и, насколько мне известно, нет раздела MSDN, посвященного API Excel.

Ответы [ 2 ]

1 голос
/ 28 мая 2009

Есть хороший способ сделать это с помощью функций в Excel.

По сути, вам нужно создать бегущий счетчик

Так что в C2 у вас будет =COUNTIF($B$2:$B2,"F") Очевидно, что "F" также может быть ссылкой на другую ячейку. Если вы заполните эту формулу вниз, диапазон расширится. Например. в С3 он скажет =COUNTIF($B$2:$B3,"F")

Это даст вам промежуточную сумму в столбце C в вашем примере, это будет означать:

собака F 1

кошка F 2

звонок S 2

свисток 2

птица F 3

Тот факт, что у вас есть 3 2, не имеет значения, потому что vlookup всегда будет соответствовать первому найденному совпадению.

У этой техники много разных применений. И, в зависимости от данных, вам может быть легче поместить их слева от данных, чтобы облегчить VLOOKUP.

1 голос
/ 26 апреля 2009

Одним из способов получения списка, который вы ищете без кода VBA, является использование расширенного фильтра.

На листе 1 вводится следующий список

alt text

на листе 2 введите критерии фильтра (этот критерий означает, что F содержит столбец Owned by)

alt text

и, наконец, на sheet3, вызовите функцию расширенного фильтра, как это

alt text

выберите копию в другом месте

выберите список ввода sheet1 в качестве диапазона списка

выберите критерии фильтра листа2 в качестве диапазона критериев

и выберите где-нибудь на листе 3 в качестве диапазона вывода (копию записи)

Если вы предпочитаете идти по пути программирования в Excel на VBA, первым хорошим шагом будет попробовать макрос-рекордер в excel (tools - macros - record macro)

удачи!

...