Pull to refresh

Comments 12

Это хорошо) Интересно, в Excel такая штука когда-нибудь появится, или нет) Хотя у него своих плюсов предостаточно, которых в гугле не хватает.

А чего конкретно в Excel не хватает в части описанного функционала? Data validation есть, Conditional Formatting есть. Только что сделать и то, и другое в один приём не получится. Но список значений для Data Validation обычно всё же не в самом правиле удобно настраивать, а вынести все справочники на отдельный лист и ссылаться на range, - а в таком случае и у Google Sheets форматирование автоматически не переносится.

Если это очень частая операция - то функционал "создать data validation по определённому range + правила conditional formatting, задающие такой же формат для каждого из значений, какой сейчас у них в этом range" делается элементарным макросом.

Конкретно возможности в одном месте, в удобном интерфейсе настроить. Понятное дело, что в Excel, как и раньше, будем из диапазона делать, но вот у меня на примере контент-плана — всего 4 стадии, и на отдельный лист их выносить, потом настраивать форматирование на каждый вариант, а оно еще может сбиться по столбцам — тогда у всех 4 правил править диапазон. А тут просто выделил нужные ячейки, накидал 4 варианта, указал цвет — и готово. С точки зрения создания простого списка, там, где не нужен сложный — чисто по UX удобнее, речь об этом.

Ну да, наверное. Но тут как и в программировании - всегда лучше заранее выделить логически изолированный кусок кода в отдельную функцию/класс/модуль и т.п., даже если пока что они используются только в одном месте, чем потом заниматься безудержной копипастой с сопутствующими ей ошибками :) Так что я даже справочник из значений "Да" и "Нет" помещаю на отдельный скрытый листик и на него ссылаюсь. Вдруг потом придётся добавить "Не знаю" или "Всё неоднозначно" :)

И вот уж на что на VBA не помню сколько лет ничего не писал, но работающий прототип макроса "сделать data validation с переносом форматирования" набросал за 10 минут:

Hidden text
Option Explicit

Public Sub CreateFormatedDataValidation()

Dim target_range As Range
Dim source_range As Range
Dim source_range_str As String
Dim source_cell As Range
Dim source_cell_format As Variant

    Set target_range = Selection
    
    If Not target_range Is Nothing Then

        source_range_str = InputBox("Enter source range:", "Enter source range")
        On Error Resume Next
        Set source_range = Range(source_range_str)
        On Error GoTo 0
        
        If source_range Is Nothing Then
            MsgBox "Invalid range specified!", vbCritical, "Invalid range"
            Exit Sub
        Else
            target_range.Validation.Add xlValidateList, xlValidAlertStop, xlEqual, "=" + source_range.Address
            
            For Each source_cell In source_range
                source_cell_format = source_cell.Font.Color
                target_range.FormatConditions.Add(xlCellValue, xlEqual, "=" + source_cell.Address).Font.Color = source_cell_format
            Next
            
        End If
        
    End If
    
End Sub

Его, конечно, ещё допиливать надо. Переносится только цвет шрифта. Не работает, если range для validation на другом листе. Не работает, если правило data validation уже существует и надо его обновить. Диалоговое окошко для ввода source range надо бы поменять на форму, которая позволит этот range мышкой выделить на листе. Обработка ошибок только базовая... Ну ещё час потратить придётся, да, зато потом и быстро, и идеологически правильно :)

Я помню на работе делал сотрудникам форму определенных расчетов в Excel, с вытягиванием данных из базы данных на сервере. Хотелось очень много интерактивных элементов и фишечек сделать, обвесил кучей макросов. Но все равно — свои ограничения Excel накладывает, поэтому в итоге плюнул и сделал простенькое веб-приложение — и новые фичи внедрять, и старые поддерживать стало в разы легче.

Поэтому сейчас, если что-то потенциально сложнее сводных и пары-тройки простых макросов вижу на горизонте, чешу репу на тему "не сделать ли это сразу в вебе?".

