Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как объединить два макроса из разных гугл-книг? - Страница 3 - Мир MS Excel

Старая форма входа
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: _Boroda_, китин  
Как объединить два макроса из разных гугл-книг?
Gustav Дата: Понедельник, 30.01.2023, 15:31 | Сообщение № 41
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
во втором списке "Уникальные Детали-Операции" не верно отображается статус (нет соответствия Статус-операция). При изменении статуса, он (статус) в списке меняется на первой строке детали, а измененная операция помещается на последнюю строку детали - из-за этого несинхрон.

Я не очень понимаю, что имеете в виду. Строки этой таблицы

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

Никакого соответствия "Статус-операция" в таблицу "Уникальные Детали-операции" не закладывалось, а строки расположены по алфавитному порядку сцепки "Деталь-Операция" - для удобства работы функций типа ВПР.

[p.s.]Ах, понял! Да-да, была ошибка в формуле ВПР, нужно вот так:(что-то не работает тэг PS)[/p.s.]

[vba]
Код
=ARRAY_CONSTRAIN(ArrayFormula(VLOOKUP(F3:F&"_"&G3:G;{A3:A&"_"&B3:B\C3:D};{2\3};FALSE));COUNTA(F3:F);2)
[/vba]
И первая картинка становится такой:
К сообщению приложен файл: 5485407.png (14.7 Kb) · 7968200.png (5.5 Kb) · 2598185.png (7.2 Kb)


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Понедельник, 30.01.2023, 15:43
 
Ответить
Сообщение
во втором списке "Уникальные Детали-Операции" не верно отображается статус (нет соответствия Статус-операция). При изменении статуса, он (статус) в списке меняется на первой строке детали, а измененная операция помещается на последнюю строку детали - из-за этого несинхрон.

Я не очень понимаю, что имеете в виду. Строки этой таблицы

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

Никакого соответствия "Статус-операция" в таблицу "Уникальные Детали-операции" не закладывалось, а строки расположены по алфавитному порядку сцепки "Деталь-Операция" - для удобства работы функций типа ВПР.

[p.s.]Ах, понял! Да-да, была ошибка в формуле ВПР, нужно вот так:(что-то не работает тэг PS)[/p.s.]

[vba]
Код
=ARRAY_CONSTRAIN(ArrayFormula(VLOOKUP(F3:F&"_"&G3:G;{A3:A&"_"&B3:B\C3:D};{2\3};FALSE));COUNTA(F3:F);2)
[/vba]
И первая картинка становится такой:

Автор - Gustav
Дата добавления - 30.01.2023 в 15:31
gutsoff200991 Дата: Понедельник, 30.01.2023, 16:19 | Сообщение № 42
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

Как их дальше различить, какая из них идёт на ФЧПУ, а какая на ФЧПУ2 ?

На примере листа https://docs.google.com/spreads....8373344 из первого файла. (TPYG.1789.00.05_Матрица):
ФЧПУ стоит первой в очереди, ФЧПУ2 - далее по процессу. Т.е. каждая таблица с отдельной деталью представляет собой перечень последовательных процессов, которые должны выполняться поочередно.
Я думал будет достаточно разделить их на ФЧПУ и ФЧПУ2, но нет. Создавать отдельные таблицы под ФЧПУ2 нерационально, так как необходима именно одна таблица на деталь (предусмотрено процессом работы с этими файлами).
Я так понял другого легкого пути нет.

[p.s.]Прошу прощения. я разобрался, все в порядке. Не нужно, чтобы наименование детали для ФЧПУ и ФЧПУ2 отличались, просто нужно, что бы они фиксировались вдвоем в таблице. Сейчас они фиксируются вдвоем только тогда, когда ФЧПУ и ФЧПУ2 имеют статус "В работе. В остальных случаях (когда у ФЧПУ и ФЧПУ2 разные статусы) они вдвоем в таблице не фиксируются (а очень важно что бы фиксировались). Как это сделать - не знаю"[/p.s.]


Сообщение отредактировал Serge_007 - Вторник, 31.01.2023, 15:03
 
Ответить
Сообщение
Как их дальше различить, какая из них идёт на ФЧПУ, а какая на ФЧПУ2 ?

На примере листа https://docs.google.com/spreads....8373344 из первого файла. (TPYG.1789.00.05_Матрица):
ФЧПУ стоит первой в очереди, ФЧПУ2 - далее по процессу. Т.е. каждая таблица с отдельной деталью представляет собой перечень последовательных процессов, которые должны выполняться поочередно.
Я думал будет достаточно разделить их на ФЧПУ и ФЧПУ2, но нет. Создавать отдельные таблицы под ФЧПУ2 нерационально, так как необходима именно одна таблица на деталь (предусмотрено процессом работы с этими файлами).
Я так понял другого легкого пути нет.

[p.s.]Прошу прощения. я разобрался, все в порядке. Не нужно, чтобы наименование детали для ФЧПУ и ФЧПУ2 отличались, просто нужно, что бы они фиксировались вдвоем в таблице. Сейчас они фиксируются вдвоем только тогда, когда ФЧПУ и ФЧПУ2 имеют статус "В работе. В остальных случаях (когда у ФЧПУ и ФЧПУ2 разные статусы) они вдвоем в таблице не фиксируются (а очень важно что бы фиксировались). Как это сделать - не знаю"[/p.s.]

Автор - gutsoff200991
Дата добавления - 30.01.2023 в 16:19
gutsoff200991 Дата: Понедельник, 30.01.2023, 16:25 | Сообщение № 43
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

P.S:
Ах, понял! Да-да, была ошибка в формуле ВПР, нужно вот так

