Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Привязка формул разных книг к одной
 
Всем привет!
Имею много одинаковых таблиц в книгах, выполненных по одному шаблону, со временем приходиться редактировать формулы в данных книгах. А книг очень много, при том в каждой книге 21 формула и каждый раз при изменении части формулы приходиться менять их во всех файлах. Для удобства создал "книгу формул" в которой меняю формулу, а потом заменяю в книгах. Возможно автоматизировать этот процесс? Думал про макроредактор, возможно есть вариант попроще?

Данная тема открыта: http://www.excelworld.ru/forum/10-42365-1
Изменено: adamm - 12 Июл 2019 17:28:41
 
возможно можно, только это как то не по фен-шую, что ли.
А чем обусловлена необходимость иметь очень много одинаковых книг?
 
Каждая книга заполняется инженером по своему шифру объекта, а форма для всех одна, таких журналов у меня уже 15, а будет ещё больше. А формулы я частенько меняю, по причине того, что приходиться добавлять новые условия особенно в ячейках столбцов с BJ по BU, в примере я выложил только формулы, второй лист куда они ссылаются я очистил, что бы не загружать вас лишней информацией. Все ячейки с формулами подкрасил зелёным цветом
 
В продолжение разговора, точнее монолога).
Решение почти нашёл. Через PQ я выгружаю формулы с шаблона, но без знака "=". Получаю так сказать текстовую часть формулы, но вот как преобразовать её в полноценную формулу не получается, пробовал через сцепить не выходит, приложил простой пример.
 
Выгружайте формулы после замены "равно" на другой символ, которого нет в формулах. После выгрузки - НАЙТИ/ЗАМЕНИТЬ символ на  "равно"
 
adamm, может здесь что полезное найдете. для массивных формул, если не ошибаюсь, Aray как то используют.
 
Спасибо всем!
vikttur, сделал проще, формулу сцепил в PQ с "=", но при выгрузке получаю текстовое значение, и приходиться каждую ячейку перещёлкивать мышкой, или менять "=" на "=", тогда превращается в нормальную рабочую формулу
 
Цитата
adamm написал:
приходиться каждую ячейку перещёлкивать мышкой
здесь макрос есть. но не работает с массивными формулами
 
artyrH, да я так и сделал, но опять маленькая проблема, формулы в моём случае не протягиваются, но тут думаю много "гемороя", проще записать макроредактором автопротягивание
да и с формулой массива не получается ввести данные...
По первому, возможно склеенную формулу запихать в диспетчер имен?
По второму я думаю получится ввести формулу кодом через "FormulaArray"

Изменено: adamm - 15 Июл 2019 10:35:59
 
adamm, и еще один минус есть. макрос надо применить только один раз. если применить второй раз, то в ячейках останутся только значения
 
Цитата
artyrH написал:
останутся только значения
думаю это не страшно, возможно да же лучше, так как формулы тяжёлые, файл немного подвисает. Или обновить запрос в PQ
Изменено: adamm - 15 Июл 2019 10:38:52
 
adamm,
правильно ли я понял
1. есть таблица с соответствием поля  и формулы ,с примечанием, массивная или нет
2. требуется автоматизировать замену формул в другой книге в советующих полях таблиц

Ну то что замену делать макросом - это понятно, и не так сложно. Получить таблицу соответсвий, пробежаться по полям и заменить формулы, не великая печаль. Но
1. вы используете RUS и в случае другой локализации офиса ваш вариант не сработает совсем
2. предположим локализация идентична, тогда надо  
вставить вставить текст формулу с префиксом = в Range.FormulaLocal
и потом сразу   Range.FormulaArray=RangeFormula, если формула массивная.
заполнить на нужное количество.
 
Цитата
БМВ написал:
правильно ли я понял
Да, вы меня правильно поняли. Касаемо локализации, она не поменяется, если я правильно вас понял, локализация (язык рус или англ).
 
Цитата
adamm написал:
локализация (язык рус или англ).
да, про нее. Просто я работаю всегда в Eng и текст формулы ни под каким соусом не будет принят.
 
adamm, попробуйте этот запрос
Код
let
   a=Table.FromList({1..1200}, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Renamed Columns" = Table.RenameColumns(a,{{"Column1", "Column"}}),
    Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Столбец1", type text}}),
    #"Transposed Table" = Table.Transpose(#"Измененный тип")&#"Renamed Columns",
    #"Filled Down" = Table.FillDown(#"Transposed Table",{"Column1", "Column2", "Column3", "Column4"}),
    #"Inserted Addition" = Table.AddColumn(#"Filled Down", "Сложение", each [Column] + 10, type number ),
    #"Added to Column" = Table.TransformColumns(#"Inserted Addition", {{"Column", each _ + 3, type  number}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Added to Column",{{"Column", type text}, {"Сложение", type text}}),
    #"Added Suffix" = Table.TransformColumns(#"Changed Type", {{"Column", each _ & ":", type text}}),
    #"Added Suffix1" = Table.TransformColumns(#"Added Suffix", {{"Сложение", each _ & ")", type text}}),
    #"Replaced Value" = Table.ReplaceValue(#"Added Suffix1","3:", each _ [Column],Replacer.ReplaceText,{"Column1" , "Column2" , "Column3" , "Column4"}),
    #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","10)",each _ [Сложение],Replacer.ReplaceText,{"Column1", "Column2", "Column3", "Column4"}),
    #"Removed Columns" = Table.RemoveColumns(#"Replaced Value1",{"Column", "Сложение"})
in
    #"Removed Columns"
 
artyrH, спасибо, попробую адаптировать под свою формулу, но боюсь будет не просто) у меня трехэтажные формулы, в примере я упростил формулу.
 
В очередной раз всем привет!
Воспользовался советом artyrH, первым способом, при помощи кода, но вот не хочет он работать с моим файлом...
 
подходит ли вариант копировать данные в файл-шаблон с формулами?
Страницы: 1
Читают тему (гостей: 1)
Наверх