Это к тому, что понятно, что в Excel можно много накуролесить при желании, сам люблю)) Но все таки для разных задачи удобнее использовать подходящие инструменты. И в частности, что Google сделал — для своих задач вполне прикольный инструмент. Возможность с условным форматированием и диапазонами работать они же не убирали)

Вот по поводу "не сделать ли сразу Web-приложение?" двумя руками за, мысль такая возникает постоянно. Пусть даже на low-code / no-code платформе типа Retool - возможности сразу открываются на порядок бóльшие. Но очень часто того времени, которое нужно, чтобы это сделать, как раз и нет...

А вот по поводу Google Sheets/Docs по сравнению с Excel/Word - это у меня больная тема, потому что восторженные любители Гугла очень склонны "хоронить" Office - а на поверку выясняется, что гугловские поделия и малой доли функционала Office не реализуют... Но для быстрой организации общего доступа они таки удобнее, тут спора нет.

В общем, каждому инструменту свою нишу. В конце концов, бóльшую часть работы с табличными данными приходится вообще делать в OpenRefine (для приведения к пристойному виду) и Apache Spark (для последующих манипуляций), поскольку ни приложения Office, ни гугловские сервисы с десятками миллионов строк нормально работать не умеют...

Про десятки миллионов строк — больная тема. На днях в Таблице контент плана в Гугле нажал "Добавить строки", но вместо 1 получилось случайно 10001. И файл сдох, натурально — открыть невозможно, не то что строки удалить.

Хорошо что у меня большинство гугл таблиц — это xlsx файлы с компа, которые синхронизируются с гугл диском, и я просто Экселевский файлик скопировал и оформление пришлось поправить немного.

По поводу веб-приложений мне в этом плане MODX симпатизирует, так как из коробки весь основной функционал есть, остается быстренько структуру и шаблоны накидать.

Вынашиваю наполеоновские планы по изучению laravel, но, как известно, планы != действия)

Если десятки миллионов строк надо не просто самому перелопатить, а ещё и пользователям в каком-то удобном и не тормозящем интерфейсе представить, - это всё, тушите свет. И вот тут ни один фреймворк не поможет, надо искать сильно специализированные решения, которые умеют подгружать данные по запросу. На одном проекте, где такая потребность возникала, начинал тестировать NReco PivotData, но проект завершился до перехода в production, так что рекомендовать не могу.

Ну как вариант, если эти данные просто проанализировать типа сводок или дашборда, а не редактировать — в тот же Excel подгружать, только не на лист, а в модель данных, там 2 млрд строк вроде ограничение. Ну а если редактировать — наверное проще базу данных создать и как раз в вебе форму накидать, чтобы частями выводить данные и обратно отправлять.

Ограничения это одно, а вот скорость реакции того же Excel при, скажем, изменении фильтра - это совсем другое... вешается он намертво даже на топовой для пользовательского компьютера конфигурации.

С веб-приложениями другая беда - бóльшая часть фротнэнд-компонентов для отображения таблиц хотят сразу утянуть с бекэнда все данные и дальше фильровать/группировать/т.п. их уже на клиенте. При тех самых миллионах строк результат немного предсказуем - томительное ожидание первоначальной загрузки и тормоза (хорошо, если не OoM) при любых манипуляциях с ними. Выход - ищем компоненты, которые умеют запрашивать с сервера только ту часть данных, которую надо отобразить здесь и сейчас, а все задачи по их обработке / пагинации / фильтрации / сортировке / группировке спихнуть на бекэнд. Вот в поисках такого я на уже упомянутый NReco PivotData и наткнулся. По первому впечатлению - оно. Но серьёзно потестировать не получилось, проект накрылся по совершенно другим причинам.

Понял. Ну с берега мне кажется просто нужно найти Js библиотеку для создания интерактивных таблиц, а параметры фильтрации в параметрах URL передавать, и на сервере расписать логику выборки части строк. Потом при отправку на сервер по ID строки сопоставить данные для обновления. Но я такое не делал, поэтому конкретных инструментов не подскажу(

Sign up to leave a comment.

Other news