Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
"Подхожу к бухгалтерии — какая-то подозрительная тишина. Ну, точно, по сети в Ехсеl шпилят."
Уже было что то похожее )
https://habrahabr.ru/post/237641/
Когда сам Doom на Excel портируют?
Как реализовывать списки (List) с переменным количеством значений/элементов?Начните с изучения абсолютных/относительных ссылок, функции СМЕЩ() и Диспетчера имён. Можно создавать даже многоуровневые списки, что уменьшит количество элементов.
Вопрос, куда еще растягивать формулу, если на листе всего 1048576 строк?Дело не в бесконечном растягивании, а в автоматическом, без вмешательства пользователя.
Претензия уровня возможного переполнение Int при складывании двух больших чисел. Выкидываем все языки программирования, ибо думать надо?А если рассмотреть другую возможность, то даже имея мощный компьютер, но при наличии более масштабной задачи, то лимита в миллион строк — очень мало. Что касается ограничения Int, то Int64 (или даже Int32) — не миллион строк, даже близко, плюс в многих языках есть структуры, благодаря которым мы можем добавлять измерения, буквально до бесконечности и никаких ограничений, а с правильным алгоритмом ввода-вывода на хард проблем с лимитом ОЗУ не возникнет, даже на старом калькуляторе запашет. А что Excel!? Ну продублировали мы эту бесконечную таблицу из 2х колонок с ~миллионом строк на всю остальную часть листа, сколько там будет, ~миллион на ~16тыс? ~16777216? Больше, но не на много. И как в таком случае ограничивать? По всем столбцам прыгать и Ctrl+V делать? А если этого будет мало? Создавать клоны-листы? А что с ОЗУ случится? Допустим каждый символ закодирован в UTF-16*2^15(символов в ячейке)*16777216=1 терабайт ОЗУ на лист, и это только чисто содержимое ячеек, без учёта остальных данных (разграничение, связи, итд...), и вряд-ли Excel предусматривает частичный ввод-вывод.
в вашей исходной задаче нет ничего, чтоб требовало автоматического растягивания формулРазве? А это тогда что?
как к примеру реализовать в Excel вычисления с неизвестным заранее объёмом данным? Как реализовывать списки (List) с переменным количеством значений/элементов?
далее мы видим, что интерпретируемын языки не нужны, ибо на калькуляторах тормозят, а под встраиваемые системы так вообще писать невозможноА питончик с такой задачей и такими рамками справится, как и куча других интерпретируемых языков.
плюс прочие аргументы с двиганьем воротЯ всё это изначально говорил. Просто вы не понимаете изначального условия, а я вам досконально расписываю.
слив аргументаЯ не пытаюсь холиварить, а говорю по делу про ограничения.
про инт путем привязке к строкам… банальном суммировании двух больших чисел, главный бич кодеровЯ про структуры, это совершенно разные вещи. А с добавлением измерений в итоге не будет никаких проблем в адресации. На содержимом ячеек это никак не скажется, она и в данный момент избыточна.
любой инструмент имеет ограничения, мозги же вам даны их обходитьМолоток не стеклорез. Excel очень сильно ограничен в вопросе вычислений.
но по вашим сообщениям понятно, что человечество не могло полететь в космос, высадиться на луну, вообще достичь прогресса, ибо у всех инструментов есть ограничения и пользоваться ими, следовательно, нельзяДля этого нужны разные инструменты, для решения разных задач, и да, с одним только Excel'ем на Луну не улетишь. И я бы посмотрел на работника NASA, который просчитывает всю физику в электронной таблице.
если же вам докажут, что можно — превратим задачу в фарс путем ее раздувания до бессмысленных масштабовДело не в масштабах, а в неизвестных заранее объёмах данных. Пример с большим объёмом данных был для того, чтобы вам стало понятно, что невозможно предугадать сколько всего потребуется, а если делать по-максимуму (пределу Excel) — то никаких аппаратных ресурсов не хватит. Но вам, я как я вижу, этого просто не понять.
Это тезис, который вы задачей хотели подтвердить. Неудачно, потому что надуманная претензия.А что тут надуманного? Excel не может в управление содержимым, из этого следуют ограничения, из-за который в плане вычислений (возможностей решения определённых задач) Excel жёстко ограничен.
не требует авторастягивания формулОна сама себя продублирует без скриптов и вмешательства пользователя?
вы тупо не можете взять и вбить в эксель его, дабы понять, м?Зачем вбивать формулы, которые мало того что не рабочие, а вторых примитивны для понимания того, что в них нет ничего чтобы решить поставленную задачу, в которой, напоминаю, фигурирует тезис «неизвестным заранее объёмом данным».
как питон справится с задачей вывести в удобном интерфейсе несколько миллионов строкНу во-первых речь идёт не о интерфейсе, а о вычислениях и данных, а во-вторых — легко. Для этого уже существуют если ещё не сотни, но с десяток точно различных модулей. Конечному-же пользователю/компании нужна готовая компьютерная программа под его задачи, не связанная по рукам и ногам ограничениями электронных таблиц. И я молчу о интерфейсе, а касаюсь только самих вычислений.
куча новых инструментов на старом железе тоже нихрена работать быстро не будут. Вы тупо проекты в визуалстудио не скомпилируете, например, вместо нескольких минут расчетов — они будут идти часами. Но это же проблема экселя, угуОдной программы, написанной под конкретные задачи с неизвестным заранее объёмом данных и скомпилированной всего один раз (релиз-версия), написанной под старое железо — будет более чем достаточно, она будет работать с данными намного быстрее как минимум благодаря строгой типизации и не нужно будет вмешиваться в исходных код дабы отодвинуть ограничитель в виде числа строк, как в экселе это делается раз за разом. Я имел дело с инженерными расчётами, и считать физику в экселе — это просто боль, боль постоянных правок не исходных данных (входных значений), как это должно быть, но и нескольких десятков формул по туче вкладок, т.к. их приходится постоянно растягивать, вчера у тебя максимальная высота столба 8 метров, среди всех столбов что ты до этого считал, сегодня 10 метров, а завтра 100, а послезавтра 500.
Причем учтите, если ваш пример на питоне не сможет в подобие интерфейса экселя, то вы именно тролль.Если в питон засунуть интерфейс экселя — то он и станет экселем (+VBA по-дефолту), а зачем это? Это тонна лишних функций. А насчёт не сможет — гуглите: «PyQt table», или смотрите прямо на ютубе. И при этом не будет ограничений в числе строк.
миллионом строк в вашей задаче, которые должен каким-то образом человек просмотреть и из этих данных что-либо путное глазами получитьА кто говорил про смотреть? Я это где-то упоминал? Задача поставлена «вычислять». Вы сами добавляете условия и сами же к ним придираетесь, и всё больше и больше переходите на личности, что на данном ресурсе — недопустимо. Но даже так — то в конечном продукте/программе — предусмотрена система отчётов, благодаря которой не нужно обязательно просматривать миллионы строк данных. И если, к примеру, что-то где-то «проседает» — это сразу видно на графиках или ещё проще можно добавить индикатор, который бы один раз пробежался по этим данным (не исключено что прямо во время подсчёта) и проверил бы их по условию (например последующее значение должно быть больше предыдущего и так для каждой строки, иначе exception&break с выводом номера строки), всё время обновляя своё значение, для экселя бы в таком случае потребовалась бы очень длинная формула (которая может не влезть в ячейку), либо ещё лишний столбец или столбцы, и то не факт что при всех случаях это вообще возможно. А насчёт посмотреть — «PyQt table».
Как человек, занимавшийся автоматизацией производства и навозившийся с экселямиА вот это очень интересно, вы сможете обновлять таблицу поступающими данными с сохранением предыдущих без VBA и без лишних телодвижений? Т.е. грубо говоря вести статистику методом: «вбил число+дату и нажал на кнопку», дабы потом эти данные обрабатывались в куче формул и так-же сохраняли свои результаты для вынесения определённых решений/корректировок/итд… (про графики и отчёты с прочей GUI'шной составляющей я молчу) Вам просто придётся постоянно двигать и растягивать формулы, постоянно скроллить, и всё это будет тормозить. Доверить такое действие (вбил-нажал) человеку — не проблема, а вот доверить ему правку формул — уже другое, опять же нужен будет VBA. Если у вас всё хорошо — то вы просто не сталкивались с достаточно большим объёмом данных. Рано или поздно вы задумаетесь: «а может всё-таки проще написать скрипт!?»… но это уже за рамками концепции электронных таблиц как таковых. Если таки жизненно необходим эксель за счёт интерфейса — то его можно спаять с питоном, модули для этого уже есть.
Но вы можете посмотреть на работников наса, которые на луну посылали ракеты с помощью перфокарт и об экселе даже не мечтали.И пользовались они не только перфокартами, многие действия/вычисления они производили вручную, перфокарты предыдущие записи со склада не достанут, и в случае отклонений данные не скорректируют (а это всё те же вычисления), в отличии от современного ПО, данный пример лишь демонстрирует ограниченность электронных таблиц, ибо они тоже на такое не способны без сторонней помощи. А вот современные контроллеры (имеется ввиду ещё прошивка, не только хард), несмотря на все свои ограничения как по аппаратной части (это к примеру про современные часы), так и по размеру используемой памяти (ОЗУ), на такое способны.
вы пеняете на инструмент, который чего-то не умеетОн не умеет автоматически контролировать содержимое своих же мест хранения данных (ячеек), для этого нет стандартных функций, для этого приходится задействовать языки программирования. И из этого вытекает просто «тонна» практических ограничений.
=ЕСЛИ_ИЗМ(if;ячейка_которую_нужно_изменить;новое_содержимое)A1=5,41 //новое значение
B1=2,31 //старое значение
C1='=ЕСЛИ_ИЗМ(ОКРУГЛВВЕРХ(A1;0)>ОКРУГЛВВЕРХ(B1;0);СМЕЩ(A2;0;0;ОКРУГЛВВЕРХ(A1;0));"новое_содержимое") //заполнение
D1='=ЕСЛИ_ИЗМ(ОКРУГЛВВЕРХ(A1;0)<ОКРУГЛВВЕРХ(B1;0);СМЕЩ(ОКРУГЛВВЕРХ(A1;0)+2;0;0;ОКРУГЛВВЕРХ(B1;0)-ОКРУГЛВВЕРХ(A1;0);"") //стирание
E2='=ЕСЛИ_ИЗМ(ОКРУГЛВВЕРХ(A1;0)<>ОКРУГЛВВЕРХ(B1;0);B1;A1) //копирует содержимое
PowerPivotБольше чем Excel, но меньше чем Access?
не зная инструмент от слова совсемНу так описанная мной выше функция присутствует?
Все инструменты ограничены. Питон — то же.Питон только как пример, который обладает теми элементарными возможностями, в которые не могут электронные таблицы.
Ах да, для вас трудно осознать, что формулы сами могут управлять отображением и вычислением себя по внешним условиямОтображением да, содержимым — нет. Отсюда и ноги всех ограничений растут.
И отдел программистов, чтоб поправить в ней одну формулу в столбце в случае изменений. Ах да, это пользователи умеют сами и без программистов, а вот формулу растянуть — уже никак, я забыл.Целый отдел не нужен, достаточно лишь одного, и то не обязательно штатного. А что касается навыков пользователей — вы их переоцениваете. И вдобавок это гарантия что с формулами не произойдёт что-то вроде: «ой, оно само сломалось, я не трогал».
миллионы строк расчетов исключительно ни для чего, просто так в табличку выпадают?Как пример — график. Допустим для столба помимо нагрузки сверху нужно учитывать ветровую нагрузку — это ещё столбец как минимум в примитивном примере, в реальном же всё куда сложнее. Допустим столб у нас полый и нам нужно посчитать толщину стенки, при очень большой высоте (или соотношении высота/диаметр) нужно учитывать что столб может погнуться под силой собственного веса и от ветра, особенно если на вершине столба есть очень тяжёлая конструкция (умышленные воздействия, как бегущий головой вперёд неадекват, в условном примере не учитываются), и вот нам нужно рассчитать на каком отрезке (секторе) столба какая толщина должна быть, а делать его не полым — экономически невыгодно (тоже учитываем, можно ещё столбец), ответ алгоритма устойчиво/не устойчиво — нас не устраивают, нам нужно знать слабые места в конструкции, в каждом секторе, на каждом отрезке, и чтобы человеку было наглядно понятно — выводить нужно это в виде графика, а для большей точности — нужно больше данных, если брать только нижнюю и верхнюю часть — то можно пропустить слабое место где-то посередине, место, выше которого давление от веса низкое, а ниже ветровая нагрузка слабее, главное не пропустить эту слабую точку (или область). А если заставить алгоритм самостоятельно подбирать значения толщины на разных отрезках (без циклов, многомерный график с матрицей возможных значений на входе) и реализовывать это в рамках двумерной таблицы — то никаких миллионов строк не хватит. И весь этот океан данных выводится в виде наглядного графика, который может быть многомерным (чем-то вроде графика поверхности, или набором графиков, если вам сложно), который удобен для визуального поиска «проблемных» мест, это не «просто так в табличку выпадают».
.Value и .Replace вам в помощь… тонны эндифов, нет уж спасибо. Если уж использовать язык, то на полную. Учитывая сколько математических библиотек для каждого языка существует, и парсеров к ним — Excel становится практически ненужной записной книжкой, а так-же выступает в роли одноразового калькулятора.
Угу, с учетом, что всем запретят писать на VBA или под ооо в Visual Basic или, та-дам, на Питоне, дабы ваше утверждение хоть капельку стало напоминать истину.Вы сами требовали доказательства с питоном, а теперь оно вам не нравится.
А мнимые ограничения — исключительно из вашей головы.Я уже просил пример управления содержимым.
Прекрасный пример того, что на экселе прототип будет готов через пару деньков, а вот программисту не в теме придется через ваши дебри сознания продираться месяцамиЛюбому человеку «не в теме» потребуется много времени, только для «вникания в тему», в остальном ограничения заключаются лишь в навыках программирования. Если делать что-то очень маленькое, то в экселе — да, быстрее, а если что-то серьёзное — то затрачиваемое время на эксель будет уходить всё больше и больше, в сравнении с языками.
Фейспалм. Если программу писать будете — там же этого всего не будет, кончено. Там же пони радугой какают… Хотя, если вы только эндифами умеете писать — то это ваши тараканы.Язык можно выбрать, и во многих "всего не будет, кончено", VBA — эстетический кошмар. Лично я, не видел других языков для управления экселем «изнутри», да и снаружи лучше взаимодействия с экселем избегать. Версия меняется — всё ломается.
Вы не знаете, что в экселе можно писать собственные функцииКак это делать без VBA — не знаю, покажите.
Вы не знаете, что в модуль листа можно записать функцию, которая будет отрабатывать при изменениях листа (Private Sub Worksheet_Change)С Worksheet Interface я знаком не по наслышке. Изменения обрабатывал через WorksheetChangeEventHandler. Конкретно ваше — это VBA, скрипты, а не стандартные возможности электронных таблиц, о отсутствии которых я писал в самом начале. Но вы почему-то не считаете это ограничением…
Когда вам уже откровенно ткнулиО чём я всё время и говорил: электронные таблицы не могут производить полноценные вычисления без костылей…
в программировании вы нихрена не разбираетесь=)
Ровно один иф на проверку, есть что в ячейке или нетВы наверное не знаете, но когда обрабатывают большие объёмы данных с множеством условий — одного if'а мало. О чём я и говорил. И о чём я не однократно писал — вы просто не работали с достаточно большим объёмом данных.
интерпретируемые языки в пример того, что на калькуляторах тормозить будут и куча других инструментовПитончик работает довольно быстро. Быстрее экселя точно.
подобная задача с нуля на языках программирования будет решаться намного дольшеКакая задача? Писать в одну строку огромные условные конструкции с десятком скобок? Уж да, быстрее и не заблудишься.
потребует от пользователя намного больших усилийКонечному пользователю уж лучше будет пользоваться готовой программой, а не искать в экселе — куда же вбить число.
Итак, хорошо, какого фига вы в качестве доказательства своей позиции искусственно ограничиваете возможности ПО?Я почти в каждом сообщении напоминаю что суть именно в электронной таблице как таковой, а она не обладает данными возможностями. На данном компьютере эксель, а запустил на другом, а там какой-нибудь либре-офис или опен-офис, и гадай будут ли работать эти костыли или нет. Может быть скрипты вообще для безопасности отключены, ибо дыр в них уйма.
Вы не доказали необходимость этой функцииВы просите доказательств очевидного? Любая система обработки данных должна работать с неограниченным (в т.ч. динамическим) объёмом данных, а для этого требуется управление содержимым внутри самой системы. В электронной таблице данной возможности нет. А гарантии работоспособности сторонний костылей нет.
менять отображениеif(a>1;=formula;"") — это не управление содержимым, такие данные не сохраняются в ячейке, это примитивное переключение отображения, уровень детсада.
То есть протягивать формулы пользователи не умеют, а писать проги (особенно на каком-нибудь питоне или С++) — влёт?А зачем это пользователю? Один пишет — другой использует. Это называется разделением обязанностей, запишите, а то забудете, как изначальную причину, по которой я поднял данный вопрос.
А поддержка скриптовых языков в программыДело в электронной таблице.
Вы хвалите языки программирования, потому что под них программисты что угодно напишут, а ругаете Эксель, потому что там расширение должен программист написать. Это не двойные стандарты даже уже. Это писец.Если человек пишет на С++ — он напишет только на нём, практически как и на любом другом языке. Одной только электронной таблицей сыт не будешь, нужны сторонние костыли, гарантии работоспособности которых под другими офисными пакетами — нет.
ДЛЯ НАПИСАНИЯ ТРЕБУЕМОЙ ВАМИ ФУНКЦИИ ТРЕБУЕТСЯ ОДИН IF! ОДИН, бляха-муха… О да, с большими объемами (столбами в 5, 8 и не дай бог 100 метров поделенными на метровые сегменты) только вы работаете. Никто больше в мире.Это максимально примитивный пример, постарался сделать доступным для вашего понимания, в жизни всё куда сложнее, там в скобках просто напросто заблудитесь со своими ЕСЛИ(;;).

Хм, "Бухгалтерия Предприятие" на шейдерах? Что-то в этом есть.
Что используется в качестве постоянно тикающего таймера?
Код с телефона не вижу
а сколько это заняло по времени?
3D-движок, написанный на формулах MS Excel