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

Страницы: 1
Вставка массива или автозаполнение. Как я это сделал?, Каким-то образом вставил целые области, но не могу это повторить.
 
Добрый день! У меня тут случился небольшой казус. Буквально позавчера работал с Книгой. Создал в ней отдельный Лист и каким-то неведомым мне образом вставил туда целые области ячеек.
Вроде бы использовал только CTRL+C, CTRL+V.
Не знаю, как описать результат, но он отличный получился. Просто выделял нужные области с других Листов, переходил на нужный Лист, кликал в ячейку и вставлял - а вставлялось как будто массивом. Это видно на скринах.
Если кликнуть на верхней ячейке, то в области формул черным цветом. Если ниже - то серым. И куда ни кликни - выделяется конкретная область массива. Такая синеватая тонкая рамка.

И всё бы отлично, но сегодня уже три часа пытаюсь повторить то же самое, с этими же Листами, этими же областями - не получается так же вставить. Хочу просто правее продолжать вставку - а не получается. Максимум, можно выбрать вставку "Значения", "Ссылку" - но это не то.

Как я это сделал? Как сделать так же? Я себе всю голову сломал. Пробовал гуглить "Вставка массива", "Синяя рамка" и пр. Всё не то.
Изменено: boberchik - 26.05.2023 11:41:46
VBA Фоновое открытие Книг в папке, кроме уже открытых, Макрос должен открывать все Книги в папке, кроме уже открытых
 
Ребята, всем привет! Помогите доработать макрос. Я его нашел на просторах интернета, добавил к своей Книге - работает, но есть нюансы.

Изначальная задача: при открытии Альфа-Книги необходимо в фоновом режиме открыть все Книги в Папке, сохранить изменения и закрыть.
Тестовый запуск показал, что файлы открываются, сохраняются и закрываются нормально. Но только до тех пор, пока не случается ситуация, когда один из файлов в Папке уже кем-то открыт. Тогда работа макроса приостанавливается с запросом сохранения данного файла.

Как бы мне сделать так, чтобы макрос пропускал файлы, если они в данный момент уже открыты?

Если для этого нужно полностью изменить конструкцию макроса - я не против. Файлов в Папке небольшое количество - около 10шт, т.е. даже без изящных циклов LOOP можно, например, просто подряд записать команды для каждого из файлов. Да, топорно, но главное, чтобы работало.

Код
Sub update()
With Application 'операции с приложением/отключаем для повышения скорости работы макроса
.ScreenUpdating = False 'обновление экрана
.DisplayAlerts = False 'вывод системных сообщений
Папка = "C:\Test\"
'------------ Excel-файлы в этой папке ------------------
Имя = Dir(Папка & "*.xlsx")
Do While Имя <> ""
With .Workbooks.Open _
(Filename:=Папка & Имя, UpdateLinks:=True)
'здесь Ваш макрос делает свое грязное дело
.Close SaveChanges:=True
End With
Имя = Dir
Loop
.ScreenUpdating = True 'обновление экрана
.DisplayAlerts = True 'вывод системных сообщений
End With
End Sub
Изменено: boberchik - 23.03.2023 11:52:00
Собирать статистику, чтобы потом построить график изменения цены, автоматическое заполнение ячеек с заданным периодом
 
Добрый день, ув. гуру ! Прошу помощи, может, какие идеи есть. Суть задачи:

Есть Книга, в которой один Лист. По сути - прайс. Столбец "Наименование" и Столбец "Цена". Значения цен постоянно на протяжение многих лет корректируются вручную - рандомно в зависимости от изменений цен на товар. Какие-то позиции раз в неделю. Какие-то раз в год. Этот процесс нормальный, всех устраивает.

Но нужно собирать статистику, чтобы потом построить график изменения цены.
То есть в отдельном Листе иметь тот же список товаров и много столбцов с Ценой, столбцы с шагом в 1 месяц, например. И чтобы один раз в месяц в определенное время значение текущей цены товара заносилось в Лист Статистики в первый столбец. Через месяц - во второй столбец. Через месяц - в третий столбец. И так далее.

Лично я пока вижу общее решение только такое. Процесс заполнения ячеек как мне кажется должен выполнять Макрос (тут я увы ноль). А открытие файла в определенное время - какой-то bat или powershell (я уже создавал скрипт на обновление связей, но это тупо копипаст из интернета, я только лишь пути свои поставил, создать с нуля я бы не смог). Скрипт открывает файл, ждет 5 секунд, сохраняет и закрывает. Это работает нормально.

Погуглил тему Powershell Excel. Нашел вот такое на просторах рунета
На 80% уверен, что это тот самый нужный мне инструмент. Осталось дело за малым  :cry:  Изучить язык Powershell.
Изменено: boberchik - 11.11.2021 11:58:58
Макрос "Обновление связей". Несколько книг со связями
 
Добрый день всем! Есть вроде бы простая задача, которую мне никак не удается решить.

Есть несколько книг: первая книга - самая простая, простой "справочник", наименование товара и его цена на сегодняшний день (под сотню-другую строк). Эта книга вручную корректируется довольно часто (цены же растут). Назовем ее Книга №1.

Второй тип книги - "основной расчет", в книге несколько Листов. На этих Листах формулы ссылаются на Первую книгу и содержат формулы "ВПР", ну то есть поиск цены для конкретного товара.

Книг второго типа несколько, в каждой - десятки Листов, на каждом Листе - сотни формул. Назовем эти книги "Книги №2.1, 2.2, 2.3 и т.д.)

