Евгений Смирнов написал: WS27 Здравствуйте. Этому кто вас научил. ЦитатаRange("ИТОГИ").Select
Цитата
Дмитрий(The_Prist) Щербаков написал: Меня, например, очень интересует что за диапазон такой "ИТОГИ"? Это диапазон или лист? По описанию вроде лист, а по коду - диапазон. Если диапазон - на каком листе он расположен? Зачем его выделять перед закрытием? Какой лист должен остаться видимым? Без ответа на эти вопросы выдать правильный код будет сложно, а описание не "бьется" с кодом
на листе ИТОГИ имеется умная таблица у которой название диапазона такое же - ИТОГИ
Есть книга в которой содержится несколько листов, при закрытии книги использую макрос скрывающий необходимые мне листы, после этого необходимо из всех остальных листов (их тоже может быть несколько) остаться на активном листе с названием ИТОГИ.
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Лист1").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("Лист2").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("Лист3").Select
ActiveWindow.SelectedSheets.Visible = False
Range("ИТОГИ").Select
End Sub
При первом тесте все работает, но при повторном открытии и закрытии файла вылетает ошибка: run time error 1004, вероятно что макрос говорит скрыть листы которые уже скрыты, как это можно учесть в коде?
Добрый день, подскажите как реализовать код макроса (в макросе хотелось бы иметь возможность прописать порядковые номера строк которые должны быть закреплены , как только они попадают в поле зрения Нужно сделать динамически закрепленную строку на 1 листе Есть файл/лист на котором n-число таблиц, на при перемещении по листу на 30 строке появляется таблица однострочную шапку которой необходимо закрепить как только она исчезнет из поля зрения (100строчка -конец таблицы), при дальнейшем перемещении по листу вниз на 250 строчке(начало другой таблицы) появляется новая таблица с другой однострочной шапкой которую необходимо закрепить, (конец этой таблицы на 500 строчке) и тд… и при перемещении вверх по листу чтобы закрепленные строки корректно отображались,… сначала 250, а как только она скрывается снизу то в закрепленных строчках становилась 30, надеюсь понятно изложил)
Чтобы была возможность управлять запросом только первыми двумя параметрами f и n, подскажите пожалуйста как правильно нужно прописать элемент кода( в шаге источник заменить [LOCATION_ОБЩИЙ] на параметр f без ошибок...?
Код
let
f="LOCATION_ОБЩИЙ", /* имя умной таблицы и название столбца откуда брать инфу(без кавычек)*/
n=1,
m = Text.From ( Excel.CurrentWorkbook(){[Name=f]}[Content]{n}[ЛИСТ]),
Источник = Excel.Workbook(File.Contents(Excel.CurrentWorkbook(){[Name=f]}[Content]{n}[LOCATION_ОБЩИЙ]), null, true),
#"Лист" = Источник{[Item=m,Kind="Sheet"]}[Data]
in
#"Лист"
Всем спасибо за помощь! Ігор Гончаренко, макрос идеально работает, спасибо!!! есть пара вопросов: 1. Можно ли добавить возможность работы макроса только для поля где слева указано число допустимых знаков, а не на всю колонку? если стоит допустимое число знаков после запятой 0, то только тогда срабатывать, а если пустая ячейка? то туда можно записать что угодно, в каком либо формате... 2. Если изменится число допустимых знаков в этом же файле (станет меньше), то приходится проверять введенное значение и править, можно сделать чтобы при изменении числа допуст.знаков поле расход автоматически учитывало сколько знаков нужно показывать и отсекало лишнее если знаков стало меньше, а если стало больше, то без изменений?
Добрый вечер, помогите пожалуйста решить следующую задачу: Имеется файл, доступ к которому есть у многих человек, каждый заполняет свои определенные данные, но при внесении данных в колонку "Расход" нужно учитывать допустимое число знаков после запятой (в файле имеется соседняя колонка), т.е если человек превышает указанное допустимое число знаков после запятой, то надо чтобы лишние знаки отсекались (без округления самого числа), если не превышает то просто записывается число, как это можно реализовать формулой или макросом может быть
Файл меняется каждый месяц, меняется число знаков после запятой, таблица объемная
StepanWolkoff написал: WS27, много слов, а толку мало... Как вы получаете данные из файлов? Один запрос к папке, где вы их сохраняете или к каждому файлу отдельно? Файлы имеют одинаковую структуру или разную? Дайте больше информации относящейся к сути вопроса, а не обстоятельствам.
Как получаю данные из файлов: только удаление ненужных столбцов ну и форматирование… приведение шапки к 1 виду Во всех запросах запрос конкретно к файлу (через параметризацию путей к файлам)сохраняю в разных местах… Структура 9 файлов разная, в самих 9 запросах я привожу их к 1 виду стобы схлопнуть в общем запросе
Добрый день, помогите пожалуйста решить следующую задачу: имеется ГЛАВНЫЙ ЗАПРОС (который выводится на лист, суть которого "ДОБАВИТЬ ЗАПРОСЫ"), куда загружаются данные из 9ти запросов (доступные только для подключения) файлы для этих 9 запросов мне приходят в разные дни месяца, все файлы сохраняю в определенное место, путь к которым прописан в запросах для подключения, под конец месяца у меня имеются все 9 файлов и я наконец могу обновить ГЛАВНЫЙ ЗАПРОС, Можно ли сделать так чтобы не имея всех необходимых файлов можно было бы обновить ГЛАВНЫЙ ЗАПРОС без ошибки DataSource.Error.... (не удается найти файл)
В идеале как я вижу это должно работать: например, в середине месяца у меня есть 5 файлов, соответственно по ним мне надо получить общие данные и надо чтобы в ГЛАВНЫЙ ЗАПРОС попали только файлы которые у меня имеются, а так файлы которые не получены еще но участвуют в ГЛАВНОМ ЗАПРОСЕ не попадали в список с обходом ошибки DataSource.Error через несколько дней я получаю след файл , теперь у меня их 6 и теперь снова могу обновить ГЛАВНЫЙ ЗАПРОС и получить общие данные уже не из 5 а из 6 файлов и т.д.
я так понимаю что этот параметр выдает текущий месяц всегда, но мне нужно чтобы у меня была возможность смотреть другие месяцы тоже, поэтому и хотелось бы задавать необходимый месяц где нибудь в 1 месте, а не в в 15
Добрый вечер! У меня такая задача: каждый месяц приходят 10-15 файлов и мне нужно их обработать и собрать определенные данные, чтобы ускорить этот процесс сделал параметризацию путей к данным в Power Query согласно данной теме, все работает с разными файлами, но проблема в том что во всех этих запросах приходится вручную переписывать номер листа (во всех файлах нужный лист это цифры... от 1 до 12(это текущий месяц), так вот если я в сентябре обрабатывал данных то во всех запросах ставил цифру 10, в след месяце(ноябре) надо ставить 11... Имеется умная таблица с именем LOCATION_ОБЩИЙ из 1 столбца в которой прописаны пути к каждому файлу, на 4 строчке ставлю число 10(это текущий месяц) и хотелось бы менять только эту строчку на другие месяца и чтобы подтягивались данные с соответствующего листа из каждого файла, подскажите как это реализовать?
RAN написал: Sub qq() Dim ar, ar1 Dim crit$ Dim oDic As Object, oDic1 As Object Dim i&, ColNumber& crit = "yes" ' "no" "yes" With ActiveSheet ColNumber = Selection.Column - .AutoFilter.Range.Column + 1 ar = .AutoFilter.Range.Columns(ColNumber).Value ar1 = Selection.Value Set oDic = CreateObject("Scripting.Dictionary") Set oDic1 = CreateObject("Scripting.Dictionary") For i = 1 To UBound(ar1) oDic1.Item(ar1(i, 1)) = oDic1.Count Next For i = 1 To UBound(ar) If crit = "yes" Then If oDic1.exists(ar(i, 1)) Then oDic.Item(ar(i, 1)) = oDic.Count End If ElseIf crit = "no" Then If Not oDic1.exists(ar(i, 1)) Then oDic.Item(ar(i, 1)) = oDic.Count End If End If Next Erase ar ar = oDic.Keys .AutoFilter.Range.AutoFilter Field:=ColNumber, Criteria1:=ar, Operator:=xlFilterValues End With End Sub
Бывают случаи когда нужно из моего списка выбрать несколько значений, я это выбираю с помощью выделением нужных диапазонов, с зажатой клавишей CTRL, при таком действии возникает ошибка в выделенной строке кода, я так понял ругается именно на одиночные диапазоны (выделена только 1 ячейка), при 2 и более выделенных ячеек ошибки нет, как это можно оптимизировать?
У меня есть макрос который использую следующим образом: Список критериев для фильтра ставлю чуть ниже основной таблицы (главное чтобы колонка совпадала), выделяю весь мой вставленный список, применяю макрос, в итоге в основной таблице все отфильтровано по тем критериям которые мне нужно. Кол-во критериев для фильтра - большое список счетов от 1000 до 7000, поэтому вручную отмечать не вариант.
Код
Sub Filter_po_vudeleniy() ' фильтр по выделению
Dim filterRange As Range, filterValues() As Variant, cl As Range, i As Integer, rng As Range
Set filterRange = Range("A1")
Set rng = Selection '
If rng.Cells.Count > 1 Then Set rng = rng.SpecialCells(xlCellTypeVisible)
ReDim filterValues(1 To rng.Count)
i = 0
For Each cl In rng
i = i + 1
filterValues(i) = cl.Text
Next cl
Dim ColNumber As Integer
ColNumber = rng.Column - filterRange.Column + 1 ' Val(InputBox("COLUMN Number"))
filterRange.autofilter Field:=ColNumber, Criteria1:=filterValues, Operator:=xlFilterValues
End Sub
Мне нужно создать похожий макрос но чтобы действовал наоборот... как я это вижу: Список критериев для фильтра ставлю чуть ниже основной таблицы (главное чтобы колонка совпадала), применяю макрос, в итоге в основной таблице все отфильтровано и список который я вставлял ниже, не попали в отфильтрованную таблицу Похожий интерфейс есть в стандартном фильтре (фильтр> НЕ РАВНО), но с его помощью можно отсечь ненужные значения 1-2, а не огромный список
По возможности сразу как можно применить другие критерии типа (фильтр> СОДЕРЖИТ, фильтр> НЕ СОДЕРЖИТ) но с возможностью фильтрации по большому списку/выделенному диапазону, такое нужно, но намного реже чем фильтр> НЕ РАВНО
Имею большую таблицу содержащую и текст и цифры( в одной колонке либо тект, либо цифры), имеется однострочная шапка к этой таблице+автофильтры, хотелось бы иметь макрос действующий следующим образом: встав на любую ячейку в шапке и вызвав макрос хотелось бы иметь формулу(вместо наименования графы шапки активной ячейки) ПРОМЕЖУТОЧНЫЕ.ИТОГИ(109; «диапазон по всей колонке, ниже активной ячейки). Подскажите пожалуйста как это можно реализовать?
Msi2102, спасибо за помощь, как можно сделать чтобы выделял абсолютно все?
Цитата
Александр Моторин написал: ColBat = ThisWorkbook.Colors(40) 'получаем выбранный код цвета
у меня при его запуске всегда текст красится одним цветом(бледнооранжевый), независимо от того какой я выбрал, проблема в этой строке? как сделать чтобы цвет вставал именно какой я выбираю?
Добрый день! Помогите пожалуйста решить следующую задачу: Часто приходится разгребать документы где очень много текта/цифр и тд...из всего это текста мне нужно определенные значения, сейчас я нахожу их с помощью след макроса:
Скрытый текст
Sub Выделить() Application.ScreenUpdating = False Dim c As Range, s$, i&, L& s = InputBox("", "Введите слово", "") If s = "" Then Exit Sub L = Len(s) For Each c In Cells.SpecialCells(xlCellTypeConstants, xlTextValues) i = InStr(1, c, s, vbTextCompare) If i > 0 Then With c.Characters(i, L).Font .Bold = True .Color = vbBlue End With End If Next Application.ScreenUpdating = True End Sub
выделяю необходимый мне диапазон, будь то строка, столбец или лист и запускаю этот макрос, ввожу ключевую фразу, которую мне необходимо выделить и он быстренько мне все делает. Но есть потребность выделять эти фразы разными цветами.. и хотелось бы иметь возможность выбора цвета(без переписки макроса ручной замены кода)
Как я это вижу: 1. выделяю нужный мне диапазон 2. вызываю макрос 3. в поле ввожу свою ключевую фразу (и вот здесь бы хотелось иметь возможность выбора цвета,по примеру как это реализовано в самом Excel, например вызов формы (во вложении))
действительно все работает, большое СПАСИБО!!! Еще вопрос...файл всегда должен быть открыт? или его можно как нибудь спрятать в модуль книги по умолчанию?
P.S. попробовал , ругается на строчку If InStr(Wb.ActiveSheet.Range("A1"), "ИТОГ") Then
получается новая книга, не так выразился, закрывать приходится каждый файл. (1 - ненужный отчет = 1 файл)
Цитата
Hugo написал: 2. Для всех листов или книг, которые должны НЕ остаться открытыми в этой ячейке могут быть разные значения?
все книги должны быть закрыты , и у этих всех книг содержание ячейки "А1" всегда одно "1. ИТОГ", хоть для 1 отчета, хоть для 101
если возможно, то сделать чтобы если текст ячейки "А1" содержит "ИТОГ", то все эти книги должны быть закрыты, в противном случае другие окна/книги не должны быть закрыты
Hugo написал: Реально. Если все файлы открываются в одном приложении.
пока работает программа она по готовности выгружает один лист EXCEL, и дальше продолжает работать, по окончании снова открывает новый лист....если подождать достаточно долго (час/полтора) то в итоге получается открыто много окон, которые приходится все закрывать из-за их ненадобности
Цитата
Hugo написал: Но не понял критерии отбора - что должно быть в A1 в той книге, которая должна остаться открытой?
для всех листов которые должны остаться открытыми в этой ячейке могут быть разные значения: может быть пусто, может быть текст "2. Ошибки", может быть текст "3. Характеристики"
При работе в сторонней программе, периодически открываются окна с так называемыми "ненужными отчетами", которые хотелось чтобы сразу закрывались автоматически, при условии если в ячейке "А1" будет содержаться определенный текст, например "1. ИТОГ" Если появится другое лист "нужный отчет", то имя в той же ячейке "А1" будет всегда другим.
Подскажите как можно это автоматизировать? желательно чтобы "ненужные отчеты" закрывались сразу, без всплывающего окна (сохранить изменения в файле)