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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 16 След.
VBA. Фильтрация значений в нескольких столбцах, Что делать, если нет искомого значения в фильтре?
 
PerfectVam, автор в посте #1 и в посте #5 задает разные условия :)

Мой код примера написан для условий из поста #1 ("убирать фильтр с третьей колонки, если там нет подходящих критериев")
Вы же, видимо, хотите показать на новом примере, что не выполняются условия из поста #5. Но для этого и код надо поменять под новые условия :)
Вопрос- как подставляется формула
 
Цитата
YouRock написал:
а какие условия ? расскажите эти мелочи, пожалуйста
Цитата
Расширять форматы и формулы в диапазонах данных — в этом режиме при добавлении ячеек в конец столбца или строки в них будет автоматически использован формат предыдущих ячеек. Кроме того, если предыдущие три или более ячейки содержали одинаковые формулы, то эти формулы также будут внесены в добавляемые ячейки.
VBA. Фильтрация значений в нескольких столбцах, Что делать, если нет искомого значения в фильтре?
 
Получилось примерно так:
Код
Sub fltr()

    ActiveWorkbook.Worksheets(1).Activate
    
    Set tbl = [a1].CurrentRegion
    Set tbl = tbl.Offset(1).Resize(tbl.Rows.Count - 1)
    tbl.AutoFilter Field:=4, Criteria1:="дефектура"
    tbl.AutoFilter Field:=3, Criteria1:="Автомат"
    Err.Clear
    On Error Resume Next
    cnt = tbl.Columns(3).SpecialCells(xlCellTypeVisible).Count
    errnum = Err.Number
    On Error GoTo 0
    If errnum > 0 Then tbl.AutoFilter Field:=3
    
End Sub

Потом ещё немного подумал, получилось так:
Код
Sub fltr()

    ActiveWorkbook.Worksheets(1).Activate
    
    Set tbl = [a1].CurrentRegion
    tbl.AutoFilter Field:=4, Criteria1:="дефектура"
    tbl.AutoFilter Field:=3, Criteria1:="Автомат"
    If tbl.Offset(1).Columns(3).SpecialCells(xlCellTypeVisible).Count = 1 Then tbl.AutoFilter Field:=3
    
End Sub
:)  
Изменено: AndreTM - 30.08.2017 11:57:10
Собрать данные (одинакового формата) из нескольких книг в одну сводную таблицу
 
Да без разницы, какое там количество исходных файлов - лишь бы они имели одинаковую структуру.
Приложите парочку образцов исходных файлов (если не жалко), и файл, где руками покажите, в каком виде вы хотите иметь результирующую таблицу (то что вы пытались нарисовать в #6)
Power Query обновление данных при пересылке файла
 
Ну, как говорится, всё зависит от того, что именно вы хотите получить (и как вы это готовите)  :)

Во-первых, попробуйте предложенный ниже вариант запроса.
Во-вторых - чтобы "срабатывало обновление там, где откроют файл - там тоже должен быть PowerQuery".
Изменено: AndreTM - 29.08.2017 23:11:03
Подставить текст из ячейки в Button
 
Что есть "Сотрудник_01"? Есть ли такой объект на листе "Процент"?
Почему вы проверяете ячейку "C3" (хотя ранее заявляли о "C4")
Относится ли данная процедура к листу, где вы проверяете ячейку "C3"?
И т.д.
Особенно по поводу "различных вариантов", из которых вы показали только один...

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

Иди вы считаете, что мы настолько гуру, что нам прямо таки всегда интересно ползать по вашим формулам  и пытаться понять, что и как вы там рассчитываете? Особенно интересно ползать и выяснять, аннуитетный или дифференцированный кредит вы считаете, а также, что вы подразумеваете под "суммой процентов", особенно в приложении к "за, допустим, <период>" без знания этого вашего "допуска" :)
Собрать данные (одинакового формата) из нескольких книг в одну сводную таблицу
 
А давайте так:
- сколько бывает исходных файлов? 2? 10? 100500?
- какие они имеют реальные имена и как лежат относительно рабочего файла с макросом? (брать из сети? из подкаталога? выбирает пользователь в диалоге?)
- формат исходных файлов (вернее, данных, которые собирать надо из них) всегда одинаков? Т.е. один и тот же лист, одно и то же расположение начала таблицы на листе?
- собирать надо в какой вид? Не надо показывать результаты "Консолидации" - лучше покажите, в каком виде вы хотели бы видеть собранный результат.