И есть третий тип Книги. Я назвал ее "сводная". Она собирает во всех Книг второго типа данные. Формулы очень сложные. С помощью этого форума я смог сделать формулу практически универсальной вида ИНДЕКС (ПОИСКПОЗ.... ; ПОИСКПОЗ;....). Учитывая, что путь к файлам находится на сервере, типа X:\Каталог номер 1\Каталог номер 2\[Название книги номер 1]Лист такой-то!...и так далее, формула с трудом умещается на 2 строчках. Но не суть. Назовем ее Книга №3.

Проблема: Книга третьего типа (№3) при открытии НЕ учитывает изменение данных в Книге №1. Чтобы результаты расчетов стали актуальными нужно открыть каждую Книгу 2.1.....2.10, ничего не меняя в ней сохранить её. И тогда уже открывать Книгу №3.

В принципе, наверное, это логично. С точки зрения Excel 2013. Но капец как неудобно.

Основная цель: чтобы после изменения значений цены в Книге №1 (и её закрытия) значения в Книге №3 были актуальными БЕЗ необходимости открывать Книги №2.1....2.10.

Я тут основательно погуглил "обновление связей макросом". Даже попробовал внедрить в Книгу №3 эти макросы. Разные. Результат нулевой. Что сделал:

1. В Книге №3 поставил при открытии Книги "Не задавать вопрос и обновлять связи".
2. В Книгах №2.1...2.10 сделал то же самое.
3. Попытался в Книгу №3 разные макросы вставлять. Тут самое трудное, т.к. я вообще ничего не понимаю в VBA. Всё, что могу - тупо скопипастить код.

Я нашел вот такие:

Первый - обновляет каждые x минут/секунд. Я сделал каждые 2 секунды. Результат - счетчик в ячейке X1 тикает, макрос работает, но

Код
Sub go_()
    Up_
End Sub
Sub Up_()
    Dim tn_
    ActiveWorkbook.RefreshAll
    tn_ = TimeSerial(Hour(Now) + 0, Minute(Now), Second(Now) + 2)
    Range("X1") = Range("X1") + 1
    Application.OnTime tn_, "Up_"
End Sub


И второй, вроде как должен решить мою задачу, но увы. Ничего не меняется. Кстати, скопировал сюда макрос и только что увидел, что расширение стоит .xls, а у меня все файлы .xlsx, и у Книги №3 .xlsm (из-за макросов), может быть причина в этом? Щас попробую ... А, всё, увидел - там звездочка в конце.
Код
Sub update()
With Application 'операции с приложением/отключаем для повышения скорости работы макроса
.ScreenUpdating = False 'обновление экрана
.DisplayAlerts = False 'вывод системных сообщений
Папка = "C:\тест\"
'------------ Excel-файлы в этой папке ------------------
Имя = Dir(Папка & "*.xls*")
Do While Имя <> ""
With .Workbooks.Open _
(Filename:=Папка & Имя, UpdateLinks:=True)
'здесь Ваш макрос делает свое грязное дело
.Close SaveChanges:=True
End With
Имя = Dir
Loop
.ScreenUpdating = True 'обновление экрана
.DisplayAlerts = True 'вывод системных сообщений
End With
End Sub

Все эти коды я нашел на просторах инета, автор их - не я.

upd: изменил отображение кода
Как задать имя листа формулой и использовать в другой формуле
 
Добрый день, ув. форумцы! Никак не удается решить одну проблему.
Есть лист в книге, в котором я свожу все данные со всех листов. В одном из столбцов есть формула вида ИНДЕКС(Э.40!$A$2:$BG$200;ПОИСКПОЗ... и так далее (и там тоже есть 3 раза указание массива на листе Э.40 с указанием ячеек.

Так вот проблема в том, что простой протяжкой не удается получить результат по той причине, что листов в книге очень много. Например: Э.40, Э.50, Э.55 и так далее, Т.20, Т.30, Т.40, Т.42.
Но имя листа четко подчиняется одному правилу. И я могу вставить еще один столбец и в нем будет автоматически прописано Э.40...Э50....Т.30.... и так далее.

Но как в формулу с ИНДЕКС(Э.40!.......) вставить ссылку на ячейку соседнего столбца? Сделав таким образом формулу полностью универсальную.

А щас приходится менять формулу для группы строк (менять 40 на 50, менять Э на Т и так далее)

То есть как задать конкретное указание Листа в книге через ссылку на ячейку, в которой прописана формула типа Сцепить "ЛЕВСИМВ"&".".... ну понимаете о чем я.  
Как задать массив в ИНДЕКС начиная с ячейки, определяемой формулой ?, Как задать массив через формулу?
 
Уважаемые гуру! Очень многому научился с помощью этого ресурса. Нашел ответы на многие вопросы. Но тут никак не могу разобраться.

Суть задачи такая, попробую максимально упростить. Есть Лист1 и Лист2.


На Лист1 у меня ячейка с функцией ИНДЕКС, внутри которой столбец и строка задаются через ПОИСКПОЗ.

И тут самое интересное. Если просто оставить табличку "альфа" и 5, 6, 7; то ПОИСКПОЗ я могу легко использовать для поиска нужного столбца. Но у меня как бы 3 и более "подтабличек", и значения могут повторяться, т.е. просто ПОИСКПОЗ нельзя использовать.

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

Щас попробую пример оформить получше, минуту

Добавил пример. Описание немного корявое. Но суть вроде ясна. Назову область ячеек у Альфа и Бета "субтаблица", они на одном листе. Модификация внутри субтаблицы всегда разная. То есть не может быть 6,6,7,7,8.... Только 6, 8, 12, 20, 50 и т.д.
То же и у Беты. Но у Альфы и Беты могут быть одинаковые модификации. Например, и там, и там 8, 10.

Логично, что в ПОИСКПОЗ нужно задавать начало массива формулой, которая будет определять Альфа или Бета
Изменено: boberchik - 11.03.2019 15:15:49
Страницы: 1
Наверх