Спасибо огромное.
 
Ответить
СообщениеP.S:
Ах, понял! Да-да, была ошибка в формуле ВПР, нужно вот так

Спасибо огромное.

Автор - gutsoff200991
Дата добавления - 30.01.2023 в 16:25
gutsoff200991 Дата: Вторник, 31.01.2023, 14:02 | Сообщение № 44
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

...какая из них идёт на ФЧПУ, а какая на ФЧПУ2 ?
Думаю будет видно по времени, что из них ФЧПУ, а что ФЧПУ2. (ФЧПУ2 всегда выполняется позже)


Сообщение отредактировал Serge_007 - Вторник, 31.01.2023, 15:02
 
Ответить
Сообщение
...какая из них идёт на ФЧПУ, а какая на ФЧПУ2 ?
Думаю будет видно по времени, что из них ФЧПУ, а что ФЧПУ2. (ФЧПУ2 всегда выполняется позже)

Автор - gutsoff200991
Дата добавления - 31.01.2023 в 14:02
gutsoff200991 Дата: Вторник, 31.01.2023, 14:13 | Сообщение № 45
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

В принципе, это несложно.
Gustav, Процесс который вы создали - именно то, что нам нужно. Спасибо большое. Удалять этот шедевр и в голову не приходило.
Однако все это было задумано с одной целью - автоматизировать процесс. Тот факт, что нужно руками перетащить деталь из очереди на станок и был так задуман. Но... если начальник смены не успеет вовремя перетащить деталь из очереди на станок (до того, как ее статус будет "Выполнено"), деталь и вовсе пропадет из очереди и из листа со станком. И я так понял, кроме как полностью переписать полюбившийся нам процесс (а переписывать мы не будем) этих случайных пропаж не исправить?


Сообщение отредактировал Serge_007 - Вторник, 31.01.2023, 15:01
 
Ответить
Сообщение
В принципе, это несложно.
Gustav, Процесс который вы создали - именно то, что нам нужно. Спасибо большое. Удалять этот шедевр и в голову не приходило.
Однако все это было задумано с одной целью - автоматизировать процесс. Тот факт, что нужно руками перетащить деталь из очереди на станок и был так задуман. Но... если начальник смены не успеет вовремя перетащить деталь из очереди на станок (до того, как ее статус будет "Выполнено"), деталь и вовсе пропадет из очереди и из листа со станком. И я так понял, кроме как полностью переписать полюбившийся нам процесс (а переписывать мы не будем) этих случайных пропаж не исправить?

Автор - gutsoff200991
Дата добавления - 31.01.2023 в 14:13
Gustav Дата: Вторник, 31.01.2023, 16:57 | Сообщение № 46
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Не нужно, чтобы наименование детали для ФЧПУ и ФЧПУ2 отличались, просто нужно, что бы они фиксировались вдвоем в таблице. Сейчас они фиксируются вдвоем только тогда, когда ФЧПУ и ФЧПУ2 имеют статус "В работе. В остальных случаях (когда у ФЧПУ и ФЧПУ2 разные статусы) они вдвоем в таблице не фиксируются (а очень важно что бы фиксировались)

Думаю будет видно по времени, что из них ФЧПУ, а что ФЧПУ2. (ФЧПУ2 всегда выполняется позже)

Так, вроде, созрело некоторое понимание у меня. По нашей текущей формуле очереди (ячейка M2 на листе "Фрезерные с ЧПУ (ФЧПУ)"):
[vba]
Код
=IFERROR({"";FILTER('Списки'!F3:F;
('Списки'!G3:G="ФЧПУ")+('Списки'!G3:G="ФЧПУ2");
'Списки'!H3:H="В работе";
ISNA(MATCH('Списки'!F3:F;B2:B;0));
ISNA(MATCH('Списки'!F3:F;H2:H;0)))};"<очередь ФЧПУ пуста>")
[/vba]в нее попадают детали операций ФЧПУ и ФЧПУ2. При этом одна и та же деталь одновременно может иметь только одну операцию в статусе "В работе". И это означает, что удвоение названия детали в списке очереди в столбце M не будет: сначала деталь появится в очереди для операции ФЧПУ, потом покинет очередь и перейдёт в рабочую зону станка - там "обработается" и приобретет статус "Выполнено". После этого статус "В работе" установится для операции ФЧПУ2 этой детали и она снова ДОЛЖНА БУДЕТ появиться в очереди, причем, опять в единственном числе.

ДОЛЖНА БУДЕТ, но не появится, потому что будут мешать вот эти условия формулы:[vba]
Код
ISNA(MATCH('Списки'!F3:F;B2:B;0));
ISNA(MATCH('Списки'!F3:F;H2:H;0)))
[/vba]которые означают, что при наличии детали хотя бы в одной из колонок "номер и обозначение детали", в очереди она появиться не сможет.

Как же выйти из ситуации? Напрашивается некоторое усложнение условий выше, а именно, не только проверка наличия детали в колонке "номер и обозначение детали", но и присутствие некоторой непустой информации в других колонках ("время начала", "время окончания" и др.). ВОПРОС: На заполнение какой бы колонки при этом ориентироваться? Т.е. какая из колонок будет заполнена всегда во время выполнения или после выполнения? Когда мы добавим это условие, деталь снова сможет появляться в очереди (уже для выполнения операции ФЧПУ2) даже при наличии детали в рабочей зоне станка (среди уже обработанных операцией ФЧПУ).


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Не нужно, чтобы наименование детали для ФЧПУ и ФЧПУ2 отличались, просто нужно, что бы они фиксировались вдвоем в таблице. Сейчас они фиксируются вдвоем только тогда, когда ФЧПУ и ФЧПУ2 имеют статус "В работе. В остальных случаях (когда у ФЧПУ и ФЧПУ2 разные статусы) они вдвоем в таблице не фиксируются (а очень важно что бы фиксировались)

