Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Путем упрощения примера с ошибкой пришел к неожиданному открытию и не знаю как решить эту проблему, Бонус: способ как устроить ошибку "Разрушительный сбой" в абсолютно новом файле
 
Приветствую!

Скачайте пример, зайти в единственный модуль макроса VBA, переименуйте функцию ‘GetText_’ убрав нижнее подчеркивание в конце имени функции. Закройте файл сохранив изменения и при повторном открытии у вас возникнет «Разрушительный сбой», если работа макросов не подавлена.
Файл-пример можете создать сами, если думаете, что дело в специфичных особенностях примера, новый файл будет работать с тем же эффектом в виде разрушительного сбоя, для этого в новом файле сначала создайте таблицу, в единственной строке которой укажите формулу ‘=GetText()’, затем вставьте модуль vba и код функции GetText, закройте файл сохранив его как .xlsm

Тестировалось на  пакетах MS Office 2016 и 2019, 64-бит, на разных машинах.

Теперь вопрос. Разумеется, обнаружил этот способ не от хорошей жизни. Часто ломается файл, где в умной таблице есть формулы с UDF, не зная как решить проблему, я упрощал и упрощал пример ошибки до минимально работающего набора, который ее провоцирует и он перед вами. Я не могу отказаться от умной таблицы и от UDF и от файла .xlsm,  но вместе эти три сущности, кажется, не уживаются, что делать, сталкивался ли кто?
Изменено: Сергей Юрьевич - 05.06.2025 00:21:14
Поделитесь, у кого есть, кодом Fn VBA, которая принимает коллекцию как аргумент и возвращает все ее ключи, (именно ключи, не значения)
 
Привет! Поделитесь, у кого есть, кодом Fn VBA для 64 битного MS Excel, которая принимает коллекцию как аргумент и возвращает все ее ключи (именно ключи, не значения).
Изменено: Сергей Юрьевич - 12.01.2025 05:53:54
У двух умных таблиц разное поведение при удалении DataBodyRange в части форматирования итогов. Файл-пример., Одна из таблиц не сбрасывает формат итогов, другая сбрасывает. Внешне таблицы одинаковы
 
Привет! У двух умных таблиц разное поведение в части форматирования итогов при удалении макросом DataBodyRange.
Одна не сбрасывает формат итогов, другая сбрасывает. Внешне таблицы выглядят абсолютно одинаково и я хотел бы понять в чем дело и как сделать чтобы вторая таблица прекратила переустанавливать формат итогов.
При ручном удалении разницы между таблицами не возникает, не ясно почему разница возникает только при удалении макросом.

Смотрите Лист1 и Лист2 в файле-примере.
Изменено: Сергей Юрьевич - 14.12.2024 01:59:55
формула "СУММПРОИЗВ": не считает если в диапазоне суммирования попался текст, Посмотрите мой пример. Я ввожу условия, которые должны были отсеять текст, но все равно не работает.
 
Здравствуйте! Формула "СУММПРОИЗВ" не будет работать в принципе если в диапазоне суммирования есть текст? Я ввожу условия, которые должны были отсеять текст, но все равно не работает. И второй вопрос в рамках отправленного примера: как сделать чтобы умная таблица не переводила даты в заголовках таблицы в строки (хочу избавиться в моей формуле от ДАТАЗНАЧ, но хочу оставить умную таблицу)

Дополнено спустя время: желательно чтобы числа введеные как текст подсчитывались
Изменено: Сергей Юрьевич - 09.06.2023 04:13:12
Увеличится ли скорость кода VBA, если он сначала опросит все ячейки одного листа и только потом перейдет на второй лист., Задача: считать value 10000 ячеек в массив, ячейки хаотично разбросаны в пределах одной книг
 
Привет!
Меня интересует, увеличится ли скорость работы кода VBA, если он сначала опросит все ячейки одного листа и только потом перейдет на второй лист.
Допустим, нам нужно считать значение 10000 ячеек в массив, сами ячейки разбросаны в пределах одной книги (каждое значение нужно читать по индивидуально назначенному адресу ячейки, оптимизация по общему диапазону невозможна).

Будет ли зависимость скорости от последовательности адресации листов?
Будет ли зависимость скорости от синтаксиса адресации листов?

Второй вопрос можно сузить для краткости - какой синтаксис оптимален для описанной выше задачи, есть ли разница для цикла при задании итерации:


Вариант 1
итерация 1
ThisWorkbook.Sheets("Лист1").Range("A3")
итерация 2
ThisWorkbook.Sheets("Лист2").Range("A2")
итерация 3
ThisWorkbook.Sheets("Лист1").Range("A4")

Вариант 2
итерация 1
ThisWorkbook.Sheets("Лист1").Range("A3")
итерация 2
ThisWorkbook.Sheets("Лист1").Range("A4")
итерация 3
ThisWorkbook.Sheets("Лист2").Range("A2")

Вариант 3
несколько циклов (один в другом)
ThisWorkbook.Sheets("Лист1").Select
'код обращения к адресам нужных ячеек без указания листа
ThisWorkbook.Sheets("Лист2").Select
'код обращения к адресам нужных ячеек без указания листа


P.s. Еще вопрос про скорость который меня волнует, если можно)
Это нормальная практика объединять с разделителем несколько значений в String разной длины и засовывать в массив, делая String последним уровнем вложения в структуре данных? Извлекается от от туда только один раз, поиск мне не нужен. Переживаю за скорость. Или лучше заменить на коллекцию?)
Изменено: Сергей Юрьевич - 29.10.2022 01:18:36
Нужна формула для вывода в одной ячейке номеров всех участков для заданного периода., Формула вроде ВПР, перечисляющая все значения, удовлетворяющие запрос, через разделитель.
 

Приветствую!

Нужна формула вроде ВПР, перечисляющая все уникальные значения, удовлетворяющие запрос через какой-то разделитель, скажем пробел либо запятую!

В прилагаемом примере даны идентификаторы работ, даты, номера участков (могут дублироваться в периоде). Нужен вывод всех уникальных участков для идентификатора внутри заданного периода (в примере предлагается выводить уникальные значения отдельно за 2018, 2019, 2020 и вместе за 2018-2020).

Вывод в одной ячейке! Формат не важен, можно как в примере через запятую или даже так: {1} или {1, 2, 3}, если это сделает работу формулы быстрее.

Задача стоящая передо мной: понятно для глаз вывести в одной ячейке все участки в периоде!

Спасибо!

Изменено: Сергей Юрьевич - 12.03.2022 11:13:14
Как заставить макрос дождаться завершения работы других макросов., запросы PQ
 
Добрый день!
Как заставить макрос дождаться завершения работы других макросов? Нужен код.
Изменено: vikttur - 25.11.2021 11:16:53
Выбор (формулой) максимального значения с самым высоким приоритетом из ряда значений
 
Добрый день!
Помогите решить задачу.
Есть ряд цифр из которых нужно выбрать одно значение исходя из условий:
1. Выбранное значение должно быть одно и с максимально высоким приоритетом (1- это максимум).
2. Если приоритет равен, а значений несколько- то выбирается максимальная цифра из ряда с одинаковым приоритетом.
3. Значение 0 или пусто обрабатывать одинаков - искать другие значения.
4. Найденное значение должно быть более 0, ноль возможен только если весь ряд нулевой (в принципе нет значений выше 0)
5. Приоритет не задан - игнорировать (значения без заданного приоритета не брать)
PQ. При попытке загрузки таблицы ошибка "Не допускается перекрытие результатов запроса и таблицы..."
 
Добрый день! После критического повреждения файла эксель создаю реплику старого файла и возникла неожиданная сложность - при копировании запроса из поврежденного файла в новый, абсолютно идентичный файл, пересаженный запрос выгружает результаты с созданием нового листа, а мне не надо на новый лист - мне нужно воссоздать прежнюю структуру документа и "заставить" запрос загрузить в ранее существующую под этот запрос таблицу. Удалить таблицу и сделать ее заново не смогу - для этого потребуется переписать множество формул, кроме того таких таблиц у меня 9 штук.
Изменено: Сергей Юрьевич - 26.10.2021 13:39:32
Файл отказывается сохраняться (критическая ошибка), с сообщением, что файл поврежден настолько серьезно что восстановить его не удалось
 
Здраствуйте! Помогите понять что требуется исправить в исходом файле.
Имеется файл формата .xlsm (исходный вариант), который вроде как работает без нареканий, но вот когда сотрудники фирмы берут его в качестве шаблона, после чего несколько раз у себя сохраняют с различными вариациями незначительных изменений и вот уже эти реплики, по не ясной мне причине, после изменений, иной раз, сохраняются нормально, а в другой раз, отказываются сохраняться с сообщением, что файл поврежден настолько серьезно что восстановить его не удалось:

Журнал восстановления:
Скрытый текст

