|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
есть вот такая табличка: ABCDE1ФИОкол-во днейдата нач.дата кон.Сумма2Иванов443132=C2+B21003Петров2=D2+1=C3+B33004Сидоров7=D3+1=C4+B4200 Суть формул в том, что задается кол-во дней, начало срока (привязано к окончанию предыдущего срока + один день) и окончание срока (начало срока + заданное кол-во дней) Подскажите, как правильно делать сортировку, чтобы привязка формул осталась на месте? Например, если отсортировать по полю Сумма, то чтобы дата начала Сидорова осталась привязана к дате окончания Петрова. Сейчас при сортировке все формулы остаются на местах. Если перед номером строки добавлять знак "$" (D$2+1), то так же все формулы остаются на местах. А нужно, чтобы при сортировке формулы перемещались за своей строкой, как и все остальные данные в этой строке. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2018, 17:10 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
Сортировать надо копию этой таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2018, 17:22 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
Dimonka , так мне потом работать надо с исходной таблицей и всеми ее формулами. А если я копию создам, то там и формул не будет, а останутся только значения. Или вы что-то другое имеете в виду? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2018, 17:49 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
Так если я правильно понимаю, ты хочешь, чтобы сортировка изменила сами формулы (набор операций), а не только аргументы формул. То есть чтобы формула =D2+1Стала формулой =D8или =D2-5так? Ну ты много хочешь. Сортировка не будет изменять операции в формулах. Так что нужно подход пересмотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2018, 17:57 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
Хотя нет, забудь, это я сам напутал Просто приведи пример результата ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2018, 18:00 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
Shocker.Pro, В моем примере, если сортируем по сумме, то результат должен быть таким: ABCDE1ФИОкол-во днейдата нач.дата кон.Сумма2Иванов443132=C2+B21003Сидоров7=D3+1=C4+B42004Петров2=D2+1=C3+B3300 т.е. формулы должны переместиться со "своей" строкой ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2018, 18:54 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
нуб987, зачем такие сложности? Превратите формулы в значения (выделить диапазон, Ctrl+c, правый клик - Значения) и сортируйте нормально. При необходимости новый столбец последовательных дат легко создать автозаполнением ("растягиванием"). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2018, 19:08 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
КазанскийПри необходимости новый столбец последовательных дат легко создать автозаполнением ("растягиванием").У него там не последовательные даты, с разными интервалами. Может сводную таблицу использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2018, 19:24 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
А так, конечно, структура самих данных плохая. Позиционно-зависимая ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2018, 19:25 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
Shocker.ProА так, конечно, структура самих данных плохая. Позиционно-зависимая чего ж тут плохого? ведь если вставлю строку в свою таблицу, то все будет ок: формулы переползут за своими строками и все будет так же работать. А вот сортировка портит всю таблицу. Почему же вставка работает нормально, а сортировка (то же самое перемещение строк) - нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2018, 22:01 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
нуб987Почему же вставка работает нормально, а сортировка (то же самое перемещение строк) - нет? Потому что таковы принципы работы формул. Когда Вы вставляете строку, то в имеющуюся структуру таблицы добавляется новый элемент, а для остальных(нижних) идет смещение ссылок на ячейки на 1. Это фиксированная величина сдвига, которая довольно легко реализуется. А когда делаете сортировку - идет мешанина существующих элементов внутри структуры таблицы(ничего не добавляется) - кто-то вверх, кто-то вниз... И отследить взаимосвязь формул в такой мешанине весьма трудозатратно. Если бы это было реализовано - даже 100 строк скорее всего сортировались бы непомерно долго. Но вряд ли кто-то пытался это вообще реализовать, т.к. изначально таблицы рассчитаны на четкую структуру данных и на то, чтобы формулы в одном столбце были одинаковыми(если смотреть на них в стиле R1C1). И если формулы различаются - то возникает ошибка "Несогласующаяся формула", которая показывает, что такая формула может неверно работать в определенных ситуациях. К которым в том числе относится и сортировка таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2018, 08:46 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
The_Prist , спасибо за развернутый ответ с текстом ниже не соглашусь: The_PristИ отследить взаимосвязь формул в такой мешанине весьма трудозатратно. Если бы это было реализовано - даже 100 строк скорее всего сортировались бы непомерно долго. трудозатраты не такие уж большие. Какие-нибудь яндекс-карты при просчете оптимального маршрута затрачивают гораздо бОльшие усилия, но с этим справляется даже слабенький телефон (у них появилась функция оффлайн построения маршрута, правда, без пробок). А тут целый настольный компьютер. Но ваше след.пояснение расставляет точки над Ё: The_PristНо вряд ли кто-то пытался это вообще реализовать, т.к. изначально таблицы рассчитаны на четкую структуру данных и на то, чтобы формулы в одном столбце были одинаковыми(если смотреть на них в стиле R1C1). И если формулы различаются - то возникает ошибка "Несогласующаяся формула", которая показывает, что такая формула может неверно работать в определенных ситуациях. К которым в том числе относится и сортировка таблицы. вероятно это действительно связано с "неправильностью" таких данных, поэтому нет реализации. С другой стороны я же могу взять любую ячейку и перетащить ее в любое место. При этом все формулы, ссылающиеся на нее, так же скорректируются. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2018, 15:56 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
нуб987трудозатраты не такие уж большие. Какие-нибудь яндекс-карты не совсем корректно на мой взгляд сравнивать навигатор и табличный редактор. Вы же не сравниваете лыжи и пилу по эффективности эксплуатации? :) Да и трудозатраты и мощностные ресурсы ПК - разные вещи. Под трудозатратами имелась ввиду не производительность для реализации задачи, а сама сложность реализации, т.к. при сортировке строки перемешиваются и отследить для каждой ячейки зависимости очень сложно и это потребовало бы скорее работу не с массивом значений, а напрямую с объектами ячеек(как это происходит при упомянутом перетаскивании), что было бы на порядок медленнее. Хотя это лишь мое предположение. Но даже логически - для каждой строки при каждой итерации сортировки потребовалось бы заново искать и переопределять зависимости всех ячеек. Не думаю, что это было бы быстро. Плюс, я так полагаю, что никому даже в голову не приходило сортировать формулы наравне с значениями, т.к. формулы изначально задумывались для иных целей и являются несколько особым свойством ячейки. Вообще, ради интереса просто поищите в интернете "быстрые методы сортировки VBA". Посмотрите, как там все закручено(пузырек не в счет, это самый медленный алгоритм). Потом попробуйте сами чрез тот же VBA выявить для ячейки с формулами(не только простыми, а любыми формулами - сложными, формулами массива и т.п.), разложить каждую на все участвующие и зависимые от неё ячейки и для каждой еще и определить - закреплена или нет. Может тогда мнение относительно простоты реализации чуть изменится :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2018, 16:29 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
The_Prist , давайте остановимся на том, что мне все известно о методах сортировки, ссылках, указателях, массивах и т.п. :) И я точно знаю, что компьютеру совсем несложно привязаться к ячейке, куда бы она не была перемещена. И даже тысячам таких перемещенных ячеек. Скорее всего, в микрософте просто посчитали, что в такой отсортированной таблице слишком много формул придется подсветить зеленым треугольничком (несогласованность формул) Или что еще более вероятно: такая сортировка есть, но как ею воспользоваться мы не знаем. О чем и создана эта тема The_PristПлюс, я так полагаю, что никому даже в голову не приходило сортировать формулы наравне с значениями, т.к. формулы изначально задумывались для иных целей и являются несколько особым свойством ячейки. Тут задача такая: есть таблица с некими данными. И в этой таблице есть вспомогательные поля с формулами (расчет начала и конца периодов, а так же связь начала одних периодов с окончанием других. Т.е. что-то отдаленно напоминающее ProjectManager). Таблицу необходимо сортировать и фильтровать по разным полям, при этом чтобы периоды оставались внутри своих строк, как-будто там нет формул, а только значения. И при этом, если меняется срок или дата начала, или окончания в какой-то из строк, то чтобы остальные строки корректно пересчитывались. Таблица небольшая - всего на сотню-две строк и с десяток полей. А ексель выбран как удобный табличный инструмент, который УЖЕ присутствует на компьютере. И городить огороды с установкой ProjectManager'а или какой-то СУБД, или еще чего-то - ну просто глупо. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2018, 17:00 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
нуб987 The_Prist , давайте остановимся на том, что мне все известно о методах сортировки, ссылках, указателях, массивах и т.п. :) И я точно знаю, что компьютеру совсем несложно привязаться к ячейке, куда бы она не была перемещена. .... Ой-ёй-ёй... да... Если так, то может быть вам не менее всё известно о разнице между данными и алгоритмами работы с ними. Сортируют данные. А строки работающего алгоритма, кроме компилятора, никто не переставляет. И даже когда компилятор переставляет их, это не называется сортировкой. Парень, чем протирать портки в измышлениях без руля и ветрил на тему сохранения топологической идентичности пространственного вычислительного алгоритма при произвольных его геометрических преобразованиях, лучше бы скопировал данные, текущее состояние своей пространственной вычислительной модели, на отдельный лист. И освободившееся от топологических мыслей время сможешь потратить на фильтрацию и сортировку данных, а не алгоритмов. Сортировка данных , по сравнению с сортировкой алгоритмов, существенно более простая задача сама по себе, да ещё и со встроенной в Excel реализацией. PS Это не наезд. Просто совет. Причем - добрый. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2018, 18:08 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
boobyЭто не наезд. Просто совет. Причем - добрый. судя по твоему тексту выше, ты подумал, что я так понтанулся, когда написал, что мне известно об указателях, методах сортировки и т.п. Нет, не понтовался (тут на форуме каждый второй программист или администратор баз, или чего-то еще, с головой гораздо больше моей). Просто странно было слышать мнение, что екселю трудно сортировать формулы. Ему не трудно, отвечаю. boobyлучше бы скопировал данные <...> на отдельный лист. И освободившееся от топологических мыслей время сможешь потратить на фильтрацию и сортировку данных, а не алгоритмов. я думал, что в екселе это где-то на поверхности и мне сейчас подскажут, какую кнопку нажать, чтобы получить желаемое. Но либо никто не знает об этой кнопке, либо ее нет. Тогда да, придется самому копировать данные, сортировать, а потом ручонками писать формулы обратно. Все как в стародавние времена с перфокартами и большими калькуляторами ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2018, 22:52 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
нуб987... Все как в стародавние времена с перфокартами и большими калькуляторами вот ведь ять... нуб987странно было слышать мнение, что екселю трудно сортировать формулы. Ему не трудно, отвечаю. мне не интересны ни удивления, ни убежденности. Это вообще-то не вопрос. Возьми, да научи его, как надо. Для персонально твоего, маленького случая, это не составит сложности даже и особенно для тебя. нуб987Тогда да, придется самому копировать данные, сортировать, а потом ручонками писать формулы обратно. вот про ручонки - безоговорочно верю. Не требуя доказательств. PS Будешь возвращаться к топику, не забывай перечитывать про портки. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2018, 23:48 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
boobyВозьми, да научи его, как надо. да научил уже добавил костылей.... добавил поле, заполненное по порядку при сортировке в поле "дата нач" (которое считается как дата пред.ячейки + 1) написал такую формулу: =ИНДЕКС(D:D;ПОИСКПОЗ(<столбец с порядковым номером отсортированной строки>-1;B:B;0))+1 думал, что ексель сам нормально сделает. Тему можно закрывать. Ну или кто знает, напишите плз нормальный способ сортировки с формулами ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2018, 00:41 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
Используй относительные формулы. Используй нотацию R1C1. Исключи столбцы C и D из сортируемого диапазона. Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2018, 09:53 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
нуб987, Выделите в таблице например 3 строку данных, Ctrl+x, выделите первую ячейку в первой строку данных, правый клик - Вставить вырезанные ячейки. Связь формул сохранилась? Отлично! Осталось написать макрос, который определит порядок строк после сортировки в нужном столбце и переместит строки этим методом. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2018, 10:34 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
нуб987 Dimonka , так мне потом работать надо с исходной таблицей и всеми ее формулами. А если я копию создам, то там и формул не будет, а останутся только значения. Или вы что-то другое имеете в виду? Ты создай копию таблицы, которая будет ссылаться на оригинальную таблицу. Она прекрасно отсортируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 13:44 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
DimonkaТы создай копию таблицы, которая будет ссылаться на оригинальную таблицу. Она прекрасно отсортируется. нет, это не то нужно отсортировать таблицу по одному из полей (по ФИО, например), изменить какие-то даты или кол-во дней, а потом вернуть сортировку обратно при этом формулы дат ссылаются на предыдущие ячейки в своем столбце в общем, это не так просто объяснить и отличным решением было бы наличие возможности сортировки с привязки формул к перемещаемым ячейкам. но раз ексель так не умеет или мы об этом не знаем, то были придуманы костыли с доп.полем и "индекс(поискпоз(...". Проблема, хоть и криво-косо-с-костылями, но решена. Думаю, если бы ексель умел сортировать корректно формулы, мы бы это здесь давно узнали бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 15:29 |
|
EXCEL сортировка с сохранением формул
|
|||
---|---|---|---|
#18+
значит надо добавить слева уникальный ключ (табельный номер например, потому как ФИО неуникальные), и заменить формулы прямой ссылки =D2+1 на формулы динамической ссылки по ключу =ВПР(табельный;столбец табельного;5;ЛОЖЬ)+1 ессно будет заметно медленнее считать на большом массиве. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 08:59 |
|
|
start [/forum/topic.php?fid=61&fpage=16&tid=2172321]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 312ms |
total: | 466ms |
0 / 0 |