Думаю будет видно по времени, что из них ФЧПУ, а что ФЧПУ2. (ФЧПУ2 всегда выполняется позже)

Так, вроде, созрело некоторое понимание у меня. По нашей текущей формуле очереди (ячейка M2 на листе "Фрезерные с ЧПУ (ФЧПУ)"):
[vba]
Код
=IFERROR({"";FILTER('Списки'!F3:F;
('Списки'!G3:G="ФЧПУ")+('Списки'!G3:G="ФЧПУ2");
'Списки'!H3:H="В работе";
ISNA(MATCH('Списки'!F3:F;B2:B;0));
ISNA(MATCH('Списки'!F3:F;H2:H;0)))};"<очередь ФЧПУ пуста>")
[/vba]в нее попадают детали операций ФЧПУ и ФЧПУ2. При этом одна и та же деталь одновременно может иметь только одну операцию в статусе "В работе". И это означает, что удвоение названия детали в списке очереди в столбце M не будет: сначала деталь появится в очереди для операции ФЧПУ, потом покинет очередь и перейдёт в рабочую зону станка - там "обработается" и приобретет статус "Выполнено". После этого статус "В работе" установится для операции ФЧПУ2 этой детали и она снова ДОЛЖНА БУДЕТ появиться в очереди, причем, опять в единственном числе.

ДОЛЖНА БУДЕТ, но не появится, потому что будут мешать вот эти условия формулы:[vba]
Код
ISNA(MATCH('Списки'!F3:F;B2:B;0));
ISNA(MATCH('Списки'!F3:F;H2:H;0)))
[/vba]которые означают, что при наличии детали хотя бы в одной из колонок "номер и обозначение детали", в очереди она появиться не сможет.

Как же выйти из ситуации? Напрашивается некоторое усложнение условий выше, а именно, не только проверка наличия детали в колонке "номер и обозначение детали", но и присутствие некоторой непустой информации в других колонках ("время начала", "время окончания" и др.). ВОПРОС: На заполнение какой бы колонки при этом ориентироваться? Т.е. какая из колонок будет заполнена всегда во время выполнения или после выполнения? Когда мы добавим это условие, деталь снова сможет появляться в очереди (уже для выполнения операции ФЧПУ2) даже при наличии детали в рабочей зоне станка (среди уже обработанных операцией ФЧПУ).

Автор - Gustav
Дата добавления - 31.01.2023 в 16:57
Gustav Дата: Вторник, 31.01.2023, 21:03 | Сообщение № 47
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
если начальник смены не успеет вовремя перетащить деталь из очереди на станок (до того, как ее статус будет "Выполнено"), деталь и вовсе пропадет из очереди и из листа со станком

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

ВОПРОС: Каков критерий подобной "пропажи"? Операция детали имеет статус "Выполнено", но отсутствует в колонке "номер и обозначение детали" в архиве рабочей зоны станка, выполняющего данную операцию - так? И в архиве, похоже, всё же надо указать какой операцией была обработана деталь. Может быть, в колонке "комментарии" писать "ФЧПУ" или "ФЧПУ2"?

И, кстати, давно напрашивается справочник соответствия операций - станкам (рабочим листам). Потому что станок, например, в формуле своей очереди знает, какие операции из общего списка он выбирает. А вот для того, чтобы понять, на каком листе-станке будет обработана произвольная уникальная строка "деталь-операция" сейчас нужно как-то (видимо, скриптом) перебрать все имеющиеся листы-станки. Поэтому нужен инструмент, помогающий решить эту задачу, более коротким путем.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
если начальник смены не успеет вовремя перетащить деталь из очереди на станок (до того, как ее статус будет "Выполнено"), деталь и вовсе пропадет из очереди и из листа со станком

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

ВОПРОС: Каков критерий подобной "пропажи"? Операция детали имеет статус "Выполнено", но отсутствует в колонке "номер и обозначение детали" в архиве рабочей зоны станка, выполняющего данную операцию - так? И в архиве, похоже, всё же надо указать какой операцией была обработана деталь. Может быть, в колонке "комментарии" писать "ФЧПУ" или "ФЧПУ2"?

И, кстати, давно напрашивается справочник соответствия операций - станкам (рабочим листам). Потому что станок, например, в формуле своей очереди знает, какие операции из общего списка он выбирает. А вот для того, чтобы понять, на каком листе-станке будет обработана произвольная уникальная строка "деталь-операция" сейчас нужно как-то (видимо, скриптом) перебрать все имеющиеся листы-станки. Поэтому нужен инструмент, помогающий решить эту задачу, более коротким путем.

Автор - Gustav
Дата добавления - 31.01.2023 в 21:03
gutsoff200991 Дата: Пятница, 03.02.2023, 11:06 | Сообщение № 48
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

ВОПРОС: На заполнение какой бы колонки при этом ориентироваться?

Здравствуйте, Густав. Еще раз благодарю за содействие.
Думаю это должна быть колонка "Время начала обработки" в рабочей зоне станка (т.к. она). Эта надстройка в формуле будет сильно усложнять формулу и время на ее обработку?
 
Ответить
Сообщение
ВОПРОС: На заполнение какой бы колонки при этом ориентироваться?