Тема: "собрать данные (одинакового формата) из нескольких книг в одну сводную таблицу"
Подставить текст из ячейки в Button
 
Ну "тады ой" :)
Пример вашей книги дадите?

Ну или вставьте реакцию не в события листа, а в события всей книги:
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, Sheets("Лист2").Range("C4")) Is Nothing Then
        Sheets("Лист1").CommandButton1.Caption = Target ' Лист1 - это лист, где ваша кнопка расположена
    End If
End Sub
Вопрос- как подставляется формула
 
Цитата
Ігор Гончаренко написал:
"Распространять формулы и форматы при расширении диапазона данных"
Например, в 2010 - не нашел такой галочки :)
Но включенная "Расширять форматы и формулы в диапазонах данных" дает вышеуказанный эффект. Правда, необходимо соблюдение ещё нескольких условий по расположению данных, но это уже мелочи...
Просто я несколько погорячился про то, что нужно что-то там ещё накручивать отдельно :)
Изменено: AndreTM - 30.08.2017 12:05:38
перенос всех формул с офиса 2013 на 2010
 
Ну, не надо так нервничать  :)

Если вам требуется "у себя" только один файл с сервера, в котром уже данные посчитаны на сервере, а вы будете у себя работать только со значениями, представленными в этом файле, то можно поступить так:
- периодически скачиваете тот файл к себе на компьютер, именно как файл
- из своего Excel с помощью макроса преобразуете полученный файл и в некую свою копию, которая будет содержать только значения, никаких связей и формул
- далее работаете со своей копией как с источником данных, для нужных вам расчетов, анализов и прочего

Естественно, вы не сможете при этом как-то влиять на "исходные данные" - чтобы что-то изменить на сервере, вам надо будет пойти на сервер и менять именно там. Но для "просто работы с уже имеющимися данными" вам такого подхода вполне хватит
Вопрос- как подставляется формула
 
Могу только предположить, что документ модифицирован с использованием OpenXML SDK (или создан в более поздних версиях Офиса, а открывается в более ранних, но поддерживающих парсинг соответствующих тегов, а также может быть создан сторонними приложениями, например, OpenOffice).
Изменено: AndreTM - 30.08.2017 12:06:06
перенос всех формул с офиса 2013 на 2010
 
Во первых, если вас "просят работать на сервере" - то вы должны работать на сервер. Удаленным доступом. Ваш компьютер и ваш Excel в этом случае совершенно не при делах. Кроме того, как справедливо замечено, переносить данные "к себе" вы может просто "права не имеете", как и возможностей, тем более, что не все формулы 2013 могут быть перенесены на 2010 "как есть", не говоря уже об имеющихся связях.

Во-вторых, проблема "он медленный и постоянно виснет" относится, скорее всего, не к серверу, а к вашему каналу интернета. Если вы через диалап выходите - так ничего странного :)
Решите проблему с каналом связи - и "проблем" не станет.
(Я, кстати, не могу себе представить, какой это нынче должен быть канал связи, чтобы удалёнка висла постоянно. При правильной настройке RDP (или других вариантов) - сейчас даже по GPRS можно работать нормально, уж поверьте человеку, который администрирует сервера на удаленке чуть ли не через "нокию 3110"  :D ). Может, проблему поискать в ваших настройках, а не придумывать того, что не нужно (и вредно, по большому счёту)?
VBA: ошибки при попытке задействовать функцию vlookup
 
Цитата
alex_j написал:
В моем рабочем файле я все так же получаю ошибку 91
Поместите все параметры Vlookup() в отдельные переменные, вызовите функцию с ними, и при возникновении ошибки - проверьте в окне Locals отладчика, что там в этих переменных находится.
Иначе без вашего "рабочего файла" - никак :)
Как "разобрать" сгруппированные строки по столбцам, чем то похоже с задачей которую решал Николай в макросе "Редизайнер"
 
Цитата
bortnik27 написал:
через макрос это можно реализовать?
Почитайте там
Уточнение стоимости работ, Прошу прикинуть стоимость работ
 
Вернусь и поучаствую  :D

Могу сделать за 50 тыс.руб. одноразово (по утверждении ТЗ).