Во вложении я дам ссылку на архив в котором будут два файла - рабочий исходник и реплика с него, которая дает ошибку при попытке ее сохранить в каком бы то ни было формате (и даже просто при нажатии на сохранить):
https://disk.yandex.ru/d/2cQoUrjMYXOrXg
Изменено: Сергей Юрьевич - 19.10.2021 08:06:15
Как убрать "разрушительный сбой" функции в 32-х разрядной версии эксель, Выкладываю код одной из функций, которая работает в 64-х разрядной версии эксель, но не работает на 32-х разрядной версии эксель
 
Всем привет!
Выкладываю код одной из функций, которая работает в 64-х разрядной версии эксель, но выдает  "разрушительный сбой" на 32-х разрядной версии эксель.
Я гуглил о проблеме и так понял это связанно с "option explicit", который прописан в модуле "Эта книга".
Не нашел как адаптироваться если функций в книге несколько.
В общем мне нужно чтобы все мои функции книги работали на обоих версиях экселя
Откликнувшимся большое спасибо!
Код
Function SUMMPROPIS(n As Double) As String
 
 Dim Nums1, Nums2, Nums3, Nums4 As Variant
 
 Nums1 = Array("", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
 Nums2 = Array("", "десять ", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", _
                        "восемьдесят ", "девяносто ")
 Nums3 = Array("", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", _
                        "восемьсот ", "девятьсот ")
 Nums4 = Array("", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
 Nums5 = Array("десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", _
                        "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать ")
 
 If n <= 0 Then
   SUMMPROPIS = "ноль"
   Exit Function
 End If
 'разделяем число на разряды, используя вспомогательную функцию Class
 ed = Class(n, 1)
 dec = Class(n, 2)
 sot = Class(n, 3)
 tys = Class(n, 4)
 dectys = Class(n, 5)
 sottys = Class(n, 6)
 mil = Class(n, 7)
 decmil = Class(n, 8)
 
 'проверяем миллионы
 Select Case decmil
   Case 1
     mil_txt = Nums5(mil) & "миллионов "
     GoTo www
   Case 2 To 9
     decmil_txt = Nums2(decmil)
 End Select
 Select Case mil
   Case 1
     mil_txt = Nums1(mil) & "миллион "
   Case 2, 3, 4
     mil_txt = Nums1(mil) & "миллиона "
   Case 5 To 20
     mil_txt = Nums1(mil) & "миллионов "
 End Select
www:
 sottys_txt = Nums3(sottys)
 'проверяем тысячи
 Select Case dectys
   Case 1
     tys_txt = Nums5(tys) & "тысяч "
     GoTo eee
   Case 2 To 9
     dectys_txt = Nums2(dectys)
 End Select
 Select Case tys
   Case 0
     If dectys > 0 Then tys_txt = Nums4(tys) & "тысяч "
   Case 1
     tys_txt = Nums4(tys) & "тысяча "
   Case 2, 3, 4
     tys_txt = Nums4(tys) & "тысячи "
   Case 5 To 9
     tys_txt = Nums4(tys) & "тысяч "
 End Select
 If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & " тысяч "
eee:
 sot_txt = Nums3(sot)
 'проверяем десятки
 Select Case dec
   Case 1
     ed_txt = Nums5(ed)
     GoTo rrr
   Case 2 To 9
     dec_txt = Nums2(dec)
 End Select
 
 ed_txt = Nums1(ed)
rrr:
 'формируем итоговую строку
 SUMMPROPIS = decmil_txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt
End Function

'вспомогательная функция для выделения из числа разрядов
Private Function Class(M, I)
  Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))
End Function
Удобное внедрение языка программирования "Python" в файл Excel на основе портативной сборки Python, Настроенный файл Excel для удобного вызова скриптов Python из Excel
 

Всем привет!
Хочу поделится наработками, которые получились в процессе реализации своих задач.
Может описываемое тут кому-то покажется банальным, но в сети мало информации по конкретным действиям. Я много потратил времени на поиски того как в удобной форме подружить Excel и Python. Ниже подробно расписываю, что нужно делать чтобы работа с "Python" в файл Excel стала удобной, а главное чтобы файл эксель можно удобно было передать другому человеку, который ничего не знает о программировании и у которого на компьютере отсутствует Python и при этом все работало (это возможно если установить Python на общем сетевом диске или передать файл вместе с папкой в которой установлен Python).

Идея не моя, вдохновителем улучшений является сайт https://www.xlwings.org.