Здравствуйте, Густав. Еще раз благодарю за содействие.
Думаю это должна быть колонка "Время начала обработки" в рабочей зоне станка (т.к. она). Эта надстройка в формуле будет сильно усложнять формулу и время на ее обработку?

Автор - gutsoff200991
Дата добавления - 03.02.2023 в 11:06
gutsoff200991 Дата: Пятница, 03.02.2023, 11:27 | Сообщение № 49
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

Можно завести специальный рабочий лист, на котором будет формула-запрос, отлавливающая такие "пропажи"

Можно завести один рабочий лист для отлавливания "пропажи" на все листы всех станков? Или для каждого станка возможен только свой отдельный рабочий лист? Вообще этот список с "пропажами" очень выручил бы.

ВОПРОС: Каков критерий подобной "пропажи"? Операция детали имеет статус "Выполнено", но отсутствует в колонке "номер и обозначение детали" в архиве рабочей зоны станка, выполняющего данную операцию - так?

Именно так.

И, кстати, давно напрашивается справочник соответствия операций - станкам (рабочим листам)

Я же правильно понимаю, что сейчас это соответствие происходит за счет функции в колонке "Очередь деталей на станки"? А вы предлагаете его усовершенствовать до скрипта?
 
Ответить
Сообщение
Можно завести специальный рабочий лист, на котором будет формула-запрос, отлавливающая такие "пропажи"

Можно завести один рабочий лист для отлавливания "пропажи" на все листы всех станков? Или для каждого станка возможен только свой отдельный рабочий лист? Вообще этот список с "пропажами" очень выручил бы.

ВОПРОС: Каков критерий подобной "пропажи"? Операция детали имеет статус "Выполнено", но отсутствует в колонке "номер и обозначение детали" в архиве рабочей зоны станка, выполняющего данную операцию - так?

Именно так.

И, кстати, давно напрашивается справочник соответствия операций - станкам (рабочим листам)

Я же правильно понимаю, что сейчас это соответствие происходит за счет функции в колонке "Очередь деталей на станки"? А вы предлагаете его усовершенствовать до скрипта?

Автор - gutsoff200991
Дата добавления - 03.02.2023 в 11:27
Gustav Дата: Воскресенье, 12.02.2023, 15:06 | Сообщение № 50
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Как же выйти из ситуации? Напрашивается некоторое усложнение условий выше, а именно, не только проверка наличия детали в колонке "номер и обозначение детали", но и присутствие некоторой непустой информации в других колонках ("время начала", "время окончания" и др.). ВОПРОС: На заполнение какой бы колонки при этом ориентироваться? Т.е. какая из колонок будет заполнена всегда во время выполнения или после выполнения? Когда мы добавим это условие, деталь снова сможет появляться в очереди (уже для выполнения операции ФЧПУ2) даже при наличии детали в рабочей зоне станка (среди уже обработанных операцией ФЧПУ).

Эта надстройка в формуле будет сильно усложнять формулу и время на ее обработку?

Возвращаемся в тему. Попытка движения в этом направлении, а именно, попытка "однозначной" идентификации детали без совместного указания конкретной операции, привела к монстроидной формуле с использованием самых современных достижений в области формулостроения. С помощью функции LAMBDA для прежней формулы очереди (см. сообщение № 46) была создана следующая замена:
[vba]
Код
=LAMBDA(valid; comment0;
IFERROR({"";FILTER('Списки'!F3:F;
('Списки'!G3:G="ФЧПУ")+('Списки'!G3:G="ФЧПУ2");
'Списки'!H3:H="В работе";
ISNUMBER(MATCH('Списки'!F3:F;valid;0)))};"<очередь ФЧПУ пуста>")
)(
LAMBDA(qry; dataTool; dataList; comment1;
LAMBDA(arr; comment2;
FILTER(INDEX(arr;;1);INDEX(arr;;2))
)(
LAMBDA(aList; aTool; comment3;
BYROW(aList;
LAMBDA(r; {INDEX(r;1) \
INDEX(r;2) > IFERROR(XLOOKUP(INDEX(r;1);INDEX(aTool;;1);INDEX(aTool;;2));0)}
))
)(
LAMBDA(dataList; qry; QUERY(dataList; qry))(dataList; qry);
LAMBDA(dataTool; qry; QUERY(dataTool; qry))(dataTool; qry);
"comment3: --------------------"
);
"comment2: ---------------"
)
)(
"select Col1, count(Col1) group by Col1 label count(Col1) ''";
{FILTER(B2:B;B2:B<>"");FILTER(H2:H;H2:H<>"")};
FILTER('Списки'!F3:F;('Списки'!G3:G="ФЧПУ")+('Списки'!G3:G="ФЧПУ2"));
"comment1: ----------"
);
"comment0: -----"
)
[/vba]
В общем, даже как разработчик я в ней слегка потерялся, не говоря уже о том, чтобы рекомендовать ее другим для повседневного использования и даже изменения с целью распространения на другие виды станков и операций.

МОРАЛЬ: Не надо тешить себя иллюзиями и пытаться обмануть вековые устои теории реляционных баз данных. Если некая сущность в задаче идентифицируется комбинацией двух полей, то надо и использовать два поля, не пытаясь опираться только на одно поля, а для другого строя различные эвристики (типа более ранняя строка в списке или еще чего-нибудь в этом духе). Попытался - формула стала зубодробительным монстром. Далее покажу, как вышел из ситуации и вполне неплохо.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Как же выйти из ситуации? Напрашивается некоторое усложнение условий выше, а именно, не только проверка наличия детали в колонке "номер и обозначение детали", но и присутствие некоторой непустой информации в других колонках ("время начала", "время окончания" и др.). ВОПРОС: На заполнение какой бы колонки при этом ориентироваться? Т.е. какая из колонок будет заполнена всегда во время выполнения или после выполнения? Когда мы добавим это условие, деталь снова сможет появляться в очереди (уже для выполнения операции ФЧПУ2) даже при наличии детали в рабочей зоне станка (среди уже обработанных операцией ФЧПУ).