Кстати, хочется сразу рассмотреть первичную хотелку от ТС.
Итак, "нельзя использовать макросы, PQ" (вывод - PP, PV тоже нельзя), "сводные диаграммы". Будем думать, что "Умные таблицы" тоже нельзя использовать, хотя это непринципиально. Остаются только Формулы, Имена (и динамические именованные диапазоны), Сводные (плюс Срезы только из них) и Диаграммы.
Ну прямо как на 10-15 лет назад переносимся :)
Интересно, у ТС "нет возможности использовать", или "запрещено политиками безопасности компании"? Если второе - то тогда что такая "современная в плане информбезопасности компания", которая, по идее, использует исключительно лицензионные продукты - имеет против совершенно современных облачных хранилищ и Power BI? С помощью которого, кстати, и должна бы решаться эта самая хотелка, причем легко и просто, самим заказчиком...
Сумма значений ячеек, не содержащих формул
 
Попробуйте исправить на (массивная):
Код
=СУММ(ЕСЛИ(ЕНД(Ф.ТЕКСТ(A2:A8));A2:A8))

И немассивный вариант:
Код
=СУММПРОИЗВ(ЕНД(Ф.ТЕКСТ(A2:A8))*A2:A8)
"Виртуальная" транспонация условия, (без записи в ячейки) для функции БИЗВЛЕЧЬ
 
Вряд ли.
С ячейками диапазона "Условия", заданного параметром в функциях работы с БД, сначала производятся вычисления (на предмет получения логических значений, потом столбцы соединяются через И, а строки - через ИЛИ. Так что нельзя обернуть этот параметр в дополнительные функции, типа ТРАНСП()

Попробуйте написать макрос, который будет брать ваш диапазон условий, и заполнять другой диапазон уже в нужном транспонированном виде, а в формулах используем ссылку на тот новый диапазон. Макрос, естественно, заставляем автоматически реагировать на изменения в вашем исходном диапазоне.
Консолидированный отчёт, Добавление новых строк исходных таблиц при формировании консолидированного отчёта
 
Вам вполне подошёл бы макрос из той темы.

Если у вас исходные таблицы оформлены в виде "Умных таблиц" - код макроса можно упростить. Или наоборот, не оформлять данные в виде таких таблиц.
Другое дело, что у вас хитро оформлены строки Итогов по каждому разделу подразделу - но ведь макросом же можно в конце проанализировать уже собранные данные.

С другой стороны, вы действительно можете использовать сводную таблицу, или другие методы для группировки данных и расчета итогов.
При этом Вам не надо в сами исходные данные подставлять итоговые строки - надо просто добавить столбцы "Блок" и "Цех". В итоговой таблице/сводной вы сгруппируете данные по Блокам, Разделам и т.д., и итоги можете указывать любые, какие вам надо, включая общий.
Если же работникам надо видеть итоги и по своему листу (в процессе заполнения) - так просто рядом с их таблицами, на их же листах, сделайте по сводной и для них, где будут показываться итоги только соответствующей таблицы.
Изменено: AndreTM - 27.08.2017 16:27:32
Сумма значений ячеек, не содержащих формул
 
Ещё раз.
Я говорю не о дополнительных столбцах для проверки "придуманных вами" условий (и какие такие разные листы книги и зачем надо метаться? - в вашей книге ничего такого нет)  :)

Вопрос простой: зачем вы в один столбец  объединили и формулы, и "просто значения"?
В одном столбце проставляете значения. Ваши значения.
В соседнем - формулы. Ваши формулы, которые вы засунули в столбец со значениями.
И всё, никаких условных расчетов не надо. Суммируйте на здоровье свои факты, планы...

Могу предположить только, что вы собрали значения именно так только потому, что вы не можете по-другому их куда-то передать (например, в диаграмму в качестве источника данных для ряда). Но тогда надо было и об этом говорить, писать, и показывать.
С другой стороны, кто вам мешает отдельно иметь "ввод-расчет", эти самые два столбца, что вам показаны. И отдельно иметь ещё "столбец собранных данных" для источника диаграммы. Который соберется из "ввода-расчета" автоматически, но так, как надо для диаграммы?
Изменено: AndreTM - 27.08.2017 01:41:47
Как собрать данные с нескольких листов в один
 
Цитата
bylanovandrej написал:
что касается по коду, он выдает ошибку какую-то при запуске и собирает данные только с первого листа: с Лист1
И где этот код, и эта ошибка , и этот файл?
Без образца - это ни о чём.

