Ответы пользователя по тегу Excel
  • Есть ли в excel формула вставки строк?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Функция, встроенная или определённая пользователем, при использовании в формуле ячейки НЕ МОЖЕТ ИЗМЕНЯТЬ ЗНАЧЕНИЯ ЯЧЕЕК. В принципе не может. А любая такая попытка в определённой пользователем функции немедленно приводит к ошибке и аварийному завершению работы функции.
    Ответ написан
    Комментировать
  • Макросов VBA Excel?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Адреса диапазонов в константу, в коде парсим и используем.
    Const Addresses As String = "E7:E14,F7:F14,G7:G14,G21:G108,H7:H14"
    
    Sub ...
    ...
    For Each RangeAddress In Split(Addresses, ",")
        Workbooks("srcX.xlsx").Sheets("SheetY").Range(RangeAddress).Copy Workbooks("dst.xlsx").Sheets("SheetZ").Range(RangeAddress)    
    Next


    Адреса диапазонов назначения тоже могут быть собраны в константу. А для обработки нескольких файлов дополнительно считать смещение и задействовать метод Range.Offset.
    Ответ написан
    1 комментарий
  • В какой базе данных лучше всего хранить данные для дашбордов?

    @Akina
    Сетевой и системный админ, SQL-программист.
    а что делать с реляционной бд

    А ничего. НЕ хранить ежедневные итоги. Только приходы и уходы. И самая первая запись - только приход (начальный баланс), если начинаем не с пустой кассы. А сумму с накоплением считаем непосредственно в запросе, в тот момент, когда потребовался отчёт.

    Ну или как вариант - хранить в отдельной таблице базовую сумму (начальный баланс периода), скажем, на начало месяца или там года, и от неё уже начинать считать.
    Ответ написан
    1 комментарий
  • Как из word перенести таблицу в Excel с сохранением стилей и форматом?

    @Akina
    Сетевой и системный админ, SQL-программист.
    чтобы ничего не двигать не редактировать

    Нет, нельзя. Ширина колонки и высота строки - это именно атрибут колонки/строки. А не прямоугольного диапазона ячеек, в который выполнится вставка. Так что двигать - придётся.

    Всё остальное (шрифты, цвета, заливка, выравнивание и пр.) должно копироваться нормально. При условии, что задано явно, а не используется дефолтная настройка. И при условии, что диапазон назначения заранее настроен на тип данных текстовый. Иначе преобразований некоторых значений в даты, выравнивание чисел по правому краю и прочих прелестей не избежать...

    PS. Можно эту таблицу вставлять не как значения ячеек, а как объект Документ MS Word. Вот тогда точно ничего не уплывёт.
    Ответ написан
    4 комментария
  • Как подставить url на весь столбик?

    @Akina
    Сетевой и системный админ, SQL-программист.
    • Выделить диапазон с числами.
    • Alt-F11
    • Ctrl-G
    • ввести
      for each onecell in selection:onecell.value="https://d21skl.com/"&onecell.value:next

    • Enter
    • Alt-F4
    • Alt-F4

    Ответ написан
    Комментировать
  • Как сравнить данные в нескольких excel файлах?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Скопируйте данные из 2-4 файлов на листы 2-4 книги 1 (или сразу листы целиком). Можно и не копировать, но так проще, не надо держать открытыми 4 книги, да и финальная конструкция получается переносимой.
    Используя ВПР(), в дополнительные колонки на листе 1 скопируйте данные с листов 2-4.
    Окончательно в дополнительных колонках на листе 1 с помощью ЕСЛИ + ЕПУСТО/ЕНД соберите из 4 значений одно финальное для каждого атрибута.
    Замените формулы на значения.
    Удалите промежуточные колонки.
    Всё.

    Пример для 4 книг, без копирования. Приоритет - 1,2,3,4.
    64421a32e9e09520530134.png
    Ответ написан
    Комментировать
  • Какую роль выполняет команда Call в языке VBA?

    @Akina
    Сетевой и системный админ, SQL-программист.
    При использовании оператора Call с процедурой параметры вызываемой процедуры оборачиваются скобками. Если оператор опускаем, то опускаем и скобки.

    Call mysub(param_1, param_2) ' правильно
    mysub param_1, param_2       ' правильно
    mysub(param_1, param_2)      ' ошибка синтаксиса


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

    output = myfunc(param_1, param_2) ' правильно
    Call myfunc(param_1, param_2)     ' правильно
    Call myfunc param_1, param_2      ' ошибка синтаксиса
    myfunc(param_1, param_2)          ' ошибка синтаксиса
    Ответ написан
    Комментировать
  • Какое регулярное выражение использовать, что бы достать из текста все цифры?

    @Akina
    Сетевой и системный админ, SQL-программист.
    \S*\d\S*
    https://regex101.com/r/bzUbiN/1

    нужно из неё вытащить, то что выделено жирным

    Показанный результат не соответствует условию. С какого перепугу в последнем токене отрезан начальный символ "№"? а в третьем и четвёртом - финальное "г."?
    Ответ написан
    Комментировать
  • Как сделать поиск в ячейке по знаку " с помощью VBA?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Для поиска двойной кавычки используется строковый литерал из четырёх двойных кавычек
    Instr(start, variable, """")
    Первая и последняя обрамляют литерал, вторая и третья образуют удвоенную двойную кавычку, которая интерпретируется как квотированная/экранированная.

    Есть и более простой способ.
    Instr(start, variable, Chr(34))

    -=о=--=о=--=о=--=о=--=о=--=о=--=о=-

    У меня в ячейки есть текст:
    ДООП "Лабаратория Хлеба" естественно-научной направленности

    Надо что бы она в соседнюю ячейку написал:
    ДООП "Лабаратория Хлеба"

    Если ты точно знаешь, что значение содержит не менее 2 двойных кавычек, и нужно отделить именно до второй включительно, можно так:
    Function get2dquotes(source As String) As String
        Dim tmp() As String
        tmp = Split(source, Chr(34))
        get2dquotes = tmp(0) & Chr(34) & tmp(1) & Chr(34)
    End Function

    И соответственно потом B1=get2dquotes(A1).
    Ответ написан
    1 комментарий
  • Насчет экспорта таблицы MySQL в Excel средствами PHP?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Выполняем SELECT .. INTO OUTFILE, полученный CSV прекрасно читается в Excel. Т.е. PHP выполняет указанный запрос, а потом, если надо, организует перемещение полученного CSV в нужное место.
    Ответ написан
  • Как скопировать открытый файл vba скриптом?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Вот нафига было удалять предыдущую версию вопроса?

    Ладно, повторю. У FileSystemObject нет метода Copy, он есть у объектов Folder и File. Следовательно,

    Set File = fso.GetFile(ThisWorkbook.Path & "\doc.docm")
    Set File = fso File.Copy("%Temp%\d6c.docm")

    PS. Что такое "открытый файл", где, кем и вообще почему он открытый - так и не понял.
    Ответ написан
  • Сбор сведений в общую Excel-таблицу от нескольких работников без гугл-форм?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Начните с формализации данных. Хотя бы введите единообразие наименований (наименование должно выбираться из списка, а не вводиться в свободной форме, либо должна заполняться форма со всеми возможными наименованиями) и формата представления данных. Это задача 1.
    Задача 2 - решить, в каком виде будет заполняться ежедневная форма. Веб-форма тут в общем вполне подойдёт. На гугле свет клином не сошёлся - есть те же яндекс-документы, например...
    Задача 3 - передача готовой формы. Тут я бы рекомендовал выгрузку в локальный CSV и отправку по электронной почте. Это контролируемый и протоколируемый канал, бесполезно говорить, что письмо было отправлено вовремя, если его нет в отправленных или если дата отправки - безнадёжно просроченная.
    Задача 4 - загрузка полученных данных в единое хранилище. Тут уже можно думать о приличной СУБД. Ну а её штатных клиентских средств для загрузки - за глаза.
    Задача 5 - аналитика. Имея данные в БД, получать аналитику в любых формах и разрезах - не проблема.
    Ну и задача 6 - формирование красивых выходных документов с результатами анализа. Тоже не сказать что проблема.
    Ответ написан
    2 комментария
  • Нужно добавить текст к уже имеющемуся в ячейках Excel. Какую формулу использовать?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Никакую.
    Формула не может изменить другую ячейку. Формула не может именно изменить себя - только посчитать новое значение.
    Это делается либо формулой в отдельном столбце с последующей заменой исходного столбца на рассчитанные значения, либо процедурой на VBA.
    Ответ написан
    1 комментарий
  • Преобразование строк в столбцы?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Расписываю по шагам.

    1. В ячейку B1 вставить формулу =A2. В ячейку С1 вставить формулу =A3. И так далее до E1=A5.
    2. Выделить ячейки B1-E1.
    3. Выполнить двойной щелчок по маленькому кубику в нижнем правом углу выделения. Записи размножатся вниз.
    4. Не сбрасывая выделения, нажать "Копировать".
    5. Не сбрасывая выделения, нажать "Специальная вставка - значения".
    6. Выделить столбец A. Выполнить Сортировка от А до Я. Согласиться на авторасширение диапазона.
    7. Выделить и удалить все строки, которые НЕ начинаются с даты.

    Всё.

    Если надо делать регулярно - записать макрос. Строки для удаления тогда найти поиском (например, по слову "Продажа").
    Ответ написан
  • Как сделать модуль VBA по умолчанию при создании книги Excel?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Есть минимум два варианта.
    Первый - предпочтительный, но ссылку на него уже дал datka.
    Второй - откорректировать шаблон по умолчанию. См. тут
    Ответ написан
    Комментировать
  • Поиск дублируюших строк в Excel?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Условное форматирование решает элементарно.
    На скриншоте - правило для диапазона B:B. Аналогичное правило делается для A:A.

    614c4aefbbc3b950976031.png
    Ответ написан
    7 комментариев
  • Можно ли преобразовать отступы в ячейках в табуляцию?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Сами отступы в табуляции превратить не получится.

    Создайте функцию:
    public function get_indent(rng as range) as integer
        get_indent = rng.indentlevel
    end function


    В отдельной колонке используйте её:
    B1 = get_indent(A1)

    Соответственно при экспорте Вы получите дополнительную колонку с уровнем. После импорта - используйте это значение.

    Альтернативно можете ещё в одной колонке на основании значений навтыкать в начало нужное количество табуляций, и экспортировать только эту колонку.
    Ответ написан
    3 комментария
  • Как узнать, что ячейка является объединенной?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Для определения, является ли ячейка объединённой, есть куча способов.

    Например, cell.CurrentRegion.Count возвращает количество отдельных ячеек объекта cell - соответственно для объединённой ячейки он вернёт значение больше единицы.

    Если ячейка является объединённой, то противоположный угол можно получить так: cell.Offset(1,1).Offset(-1,-1).Address. Зная ядрес ячейки и адрес противоположного угла, несложно обычной конкатенацией построить адрес для обратного объединения.
    Ответ написан
    Комментировать