Эта надстройка в формуле будет сильно усложнять формулу и время на ее обработку?

Возвращаемся в тему. Попытка движения в этом направлении, а именно, попытка "однозначной" идентификации детали без совместного указания конкретной операции, привела к монстроидной формуле с использованием самых современных достижений в области формулостроения. С помощью функции LAMBDA для прежней формулы очереди (см. сообщение № 46) была создана следующая замена:
[vba]
Код
=LAMBDA(valid; comment0;
IFERROR({"";FILTER('Списки'!F3:F;
('Списки'!G3:G="ФЧПУ")+('Списки'!G3:G="ФЧПУ2");
'Списки'!H3:H="В работе";
ISNUMBER(MATCH('Списки'!F3:F;valid;0)))};"<очередь ФЧПУ пуста>")
)(
LAMBDA(qry; dataTool; dataList; comment1;
LAMBDA(arr; comment2;
FILTER(INDEX(arr;;1);INDEX(arr;;2))
)(
LAMBDA(aList; aTool; comment3;
BYROW(aList;
LAMBDA(r; {INDEX(r;1) \
INDEX(r;2) > IFERROR(XLOOKUP(INDEX(r;1);INDEX(aTool;;1);INDEX(aTool;;2));0)}
))
)(
LAMBDA(dataList; qry; QUERY(dataList; qry))(dataList; qry);
LAMBDA(dataTool; qry; QUERY(dataTool; qry))(dataTool; qry);
"comment3: --------------------"
);
"comment2: ---------------"
)
)(
"select Col1, count(Col1) group by Col1 label count(Col1) ''";
{FILTER(B2:B;B2:B<>"");FILTER(H2:H;H2:H<>"")};
FILTER('Списки'!F3:F;('Списки'!G3:G="ФЧПУ")+('Списки'!G3:G="ФЧПУ2"));
"comment1: ----------"
);
"comment0: -----"
)
[/vba]
В общем, даже как разработчик я в ней слегка потерялся, не говоря уже о том, чтобы рекомендовать ее другим для повседневного использования и даже изменения с целью распространения на другие виды станков и операций.

МОРАЛЬ: Не надо тешить себя иллюзиями и пытаться обмануть вековые устои теории реляционных баз данных. Если некая сущность в задаче идентифицируется комбинацией двух полей, то надо и использовать два поля, не пытаясь опираться только на одно поля, а для другого строя различные эвристики (типа более ранняя строка в списке или еще чего-нибудь в этом духе). Попытался - формула стала зубодробительным монстром. Далее покажу, как вышел из ситуации и вполне неплохо.

Автор - Gustav
Дата добавления - 12.02.2023 в 15:06
Gustav Дата: Воскресенье, 12.02.2023, 15:43 | Сообщение № 51
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Далее покажу, как вышел из ситуации и вполне неплохо.

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

Итак, новые значения "Деталь с Операцией" занимают колонку J листа "Списки" (за счет изменений, внесенных в формулу для ячейки H3):
[vba]
Код
=ARRAY_CONSTRAIN(ArrayFormula(VLOOKUP(F3:F&"_"&G3:G;{A3:A&"_"&B3:B\C3:D\A3:A&" -- "&B3:B};{2\3\4};FALSE));COUNTA(F3:F);3)
[/vba]
Формула очереди в ячейке M2 листа "Фрезерные с ЧПУ (ФЧПУ)" переписывается в следующем виде - всего лишь меняются ссылки 'Списки'!F3:F на 'Списки'!J3:J:
[vba]
Код
=IFERROR({"";FILTER('Списки'!J3:J;
('Списки'!G3:G="ФЧПУ")+('Списки'!G3:G="ФЧПУ2");
'Списки'!H3:H="В работе";
ISNA(MATCH('Списки'!J3:J;B2:B;0));
ISNA(MATCH('Списки'!J3:J;H2:H;0)))};"<очередь ФЧПУ пуста>")
[/vba]
Если далее потребуется (где-то зачем-то) выполнять обратное выделение названия детали или операции из составной строки, то мы всегда сможем это сделать с помошью простейших функций.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Далее покажу, как вышел из ситуации и вполне неплохо.

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

Итак, новые значения "Деталь с Операцией" занимают колонку J листа "Списки" (за счет изменений, внесенных в формулу для ячейки H3):
[vba]
Код
=ARRAY_CONSTRAIN(ArrayFormula(VLOOKUP(F3:F&"_"&G3:G;{A3:A&"_"&B3:B\C3:D\A3:A&" -- "&B3:B};{2\3\4};FALSE));COUNTA(F3:F);3)
[/vba]
Формула очереди в ячейке M2 листа "Фрезерные с ЧПУ (ФЧПУ)" переписывается в следующем виде - всего лишь меняются ссылки 'Списки'!F3:F на 'Списки'!J3:J:
[vba]
Код
=IFERROR({"";FILTER('Списки'!J3:J;
('Списки'!G3:G="ФЧПУ")+('Списки'!G3:G="ФЧПУ2");
'Списки'!H3:H="В работе";
ISNA(MATCH('Списки'!J3:J;B2:B;0));
ISNA(MATCH('Списки'!J3:J;H2:H;0)))};"<очередь ФЧПУ пуста>")
[/vba]
Если далее потребуется (где-то зачем-то) выполнять обратное выделение названия детали или операции из составной строки, то мы всегда сможем это сделать с помошью простейших функций.