Цитата
bylanovandrej написал:
если таких строчек будет по 50-100 тыс. то работа макроса может затянуться, с учетом того, что уже добавленные строки на Лист1, Лист2 и Лист3 не меняются, было бы куда практичнее, если бы при запуске макроса собирались только новые добавленные
Вы так уверены? А вы учитываете время, что сначала время уйдет на "сверку каждого из X листов по 50000 строк - со сводной" на предмет того, "что есть, что было"?
Потому что если вы как-то отмечаете отдельно строки, что добавлены - то это одно дело. А если нет - то уж извините, опыт яро протестует против ваших "рассуждений" :)

Причем я же вам тонко намекнул на то, что данные из листов-источников могут быть удалены - и что даст вам добавление в свод только "добавленных" на листы строк? Из свода же удаленные строки - не удалятся сами :)

Ну а уж эффективность алгоритма сбора сводной с точки зрения быстродействия - это вопрос отдельный. Почему вы считаете, что сведение данных должно выполняться с той скоростью, что вы заложили в ваш детский велосипед? Используете неэффективный алгоритм и средства - и вместо оптимизации начинаете придумывать костыли.
Одно только копирование с листа на лист через массив в памяти - повысит быстродействие на порядки. Не говоря уже о применении специализированных инструментов для обработки данных (того же PowerQuery или обработки SQL-запросами).
Изменено: AndreTM - 27.08.2017 01:13:41
Перемещение данных с нескольких листов в другую книгу
 
Вы логику можете понять? Что вы перебираете некие объекты (листы) и пишете тоже в некий объект (лист).

Я вам, кстати, в той теме, переписывал ваш макрос, и если бы вы разобрались, что именно там переписано - то не задавали бы текущий вопрос. Макрос, который умеет собирать данные, перебирая список (указанный вами же) листов какой-то книги. При этом он пишет результат на некий отдельный лист. Кто сказал, что результирующий лист должен находиться в той же книге, что и листы-источники? В моем примере ссылка на лист-результат поэтому и хранится в отдельной переменной.

Если Вы правильно назначите книгу-источник, листы-источники, книгу-лист-результат - то макрос безо всяких переделок соберет данные откуда угодно и куда угодно.
Изменено: AndreTM - 27.08.2017 01:15:16
Сумма значений ячеек, не содержащих формул
 
Если только написать UDF, которая проверит ячейки диапазона, формула там или не формула.

Логика непонятна. "Столбец данных"  - это данные, для последующих расчетов, какая разница, рассчитаны они формулой или внесены руками.
С другой стороны, если вам надо видеть отдельно "рассчитанные значения", а отдельно "внесенные" - так напишите формулы в одном столбце, а "рукоприкладство" - в другом столбце. У вас не хватает на листе столбцов?
Изменено: AndreTM - 27.08.2017 00:40:34
Как собрать данные с нескольких листов в один
 
1) Расширьте проверку имени листа, с которого берете данные (вы же проверяете, чтобы с листа "Сводная" данные не брались? - ну, замените условие на такое, чтобы проверялось "такие то листы". Ну или вообще перебирайте только нужные листы.
2) "Добавить в Сводную только добавленную на исходные листы информацию" - это то же самое, что и "Заново собрать сводную из всей информации". Если только вы не "заменили" информацию в исходных листах (например, удалили какие-то строки).
Код
Sub Обновить_сводную()

Dim Sht As Worksheet, Shs As Worksheet
Dim Wb As Workbook
Dim i As Long
Dim iLastRow_B As Long
Dim iLastRow_Ai As Long
 
With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
    .Calculation = xlCalculationManual
     
    Set Wb = ThisWorkbook
    Set Shs = Wb.Sheets("Сводная")
    Shs.Cells.Clear 'очищаем лист "Сводная"
    Shs.Range("A1:Z1") = Array("Оценка", "ФИО сотрудника", "Старший", "Группа", "Дата оценки", _
        "Номер звонка", "Пометка на звонок", "Проф. Навыки", "Навыки ведения диалога", "Общая оценка за звонок", _
        "Тематика (1 уровень)", "Тематика (2 уровень)""Тематика (3 уровень)""Основная зона роста (1-ый уровень)", _
        "Основная зона роста (2-ый уровень)", "Доп. зона роста (1-ый уровень)", "Доп. зона роста (2-ый уровень)", _
        "Вес нарушения Основной зоны", "Вес нарушения доп. Зоны", "ст", "Неделя", "Месяц", "Год", _
        "Ошибка", "Отдел", "Кодировка")
    
    For Each nm In Array("Лист1", "Лист2")
        Set Sht = Wb.Sheets(nm)
        iLastRow_B = Shs.Cells(Rows.Count, 2).End(xlUp).Row
        iLastRow_Ai = Sht.Cells(Rows.Count, 1).End(xlUp).Row
        Sht.Range("A2:Z" & iLastRow_Ai).Copy Shs.Cells(iLastRow_B + 1, 1)
    Next
         
    .ScreenUpdating = True
    .DisplayAlerts = True
    .Calculation = xlCalculationAutomatic