Во вложении имеется файл Excel из которого возможен удобный запуск скриптов языка программирования "Python" (точно такой же как запуск макросов VBA).
На сайте https://www.xlwings.org/ автономная работа файла Excel с кодом Python предлагается только по платной подписке до версии "PRO", а бесплатные решения, предлагаемые на сайте не так удобны, так как требуют чтобы скрипт с расширением ".py" размещался отдельным файлом в той же папке что и файл Excel и был назван тем же именем что и файл Excel.
Удобная возможность запуска языка программирования "Python" из файла Excel базируется на трех решениях:

1. Портативная сборка интерпретатора языка Python
https://sourceforge.net/projects/winpython/files/

По ссылке предлагается несколько вариантов: с предустановленными библиотеками и без. Нет разницы в том что вы выберете, чтобы вес портативной сборки был меньше я беру голую сборку (голую сборку определить можно по весу скачиваемого файла - около 25мб). Разархивируйте скаченную папку в любое место на компьютере или в сети (на работе).

Шаг 1. Установить библиотеку "xlwings" для Python в "WinPython Command Prompt.exe":
Код
pip install xlwings

Шаг 2. Скачайте файл "My_project.xlsm" и открыв его пропишите путь к файлу "python.exe" в ячейке b1 на листе "xlwings.conf".
У меня этот путь выглядит так:
C:\Winpython64-3.10.1\python-3.10.1.amd64\python.exe

По совершению указанных действий папка с Python (и библиотекой "xlwings") станет портативной, ничего не слетит, если вы поставите другие библиотеки и затем решите переместить эту папку в другое место на своем компьютере или поделитесь папкой с коллегой. При перемещении сборки на другой компьютер она сможет работать с файлом My_project.xlsm, требуется только задать правильно путь в ячейке b1 на листе "xlwings.conf" (шаг 2).

2. Файл Excel с модулем "xlwings" для удобной работы с библиотекой "xlwings" для Python

https://www.xlwings.org/

Чтобы во всем этом разобраться, рекомендую ознакомится с документацией, но если у вас есть время на чтение понятной литературы, то рекомендую бесплатно cкачать и прочесть "Python for Excel" от автора этой библиотеки (Felix Zumstein). Книга на английском языке. Ориентирована на людей мало знающих программирование, все хорошо объясняется с азов. Гугл хром отлично переводит и сайт и книгу.
Некоторые подробности, которые будут полезны по мере погружения в изучение библиотеки "xlwings":
надстройка Excel "xlwings" для работы файла не используется, у меня  она даже не установлена.
Исходным файлом является файл "Standalone", который после установки библиотеки "xlwings" (о том как установить библиотеку я написал в 1 пункте) вы сможете найти тут:
"Ваша папка с Python"\App\Python\Lib\site-packages\xlwings\quickstart_standalone.xlsm"
Из исходного файла я взял лист "xlwings.conf" и модуль VBA "xlwings", этот модуль вы можете обнаружить через штатный редактор VBA. Подробности о Standalone-версии, по-моему, есть только в упомянутой книге "Python for Excel". А на сайте информации, к сожалению, не много, - смотрите Alternative: Standalone VBA module.
Отличие моего файла от исходного файла "Standalone" в том, что для его работы не требуется размещать скрипт Python в той же папке и под тем же именем что и файл Excel. На сайте https://www.xlwings.org/ опция со спрятанным кодом Python внутри книги Excel предлагается только по платной подписке до версии "PRO", и эта платная возможность реализована там каким-то другим способом (не тем, которому я даю описание).

3. Хранилище файлов из листа Excel.

https://www.cyberforum.ru/blogs/829006/blog4964.html

Позволяет хранить скрипты с кодом Python прямо в файле Excel.
Если бы не нашлось этого решения, пришлось бы хранить файлы с расширениями ".py" отдельно от файла Excel в одной папке, либо где-то отдельно и прописывать к ним пути в ячейке "B3" листа "xlwings.conf", что не так прикольно. К счастью, оказалось, что код с cyberforum.ru прекрасно скопировался через штатный редактор VBA прямо в лист "xlwings.conf" Standalone-версии, которая упоминается в пункте 2. Адаптации кода не потребовалось (я отредактировал только необязательный "test"). Если потребуется, то все описываемые действия из пункта 3 легко повторить, но вам ничего не нужно делать, при скачивании мной прилагаемого файла:
чтобы увидеть файл скрипта "Python", хранящийся в Excel просто запустите макрос "START_MENU"