Автор - Gustav
Дата добавления - 12.02.2023 в 15:43
gutsoff200991 Дата: Понедельник, 13.02.2023, 09:28 | Сообщение № 52
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

Добрый день.

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


Посмотрев на это был восхищен и испуган, благодарю за наглядный пример.
 
Ответить
СообщениеДобрый день.

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


Посмотрев на это был восхищен и испуган, благодарю за наглядный пример.

Автор - gutsoff200991
Дата добавления - 13.02.2023 в 09:28
gutsoff200991 Дата: Понедельник, 13.02.2023, 10:28 | Сообщение № 53
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

Идея элементарна


Спасибо, работает. Сейчас пытаюсь настроить условное форматирование для данного варианта.
Могли бы вы пожалуйста подсказать, как создать отдельный список, для определения "пропаж", о которых мы говорили ранее? и настройку фиксации времени в рабочей зоне станка.

Заранее благодарю.


Сообщение отредактировал gutsoff200991 - Понедельник, 13.02.2023, 10:30
 
Ответить
Сообщение
Идея элементарна


Спасибо, работает. Сейчас пытаюсь настроить условное форматирование для данного варианта.
Могли бы вы пожалуйста подсказать, как создать отдельный список, для определения "пропаж", о которых мы говорили ранее? и настройку фиксации времени в рабочей зоне станка.

Заранее благодарю.

Автор - gutsoff200991
Дата добавления - 13.02.2023 в 10:28
Gustav Дата: Понедельник, 13.02.2023, 11:55 | Сообщение № 54
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Сейчас пытаюсь настроить условное форматирование для данного варианта

В моём файле (ссылка в сообщении 31) условное форматирование для листа ФЧПУ настроено уже для этого варианта. Просто скопируйте и по аналогии распространите на другие станки. Формулы для УФ, кстати, стали проще, поскольку теперь надо ссылаться только на одно поле, а не на динамическую сцепку двух.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Сейчас пытаюсь настроить условное форматирование для данного варианта

В моём файле (ссылка в сообщении 31) условное форматирование для листа ФЧПУ настроено уже для этого варианта. Просто скопируйте и по аналогии распространите на другие станки. Формулы для УФ, кстати, стали проще, поскольку теперь надо ссылаться только на одно поле, а не на динамическую сцепку двух.

Автор - Gustav
Дата добавления - 13.02.2023 в 11:55
gutsoff200991 Дата: Понедельник, 13.02.2023, 13:56 | Сообщение № 55
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

Спасибо.
 
Ответить
СообщениеСпасибо.

Автор - gutsoff200991
Дата добавления - 13.02.2023 в 13:56
Gustav Дата: Среда, 15.02.2023, 02:27 | Сообщение № 56
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
как создать отдельный список, для определения "пропаж"

создаем новый чистый рабочий лист и переименовываем его в "Пропажи" (по моей ссылке уже есть). Оформляем заголовочную часть - делаем отдельные блоки-списки на каждый станок (см. прилагаемую картинку).

В каждый блок помещаем вычисляющую "пропажи" формулу массива в одну ячейку (первая ячейка под заголовком "Наименование детали"):
для листа (станка) "Фрезерные с ЧПУ (ФЧПУ)" - формула для ячейки A4:
[vba]
Код
=FILTER('Списки'!F:G;
XMATCH('Списки'!G:G; {"ФЧПУ";"ФЧПУ2"});
XMATCH('Списки'!H:H;{"Выполнено"});
ISNA(XMATCH('Списки'!J:J;{
'Фрезерные с ЧПУ (ФЧПУ)'!B:B;
'Фрезерные с ЧПУ (ФЧПУ)'!H:H
})))
[/vba]
для листа (станка) "Фрезерные (ФУ)" - формула для ячейки D4:
[vba]
Код
=FILTER('Списки'!F:G;
XMATCH('Списки'!G:G; {"ФУ"});
XMATCH('Списки'!H:H;{"Выполнено"});
ISNA(XMATCH('Списки'!J:J;{
'Фрезерные (ФУ)'!B:B;
'Фрезерные (ФУ)'!H:H;
'Фрезерные (ФУ)'!N:N
})))
[/vba]

В этих двух формулах хорошо просматриваются элементы, которые должны быть изменены по аналогии для других листов станков:
* массив выполняемых операций:
[vba]
Код
{"ФЧПУ";"ФЧПУ2"}
[/vba]* массив учитываемых статусов (в данном случае один, но при дальнейшей бизнес-необходимости может быть легко расширен):
[vba]
Код
{"Выполнено"}
[/vba]* массив столбцов "номер и обозначение детали" из "рабочих зон" листов станков:
[vba]
Код
{'Фрезерные с ЧПУ (ФЧПУ)'!B:B; 'Фрезерные с ЧПУ (ФЧПУ)'!H:H}
[/vba]

Если в технологических процессах всё нормально, детали своевременно обрабатываются, то списки на листе "Пропажи" будут содержать значение ошибки #N/A (тот редкий случай, когда ошибке будут рады). Когда же в том или ином списке списке появится "нормальная" деталь с операцией - это как раз будет сигналом об "ошибке" в тех.процессе.
К сообщению приложен файл: 6035278.png (45.7 Kb)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
как создать отдельный список, для определения "пропаж"

создаем новый чистый рабочий лист и переименовываем его в "Пропажи" (по моей ссылке уже есть). Оформляем заголовочную часть - делаем отдельные блоки-списки на каждый станок (см. прилагаемую картинку).

