Все комбинации 4 из 7 столбцов с итогами с использованием Excel - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть 7 столбцов на выбор, и мне нужно выбрать 4 из этих столбцов и сгенерировать итог для каждой строки. Мне также нужна каждая комбинация из 4, что означает, что у меня будет 35 новых столбцов с итогами для каждой из этих комбинаций, отображаемых в каждой строке. Мне нужен код для этого, и если это можно сделать только с помощью Excel. Вот изображение столбцов, а серые - это 7 столбцов, о которых я говорю. Мои знания об Excel очень ограничены. Если это имеет значение, есть более 1500 строк.

Excel image of my problem

1 Ответ

0 голосов
/ 14 сентября 2018

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

Шаг 1 - Создание списка комбинаций столбцов

Чтобы сгенерировать список, 4 строки помощника должны быть вставлены вверху ваших данных. или выше или ниже строки заголовка. Эти 4 строки будут представлять номер столбца, который вы собираетесь выбрать. Для упрощения математики я просто взял 1 для первого столбца и 7 для последнего столбца. эти числа будут преобразованы в более поздние для учета промежуточного столбца в вашей электронной таблице. Для этого примера первая сумма комбинации будет встречаться в столбце AO, а первая строка помощника будет строкой 1. Первая комбинация будет жестко закодирована, и она будет заполнять шаблон для оставшихся комбинаций столбцов. Введите следующие значения в соответствующие ячейки:

AO1 = 1
AO2 = 2
AO3 = 3
AO4 = 4

В соседнем столбце формула будет помещена и скопирована вправо. Он будет автоматически увеличивать нижнее значение на 1, пока не достигнет своего максимального значения, и в этот момент значение в строке выше увеличится на 1, и значение тока будет на 1 больше, чем ячейка выше. Это создаст шаблон, который охватывает все 35 комбинаций к достижению временного столбца BW. Поместите формулы ниже в соответствующую ячейку и скопируйте справа:

AP1
=IF(AO2=5,AO1+1,AO1)

AP2
=IF(AO2=5,AP1+1,IF(AO3=6,AO2+1,AO2))

AP3
=IF(AO3=6,AP2+1,IF(AO4=7,AO3+1,AO3))

AP4
=IF(AO4=7,AP3+1,AO4+1)

Step2 - сумма соответствующих столбцов

Я надеялся использовать какую-то операцию с типом массива, чтобы прочитать вышеуказанные ссылочные номера столбцов, но я не мог разобраться с этим. Поскольку беспокоиться было всего о 4 записях, я просто добавил каждую ссылку вручную в функцию SUM. Теперь важно отметить, что мы будем использовать функцию INDEX для 13 столбцов, которые охватывают диапазон ваших столбцов, чтобы преобразовать индексное число, которое мы выяснили выше, во что-то, что будет работать для захвата каждой второй строки, рассчитанное число будет умножено на 2, а затем 1 будет вычтено. Это означает, что 1,2,3,4 для первой комбинации столбцов становится 1,3,5,7. Вы можете увидеть это в следующей формуле. Поместите следующую формулу в соответствующую ячейку и, при необходимости, скопируйте ее вниз и вправо.

AO5
=INDEX($AB5:$AN5,AO$1*2-1)+INDEX($AB5:$AN5,AO$2*2-1)+INDEX($AB5:$AN5,AO$3*2-1)+INDEX($AB5:$AN5,AO$4*2-1)

обратите особое внимание на $, который заблокирует ссылку на строку или столбец и предотвратит их изменение при копировании формулы.

Теперь вам может потребоваться настроить ссылки на ячейки в соответствии с вашим листом.

proof of concept

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...