End With

End Sub
Изменено: AndreTM - 26.08.2017 13:40:15
Случайное число со смещением, но невыходя за диапазон
 
Код
=ОСТАТ(СЛУЧМЕЖДУ(1;10+15)-1;10)+1
И почитайте справку по функции СЛЧИС()
Удаление определенных строк
 
Вообще, если уж подходить правильно - то вы и должны именно программе объяснить, как нам объяснили, что, откуда, и куда:
Код
Sub testDel()
    With Sheets("Лист1") ' это лист, где работать, все, что начинается с . - относится к нему
        numStartRow = Sheets("Лист3").[B1] ' это ячейка, где указан начальный номер строки листа, где работать :)
        numEndRow = 195
        If numStartRow > 0 And numStartRow <= numEndRow Then
            Range(.Cells(numStartRow, 1), .Cells(numEndRow, 1)).EntireRow.Delete
        End If
    End With
End Sub
И не надо придумывать собственные телодвижения и костыли - код так и написан, чтобы можно было понять и исправить...
Изменено: AndreTM - 25.08.2017 19:31:18
Удаление определенных строк
 
А вы видели префикс With ActiveSheet ?  :)
На каком листе запустите - на том и работает с данными...

Или вы подразумеваете, что вы вызовете этот макрос "откуда-то непонятно откуда", но "править надо таблицу на листе с именем "Лист2"?
Так замените ссылку на лист - вместо ActiveSheet укажите тот лист-объект, где надо работать
Изменено: AndreTM - 25.08.2017 16:48:55
Удаление определенных строк
 
Код
Sub testDel()
    With ActiveSheet
        numStartRow = .[a1]
        numEndRow = 19
        If numStartRow > 0 And numStartRow <= numEndRow Then
            Range(.Cells(numStartRow, 1), .Cells(numEndRow, 1)).EntireRow.Delete
        End If
    End With
End Sub
Удаление строк на всех листах, Какие есть способы?
 
Цитата
Poli22 написал:
пользователь после этого случая всей душой возненавидел Эксель
А вот тут пользователь не прав.
Все претензии надо высказывать только и исключительно разработчику хранилища данных, в том виде, что пользователь вынужден править данные прямо в таблицах. правильный интерфейс - всегда разделяет ввод/корректировку | хранение | и выборки/отчеты/вывод.
8)  
Отличия пропертей: Let vs Set?
 
Цитата
Vhodnoylogin написал:
когда я знаю, что я хочу - внутреннюю реализацию - то я могу не заморачиваться надо оберткой. Берем постоянно ЛЕТ (потому что перед СЕТом надо еще set писать) и наслаждаемся
Ну-ну...
Код
qql.qql3 = ActiveSheet
:)

Впрочем, если ты в реализации изменишь тип передаваемого значения для qql3 на Object - то пройдет, конечно. Тут больше требования использования Let/Set относятся к синтаксису и его предпроверке, нежели к действительной нужности.
Вообще:
Цитата
В большинстве случаев требуется, чтобы доступ к свойствам класса был разрешен исключительно с помощью методов, а в некоторых случаях свойств вообще фактически не существует, а значения должны вычисляться непосредственно в момент обращения.
Для этого в языке Visual Basic существует механизм описания таких свойств с помощью ключевого слова Property.
Свойства, при чтении значения которого должен вызываться метод вычисления или передачи этого значения, описываются следующим образом:
Property Get ...
...
Свойства, при присваивании значения которым должен вызываться метод обработки этого значения, описываются аналогично, только с применением ключевых слов Property Let либо Property Set. Разница между ними состоит в том, что Property Let применяется для передачи значений стандартных и предопределенных программистом типов, а Property Set применяется для объектов Office и объектных переменных программы.
Изменено: AndreTM - 25.08.2017 14:28:00
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 16 След.
Наверх