В каждый блок помещаем вычисляющую "пропажи" формулу массива в одну ячейку (первая ячейка под заголовком "Наименование детали"):
для листа (станка) "Фрезерные с ЧПУ (ФЧПУ)" - формула для ячейки A4:
[vba]
Код
=FILTER('Списки'!F:G;
XMATCH('Списки'!G:G; {"ФЧПУ";"ФЧПУ2"});
XMATCH('Списки'!H:H;{"Выполнено"});
ISNA(XMATCH('Списки'!J:J;{
'Фрезерные с ЧПУ (ФЧПУ)'!B:B;
'Фрезерные с ЧПУ (ФЧПУ)'!H:H
})))
[/vba]
для листа (станка) "Фрезерные (ФУ)" - формула для ячейки D4:
[vba]
Код
=FILTER('Списки'!F:G;
XMATCH('Списки'!G:G; {"ФУ"});
XMATCH('Списки'!H:H;{"Выполнено"});
ISNA(XMATCH('Списки'!J:J;{
'Фрезерные (ФУ)'!B:B;
'Фрезерные (ФУ)'!H:H;
'Фрезерные (ФУ)'!N:N
})))
[/vba]

В этих двух формулах хорошо просматриваются элементы, которые должны быть изменены по аналогии для других листов станков:
* массив выполняемых операций:
[vba]
Код
{"ФЧПУ";"ФЧПУ2"}
[/vba]* массив учитываемых статусов (в данном случае один, но при дальнейшей бизнес-необходимости может быть легко расширен):
[vba]
Код
{"Выполнено"}
[/vba]* массив столбцов "номер и обозначение детали" из "рабочих зон" листов станков:
[vba]
Код
{'Фрезерные с ЧПУ (ФЧПУ)'!B:B; 'Фрезерные с ЧПУ (ФЧПУ)'!H:H}
[/vba]

Если в технологических процессах всё нормально, детали своевременно обрабатываются, то списки на листе "Пропажи" будут содержать значение ошибки #N/A (тот редкий случай, когда ошибке будут рады). Когда же в том или ином списке списке появится "нормальная" деталь с операцией - это как раз будет сигналом об "ошибке" в тех.процессе.

Автор - Gustav
Дата добавления - 15.02.2023 в 02:27
gutsoff200991 Дата: Среда, 15.02.2023, 14:39 | Сообщение № 57
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

Применил ко всем листам. Благодарю
 
Ответить
СообщениеПрименил ко всем листам. Благодарю

Автор - gutsoff200991
Дата добавления - 15.02.2023 в 14:39
Gustav Дата: Понедельник, 20.02.2023, 01:51 | Сообщение № 58
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
и настройку фиксации времени в рабочей зоне станка.

Добавил фрагмент кода в процедуру onEdit, отвечающий за прописывание тайм-штампа (дата+время) в колонку "время начала обработки" после ввода значения (вручную или копированием) в ячейку колонки "номер и обозначение детали" на листе станка.

Теперь вся процедура onEdit выглядит так (уже изменена в моей копии по ссылке в сообщении №31):
[vba]
Код
function onEdit(e) {
    var rng = e.range;

    // "команда сдёргивания" - нажатие клавиши Delete на ячейке приводит к выполнению
    if (e.oldValue != undefined) { // важно, ибо у пустой ячейки e.oldValue еще не "активировано"
        var origValue = e.oldValue;
        if (origValue.toUpperCase() == "номер и обозначение детали".toUpperCase()) {
            // восстановление содержимого ячейки
            rng.setValue("номер и обозначение детали");
            // выполнение команды - сдвиг заполненных ячеек вниз
            // с образованием пустого места для "размещения" новой детали
            rng.offset(1, -1, 1, 6).insertCells(SpreadsheetApp.Dimension.ROWS);
            return; // в данном случае больше ничего не надо делать
        }
    }

    // прописывание тайм-штампа в колонку "время начала обработки"
    var valToFindHeader = rng.getSheet().getRange(1, rng.getColumn(), rng.getRow()).getValues();
    var mapVal = valToFindHeader.map(v => v[0].toString().toLowerCase());
    if (~mapVal.indexOf("номер и обозначение детали")) {
        if (!rng.isBlank() && rng.offset(0, 2).isBlank()) {
            rng.offset(0, 2).setValue( new Date() );
        }  
    }
}
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
и настройку фиксации времени в рабочей зоне станка.

Добавил фрагмент кода в процедуру onEdit, отвечающий за прописывание тайм-штампа (дата+время) в колонку "время начала обработки" после ввода значения (вручную или копированием) в ячейку колонки "номер и обозначение детали" на листе станка.

Теперь вся процедура onEdit выглядит так (уже изменена в моей копии по ссылке в сообщении №31):
[vba]
Код
function onEdit(e) {
    var rng = e.range;

    // "команда сдёргивания" - нажатие клавиши Delete на ячейке приводит к выполнению
    if (e.oldValue != undefined) { // важно, ибо у пустой ячейки e.oldValue еще не "активировано"
        var origValue = e.oldValue;
        if (origValue.toUpperCase() == "номер и обозначение детали".toUpperCase()) {
            // восстановление содержимого ячейки
            rng.setValue("номер и обозначение детали");
            // выполнение команды - сдвиг заполненных ячеек вниз
            // с образованием пустого места для "размещения" новой детали
            rng.offset(1, -1, 1, 6).insertCells(SpreadsheetApp.Dimension.ROWS);
            return; // в данном случае больше ничего не надо делать
        }
    }

    // прописывание тайм-штампа в колонку "время начала обработки"
    var valToFindHeader = rng.getSheet().getRange(1, rng.getColumn(), rng.getRow()).getValues();
    var mapVal = valToFindHeader.map(v => v[0].toString().toLowerCase());
    if (~mapVal.indexOf("номер и обозначение детали")) {
        if (!rng.isBlank() && rng.offset(0, 2).isBlank()) {
            rng.offset(0, 2).setValue( new Date() );
        }  
    }
}
[/vba]

