Как объединить данные, «сгруппированные» по родительскому элементу, и использовать их для дальнейшего расчета (нормализации) в Excel? - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть некоторые данные в книге Excel. Эти данные являются иерархическими, т. Е. Между данными между рабочими листами существуют отношения родитель-потомок. Вот как это выглядит на конкретном листе: (есть другие строки (над ним) и столбцы справа, но они не важны для этой проблемы)

| Parent | Item | Score |
|   P1   |  I1  |   3   |
|   P2   |  I2  |   1   |
|   P1   |  I3  |   6   |
|   P3   |  I4  |  1.5  |
|   P4   |  I5  |   4   |

Нам нужно иметь общую сумму всех Предметов, принадлежащих конкретному родителю, то есть общую сумму по родителям, чтобы получить «сумму предметов» для каждого родителя. (Рабочий лист root не будет иметь родителей (т. Е. Пустой столбец), но структура одинакова для всех рабочих листов). Необходимо «нормализовать» баллы детей родителей по шкале от 0 до 1 ( РЕДАКТИРОВАТЬ: , т. Е. Сумма баллов детей должна составлять 1)

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

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

Я сейчас нахожусь на грани того, чтобы иметь возможность выполнить «Группирование по» (из SQL) в Excel. Есть идеи?

1 Ответ

1 голос
/ 05 февраля 2012

Если вам нужно найти сумму всех значений, соответствующих заданному критерию, используйте функцию SUMIF. Я предполагаю, что «Родитель» находится в столбце A, «Элемент» в столбце B и «Оценка» в столбце C. В D2 вам нужно будет указать следующую формулу: = SUMIF (A: A; A2; C: C ) и скопируйте его.

Однако вам не нужно знать сумму оценок детей родителя, если вы хотите поставить оценки по шкале от 0 до 1: вам нужно знать только максимум оценка детей родителя. Поскольку функция MAXIF не существует, мы будем использовать функцию массива , комбинирующую MAX и IF. Введите это в D2 и нажмите Ctrl + Shift + Enter: = MAX (IF (A: A = A2; C: C). Необходимо добавить квадратные скобки, чтобы показать, что это формула массива: {= MAX (IF (A: A = A2; C: C)}. Теперь вам нужно разделить оценку ребенка на максимальную оценку его группы.

...