Запуск:

А. Скачайте файл Excel ниже.
Б. Скачайте портативную чистую версию Python отсюда:
https://sourceforge.net/projects/winpython/files/
В. Проделайте шаги 1-2 из пункта 1.
Г. В файле Excel нажмите кнопку теста на работоспособность.

Если вы видите, что меняется текст в ячейке "B14" после нажатия кнопки теста, то принимайте поздравления - ваша сборка полностью готов к плаванию в океане под названием "Python"!

Важно: Для просмотра скриптов Python (файлы с расширениями ".py"), их выгрузки для редактирования и загрузки новых редакций, пользуйтесь макросом "START_MENU". Описание макроса и его функционала найдете по ссылке в 3 пункте.

Оставлю это здесь:
1) pywin32 устанавливается автоматически на первом шаге и может так случиться, что придется откатить его до предшествующей версии с помощью "pip install pywin32==302" где "302" это номер версии до которой нужно откатиться (у вас вероятно будет не 302-я версия, смотрите через команду "pip list").
2) Если в пункте №1 вы скачали облегченную портативную сборку и хотите чтобы в ней заработал вложенный файл "WinPython Control Panel.exe", который скачался вместе со сборкой Python, выполните в "WinPython Command Prompt.exe":
Код
pip install PyQt5
pip install packaging

"pip install pyside6" возможный вариант замены "pip install PyQt5" в коде выше, но трудно сказать что предпочтительнее. Вариант с PyQt5 мне нравится тем, что вес его файлов меньше.

Требования: любой Windows 8+, 2 ГБ оперативной памяти
Тестировалось 25.12.2021 на сборке:
Python x64   v.3.10.1               https://sourceforge.net/projects/winpython/files/WinPython_3.10/3.10.1.0/
pywin32        v.303
xlwings         v.0.25.3
Изменено: Сергей Юрьевич - 06.09.2022 21:06:42
Макрос, отключающий движения курсора на пару секунд
 
Добрый день!
Написал код по ходу выполнения которого, чтобы пользователю не было скучно, запускается заставка (обычный скринсейвер).
Заставка автоматом отключается от любого действия пользователя . В том числе движения мышкой в любую сторону.
Такая вот беда - эта заставка в 20% случаев отключается сразу после запуска - из-за инерционного движения мышкой после нажатия кнопки на которую привязан макрос. Т.е. макрос уже работает, а пользователь в это время все еще двигает мышку в области кнопки по инерции.
Мне нужно как-то в коде учесть это.

Пока придумал только пауза 1 секунду выдерживать между нажатием кнопки с макросом и запуском скринсейвера
Application.Wait Time:=Now + TimeValue("0:00:01")

Но мне не нравится это мое решение, секунды мало, а на большую паузу я не согласен - так как запуск заставки через 2-3 секунды от нажатия кнопки смотрится так, словно компьютер еле запустил ее (ощущение что код тормозит).

Выход вижу в коде, отключающем движения мышкой на пару секунд, сразу после нажатия кнопки с макросом.
Но не знаю как его реализовать.
Сделать ссылку на ячейку с меняющимся условием в формуле СУММЕСЛИМН
 
Здравствуйте!
Нужно чтобы в формуле
Код
СУММЕСЛИМН(Пример!$A$4:$A$9;Пример!$B$4:$B$9;"<>Переменный текст 1";Пример!$B$4:$B$9;"<>Нет")

Выражение "<>Переменный текст 1" заменить ссылкой на ячейку, в которой текст может меняться и при этом формула не "ломалась".

Откликнувшимся спасибо!
Откуда лишняя дробная часть при суммировании?
 
Добрый день!
Протянул формулу СУММ по столбцу где данные с количеством знаков после запятой не более чем 2, формула выдала результат "558191214,999993"
Все перепроверил такого не должно было быть, исходные данные не содержат разрядов больше чем сотые доли.
Глюк? Пример, к сожалению не удается ужать в 100кб - суммируется много данных.
пример
Поиск фрагмента текста по маске
 
Добрый день!
Есть длинный фрагмент текста типа CE.U1.RPR.0120.10UJA.0.AR.LC0017-ST02
Нужно чтобы формула находила фрагмент "10UJA" конкретно в этом примере.
Но не все так просто.
Возможны варианты, где искомое будет изменяться (не будет только "10UJA").
Искомое значение это текст вида "xxUyy", где:
-xx - число от 10 до 29 (например 10UJA, 15UJA, 29UJA);
-U - символ "U" в английской раскладке (10UJA);
-yy - любые две буквы английского алфавита  (например 10URS, 15UJA, 29UVF)
Искомому фрагменту всегда предшествует символ "точка".
Макрос формирования коллекции только уникальных значений
 