Автор - Gustav
Дата добавления - 20.02.2023 в 01:51
gutsoff200991 Дата: Понедельник, 20.02.2023, 10:11 | Сообщение № 59
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 40% ±

Доброе утро. Благодарю.

А возможно ли, что бы Таймштамп в рабочей зоне станка (столбец "время начала обработки") отображал дату и время не фактического перемещения наименования в эту самую рабочую зону станка из общей очереди, а дату и время относительно статусу "в работе" с листа "Списки"


Сообщение отредактировал gutsoff200991 - Понедельник, 20.02.2023, 10:11
 
Ответить
СообщениеДоброе утро. Благодарю.

А возможно ли, что бы Таймштамп в рабочей зоне станка (столбец "время начала обработки") отображал дату и время не фактического перемещения наименования в эту самую рабочую зону станка из общей очереди, а дату и время относительно статусу "в работе" с листа "Списки"

Автор - gutsoff200991
Дата добавления - 20.02.2023 в 10:11
Gustav Дата: Среда, 22.02.2023, 16:06 | Сообщение № 60
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
что бы Таймштамп в рабочей зоне станка (столбец "время начала обработки") отображал дату и время ... относительно статусу "в работе"

Ок, сделано - вставкой формулы в колонку "время начала обработки" и последующим превращением результата в значение без формулы. Сделал также одновременное заполнение и второй колонки "время окончания обработки" - формулой. Сразу после создания формула отображает пустую строку, но, как только статус операции станет "Выполнено", в ячейке отобразится время установки этого статуса. Фрагмент процедуры onEdit после комментария "прописывание тайм-штампа" приобретает следующий вид (по моей ссылки уже заменено):

[vba]
Код
    // прописывание тайм-штампа в колонку "время начала обработки"
    var valToFindHeader = rng.getSheet().getRange(1, rng.getColumn(), rng.getRow()).getValues();
    var mapVal = valToFindHeader.map(v => v[0].toString().toLowerCase());
    if (~mapVal.indexOf("номер и обозначение детали")) {
        if (!rng.isBlank() && rng.offset(0, 2).isBlank()) {
            // время начала обработки (после вставки будет сохранено как значение)
            rng.offset(0, 2).setFormula('=INDEX(SORT(FILTER(\'Списки\'!D3:D;\'Списки\'!C3:C="В работе";\'Списки\'!E3:E='
                    +rng.getA1Notation()+');1;FALSE);1)');
            // время окончания обработки (после вставки останется формулой)                            
            rng.offset(0, 3).setFormula('=IFERROR('
                    +'INDEX(SORT(FILTER(\'Списки\'!D3:D;\'Списки\'!C3:C="Выполнено";\'Списки\'!E3:E='
                    +rng.getA1Notation()+');1;FALSE);1);"")');
            SpreadsheetApp.flush();
            // время начала обработки превращаем из формулы в значение
            rng.offset(0, 2).copyTo(rng.offset(0, 2), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
            rng.offset(0, 2, 1, 2).setNumberFormat('dd.MM.yyyy HH:mm:ss');
        }  
    }
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
что бы Таймштамп в рабочей зоне станка (столбец "время начала обработки") отображал дату и время ... относительно статусу "в работе"

Ок, сделано - вставкой формулы в колонку "время начала обработки" и последующим превращением результата в значение без формулы. Сделал также одновременное заполнение и второй колонки "время окончания обработки" - формулой. Сразу после создания формула отображает пустую строку, но, как только статус операции станет "Выполнено", в ячейке отобразится время установки этого статуса. Фрагмент процедуры onEdit после комментария "прописывание тайм-штампа" приобретает следующий вид (по моей ссылки уже заменено):

[vba]
Код
    // прописывание тайм-штампа в колонку "время начала обработки"
    var valToFindHeader = rng.getSheet().getRange(1, rng.getColumn(), rng.getRow()).getValues();
    var mapVal = valToFindHeader.map(v => v[0].toString().toLowerCase());
    if (~mapVal.indexOf("номер и обозначение детали")) {
        if (!rng.isBlank() && rng.offset(0, 2).isBlank()) {
            // время начала обработки (после вставки будет сохранено как значение)
            rng.offset(0, 2).setFormula('=INDEX(SORT(FILTER(\'Списки\'!D3:D;\'Списки\'!C3:C="В работе";\'Списки\'!E3:E='
                    +rng.getA1Notation()+');1;FALSE);1)');
            // время окончания обработки (после вставки останется формулой)                            
            rng.offset(0, 3).setFormula('=IFERROR('
                    +'INDEX(SORT(FILTER(\'Списки\'!D3:D;\'Списки\'!C3:C="Выполнено";\'Списки\'!E3:E='
                    +rng.getA1Notation()+');1;FALSE);1);"")');
            SpreadsheetApp.flush();
            // время начала обработки превращаем из формулы в значение
            rng.offset(0, 2).copyTo(rng.offset(0, 2), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
            rng.offset(0, 2, 1, 2).setNumberFormat('dd.MM.yyyy HH:mm:ss');
        }  
    }
[/vba]

Автор - Gustav
Дата добавления - 22.02.2023 в 16:06
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!