StepanWolkoff, К сожалению этот код не является полностью моим полностью магию как происходит подключение я не понял, но вставлять в ячейку результат надо ибо в последствии будет много разных запросов с одним числом из разных БД. Просто париться с аксесовскими отчетами откровенно говоря не хотелось, они реально ужасны.
Здравствуйте уважаемые формучане, в файле примера, при его запуске вылезает форма, которая позволяет выбрать месяц и год и на основе этих данных получить отчет на листе эксель, но при работе выдает ошибку "1004 синтаксическая ошибка sql" и ругается на строчку .refresh backgroundquery:=false. Кто может подсказать в чем может быть проблема, и может быть в принципе мой способ получение sql запроса не оптимальный.
Здравствуйте уважаемый формучане. Есть задача подсчитать количество ячеек подходящих под шаблон, например:
123
213
123
123
213
1
Для это таблице функция должна выдать 5, если шаблон ### (любые числа). Для этого написал небольшой макрос, но почему-то он не выдает ошибок в работе, но всегда выдает ЗНАЧ. P.s. Существует ли способ используя функцию СЧЁТЕСЛИ решить аналогичную задачу? По определенному значению, только пустые или только заполненные, она позволяет посчитать, может и шаблон тоже возможно подсчитать с ее помощью? Код макроса:
Код
Function ТЕКСТКАК1(text As Range, patter As String) As Boolean
Dim I, arr, S
arr = Intersect(text, text.Parent.UsedRange).Value
For I = 1 To UBound(arr)
If arr(I, 1) Like patter Then
I = I + 1
End If
Next
ТЕКСТКАК1 = I - 1
End Function
Изменено: FastPuppy - 05.02.2018 09:07:11(Добавил файл примера и исправил код в соответствии с комментариями)
Спасибо, очень круто!!!! Правда почему-то у меня не работает этот макрос
Код
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Columns("H")) Is Nothing And Target.Count = 1 Then
arr = Range("C3:H" & Cells(Rows.Count, "H").End(xlUp).Row).Value
With CreateObject("Scripting.Dictionary")
For I = 1 To UBound(arr)
If arr(I, 6) <> Empty Then iTemp = .Item(Format(arr(I, 1), "mmmm yyyy"))
Next
With Worksheets("Лист1")
.Range("A1:A" & .Cells(.Rows.Count, "H").End(xlUp).Row).ClearContents
End With
Worksheets("Лист1").Range("A1").Resize(UBound(.Keys) + 1) = Application.Transpose(.Keys)
End With
End If
End Sub
Sanja, Спасибо, то что надо!!! А еще не подскажите как мне ограничить диапазон по двум условиям? Я так понимаю конструкция ИНДЕКС(ссылка;ПОИСКПОЗ()) дает выбрать только одно условие, да и если честно запусть ее в функции БРАК у меня не получилось.
Смотрите на листе БД В колонке брак у меня стоит один раз трещина и два раза размеры(Дата поступления в октябре). И в колонке причины брака я руками написал Трещина - 1 шт. Размеры - 2 шт. Следовательно если я выбрал б ноябрь 2017 в шапке таблицы на листе Участок я б написал просто скол - 2 шт., так как на листе БД в напротив ноября в колонке Дата поступления у меня две ячейки скол То есть что должен уметь макрос 1) Отбирать диапазон ячеек колонки БРАК, на основе колонок ТИП, Эксп. Дата поступления. (как это реализовано в колонках Получено, брак, годные, передано, в работе листа Участок) 2) Из этого диапазона записывать значения ячеек БРАК листа БД в ячейку Причины брака листа Участок в формате Значение ячейки - (количество повторных значений) шт. Постарался по подробнее описать. Сылку на таблицу даю через гугл диск так как из-за одной форму она весит 5 мб https://drive.google.com/open?id=1VkunekUWJkFAL9vZHlILkIrk9kUEFJAk
Sanja, Отличная функция, которая очень выручает, было б совсем круто если б она еще умела произвольный текст копировать из столбца, и если есть повторения так же сортировать их по штукам, но это я уже сам допилю. Большое спасибо за помощь в ситуации!!!
В ходе работы над таблицей встала следующая задача, на листе БД, есть поле брак и мне нужно, что б все текстовые значения поля брак, через запятую переносились в ячейку F5 листа УЧАСТОК(если они посимвольно повторяются, то было б круто если б писалось "Брак - 2 шт."), с теме же условиями проверки, как и для ячейки C5 того же листа. То есть, что б значения брались только из диапазона ограниченного столбцами ТИП и Эксп, листа БД. и месяцев при выборе его из выпадающего списка. Можно ли эту задачу решить стандартными средствами excel? Если нету, то прошу посильной помощи в создании пользовательской функции.
Ps Динамический список с автоматическим добавлением месяцев по мере заполнения листа БД работает, просто через костыль, который раздувает файл до 5 мегабайт веса, так что в примере это удалил.
До последний не обязательно конечно, но без столбца, который сначала выдергивает месяц из колонки даты на листе БД, а потом создает аналогичный без повторений месяца, у меня не получится создать динамический список на листе Участок №491. К слову почему-то расширенный фильтр с проблемой справиться не помогает, выдавая ошибку "ссылка". Короче я худо бедно смог решить задачу взяв макрос (вроде даже с вашего сайта)
Код
Function Уник(ByVal ra As Range) As Variant On Error Resume Next: Dim cell As Range, coll As New Collection, txt$ For Each cell In ra.Cells txt$ = Trim(cell): If Len(txt$) Then coll.Add txt$, txt$ Next cell ReDim newarr(1 To coll.Count, 1 To 1) For i = 1 To coll.Count: newarr(i, 1) = coll(i): Next i Уник = newarr End Function
Попробовал написать свой макрос на копирование уникальных ячеек до тех пор пока не появится пустая ячейка, но чет напортачил
Код
Sub Test2() ' ActiveSheet.Cells(1, 4).Select i = 1 Do Until IsEmpty(ActiveCell) If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then ActiveCell.Offset(1, 0).Select Else Selection.Copy ActiveSheet.cell(i, 1) i = i + 1 End If ActiveCell.Offset(1, 0).Select Loop End Sub
Здравствуйте, уважаемые форумчане. Столкнулся с следующей проблемой в данном файле на листе "лист1" столбец А был заполнен формулами(=ЕСЛИ(СЧЁТЗ('Участок № 491 БД'!C3);ТЕКСТ('Участок № 491 БД'!C3;"ММММ ГГГГ");"")) до конца, а потом с помощью удалить дубликаты оставались только уникальные значения. Так вот еще вчера все работало как надо, но почему-то сегодня данный столбец ( а нужен он для динамического списка) перестал работать как надо, функция мгновенное заполнение не хочет работать ни в каком виде (двойной клик по крестику или через работу с данными). Файл по каким-то непонятным причинам раздуло до размеров в 5 мегабайт, по этому делюсь им через гугл диск https://drive.google.com/open?id=1nt1TxQjJQPdts5o8ljGdjilgnrY9Jlz-
Сергей написал: что дальше каков результат должен получится
Вот так примерно должна выглядить эта таблица, и я представляю как сделать каждую ячейку например за последние 30 дней. Но мне хотелось б что б пользователь могу это делать динамически выбирая месяц на основе столбца "Дата поступления"
Получено
Брак
Причины брака
Годные
Передано
В работе
На складе
Сумма полей "дата поступления"
Сумма полей "Комментарии/брак"
Дублирование полей "Комментарий/Брак"
Сумма полей № Датчик
Сумма полей "Дата передачи"-сумма полей "Брак"
Количество пустых полей"Дата передачи" напротив заполненных "Дата поступления"
Здравствуйте, уважаемые форумчани. В файле примера стоит след задача, есть лист БД и есть лист отчета. Скажите каким образом можно "перенести" фильтр по месяцам в выпадающий список на листе отчета? То есть, что б пользователь выбрал январь например и отныне все формулы в таблице отчета обсчитывали только таблицу с фильтром на январь в столбце дата поступления. Если резюмировать, то как мне возможно фильтр (и обсчет с учетом фильтра) перенести в выпадающий список. Как применить ИНДЕКС или СМЕЩ в данном контексте не в полной мере понял. Отдельной функции ФИЛЬТР к сожалению не нашел. Надеюсь правильно сформулировал свой вопрос, Заранее спасибо за помощь.