Как переписать фрагмент макроса чтобы в коллекцию попадали только уникальные значения из столбца (а не все, как сейчас)
Код
On Error Resume Next
For Each myCell In myRange
    If CStr(myCell) Like "*/*" Or CStr(myCell) Like "*-*" Then
        myCollection.Add Replace(CStr(myCell), "/", "-")
    End If
Next myCell
On Error GoTo 0
Как можно настроить или чем заменить элементы управления формой, Нужно красивое визуальное решение
 
Добрый день!
При нажатой кнопке "Отобразить данные" все выглядит красиво:
Скрытый текст

Но при нажатии "Скрыть данные (печатная форма)" элементы управления формой некрасиво кучкуются на надписях шапки таблицы:
Скрытый текст

файл качнуть можно тут
Пригоден Access под мои цели или что посоветуете в качестве БД в моем случае?, БД
 
Здравствуйте форумчане!
Задумался о построении БД в своем отделе.
В отделе 7 человек, из этих 7-и сотрудников знания эксель только у двоих отличные.
По этой причине ни о каком уходе из файлов эксель в другие СУБД не может быть и речи.
Из 7-и человек работать в этом смогут только двое да и не работать учиться)))
Остальные сотрудники кроме пользовательского экселя ничему не обучаемые.
Это я к тому что прежде чем предлагать всякие MySQL, PostgreSQL и Power BI вы представляли реалии кто будет с этим работать.
Естественно, делать так чтобы в отделе работало только два человека в мои планы не входит.
По этой причине необходимо создать БД отдела максимально дружественную к пользователям Excel.
Уход в Access тоже не подойдет по тем же соображениям и плюс много сложной отчетности, которая должна быть построена на БД.
Осложняющим фактором является то, что нет устроявшейся формы отчетности, приходится то так сделать, то эдак.
По этой причине строить отчетность в Access нет никакого желания.

Имея такие вводные пришла идея выкручиваться следующим образом.
1. В отдельных xlsx файлах вести файлы-справочники. Один файл - один справочник. Например, в одном файле перечень договоров по подрядчикам, во втором файле реквизиты субподрядчиков, в третьем файле данные о ходе сдачи документации заказчику, в четвертом файле единичные расценки по видам работ, в пятом классификатор, присваеваемый виду работ и т.д.
В общем будет как-бы множество столбцов, но не в одной раздутой книге Эксель, а в некоем множестве книг. Эдакий конструктор, из которого 2-е сотрудников будут строить сложную отчетность по общему идентификатору (разную, в т.ч. по новым формам)
2. Всей файлы-справочники (вместо того чтобы использовать ВПР) связать через Access, но при этом не загружать их в сам Access, а только создать связанные таблицы.
4. На основании запросов power query к Access 2-е сотрудников смогут строить сложную отчетность для отдела (отчетность будет опят же строится в файлах эксель). При этом файлы отчетности будут не такие тормознутые как было ранее (не будет множества ВПР-формул), а самое главное в них легче наводить порядок если изменилось что-то в справочнике (не придется переделывать все отчеты). Кроме того наводить порядок смогут низкоквалифицированные сотрудники отдела - они смогут разобраться в файле-справочнике.

При такой схеме  сотрудники, которые кроме экселя ничего не хотят знать, не останутся без дела - им я смогу вовлечь  в наполнение файлов-справочников. Они смогут их подкорректировать при необходимости, так как это же знакомый им эксель!

В общем получается схема:
База эксель - Access для построения связей между справочниками в Excel - Запрос power query к Access - отчетность в Excel

Отдельно хочу пояснить почему не рассматриваю power pivot .
Строить модель данных в power pivot не подходит так как 1. Мне не нужна сводная таблица в отчетности. А выводить данных из pivota во что-либо другое, отличающееся от сводной таблицы, как я понял, не выйдет.
2. Проблематично подключиться через power query к модели данных power pivot. Получается система нипель туда закачать данные не вопрос, а обратно танцы с бубном.

Что посоветуете мне? Правильная ли моя идея идти к решению проблемы БД через Access?
Может есть какой-то другой подходящий инструментарий.
Страницы: 1
Наверх