Помогите обработать большую базу данных Несколько листов по 20к строчек каждый. Что нужно, сложить вес груза и получить строку с суммой веса по каждому предприятию и пункту назначения. Грубо говоря мне нужно сложить первые 6 строк в одну, и подобную хуйню распространить на всю базу. В тред призывается офисный планктон, знатоки экселя и ITшники всех мастей. Мои мысли все крутятся чтобы написать скрипт в R наносеки с двачей не знают этот язык или макрос. С первым я еще более менее знаком. Подскажите как это сделать, мне для диплома надо. Плез. С меня как обычно.
>>263367934 (OP) Можно скрипт на VBA написать, в студенчестве такой хуйней маялся. А сейчас бы хуй знает, может экспортировал бы все в нормальную sql-бд и запросов все на изичах нашел.
>>263368363 >может экспортировал бы все в нормальную sql-бд и запросов все на изичах нашел Не учили в моей шараге такому, только excel и R. Опять же VBA вроде простой и там есть VBA рекордер, но не думаю, что мне поможет.
>>263367934 (OP) >большую базу данных >Несколько листов по 20к строчек каждый Проигрунькал с подливой Постгресодебил Разрабатываю распределенную БД для хранения архивов параметров с АЭС
>>263368638 Еще ебаться с установкой среды и компилятора, опять же само действие требует менее 30 секунд если вручную, была бы пара тысяч строк, я бы не думая ручками бы поработал, но не 126к же
>>263369056 Пожалуйста, памаги >отвечай зачем тебе это нужно в дипломе Для создания карт рынков сбыта. ArcGis знаешь что такое? Ну вот по этой БД будут карты делаться.
>>263367934 (OP) Я так понял, это все в обычном ексель-файле? Подозреваю, что ожидаемым решением будет написать макрос, который создаст словарь. Далее он циклом будет проходить по всем строкам твоих файлов, для каждой строки будет создавать композитный ключ из предприятия и пункта назначения (к примеру, строка вида "{предприятие}|{пункт назначения}"). Если такого ключа еще нет в словаре - добавлять, если есть - прибавлять вес к соответствующему значению. Альтернатива - в отдельной программе эти данные вычитывать, как вот тут например: https://dotnetcoretutorials.com/2019/12/09/reading-excel-files-in-net-core/
Если тебе доступен .NET - можешь просто считать все данные сразу в массив объектов, и воспользоваться GroupBy и агрегацией из LINQ. Если будешь использовать Python - можешь тоже все сразу вычитать и запихнуть в pandas, и в нем делать группировку и агрегацию.
>>263369048 Все так, до этого я и сам сумел дойти, но есть проблемы, первая это оформление всего этого говна, таблица должна быть идентичной, той что на пике, только с сложеными значениями, вторая проблема это то что параметров там несколько, то есть один завод отгружает в разные регионы, на разные нужды.
>>263368363 Ага, а результат записать обратно в эксель, гениально блять. ВБА и макросы это полноценный языу высокого уровня что вы мозги ебёте. >>263369056 ОП ты на столько туп, что даже не можешь загуглить текст с картинки, он же тебе прямо ответ на твою жопоболь принёс.
>>263369143 нажимаешь сверху "вставка", слева на панели жмешь "таблицы", "сводная таблица". Выбираешь свой лист как диапазон, создаешь на новый лист таблицу. В окне справа перетаскиваешь название компании в строки, перетаскиваешь вес в значения. Готово. Ты хуево объяснил что тебе нужно, надеюсь именно это
>>263369801 Ты только в этом треде уже 36 минут. Там тоже самое что этот пишет >>263369700 наверное, я то не смотрел, но по скринам именно сложение по позициям.
>>263369700 Мне нужна такая же таблица как на ОП пике, только надо сложить строки с одинковыми буковками в ячейках. То есть, для примера, мне нужно получить из первых шести строк одну, где показатель веса будет сложен.
>>263367934 (OP) На VBA такая хуйня напишется в несколько строк. Просто циклом пройтись, проиндексировать каждое предприятие и прибавлять к его сумме вес. Я бы сделал так: создать ассоциативный массив строка(предприятие):число(вес), пойти циклом по предприятиям, если его нет в списке, то добавить в список и к сумме прибавить вес, если оно есть в списке, то просто прибавить вес. Точно язык не помню, давно на нем не писал, но раньше так втирался в доверие к бухгалтерам, пописывая им подобные скриптики за всякие ништяки и поблажки. Но всё легко гуглится. Я думаю, если программирование тебе знакомо, напишешь за 10 минут. Если нет, могу помочь, повспоминать, наверное...
>>263370443 В универе преподавали, я даже установить это парашу не смог без проблем, потом библиотеки отказывались загружаться, потом белый экран в rstudio.
>>263370695 Ну все равно AutoSum тебе в помощь, добавляй пустую строку перед каждым новым предприятием, и рядом с суммой всего веса, что-то типа "Всего", ну и все остальное останется и будет автоподсчет веса ручками правда чуть придется поделать, но это будет быстрее чем ты будешь что-то искать
>>263371406 Тю так это быстро, 50 пустых строк добавишь после кадого предприятия, и 50 их раз отфильровать, и нажимать кнопку AutoSum, и вид красивый будет и подсчет по весу, как по мне это норм решение.
>>263371823 Объясни я не понял, какие колонки в твоем оп-пике? Ты можешь фильтры друг на друга накладывать ведь, например предпритие + область отправления
>>263370768 Объедены все текстовые названия в одну ячейку. Потом нажимаешь сводную таблицу и получаешь сумму. Правда как потом разбить текст обратно на ячейки я хз, тут от дальнейшей задачи зависит.
В словарь (dictionary) в вба можешь считывать и там уже если в строчке находится существующее в словаре значение If dict.Exists("хрень из колонки") Then суммирую свю хрень из нужной колонки в это значение, а если считывая первую колонку новое значение, то создаёшь новое в словаре, к которому будет добавлятся. Можешь в принципе прям там в экселе и сделать всё