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

Страницы: 1 2 След.
Суммирование одинаковых значений таблицы по ключу из нескольких столбцов
 
решение от doober - пользуйтесь на здоровье.
Код
  Dim Sh As Worksheet, Sh1 As Worksheet, rng As Range, Key
    Set C_i = CreateObject("scripting.dictionary")

    Set Sh = ThisWorkbook.Worksheets("Исходные_данные")
    Set Sh1 = ThisWorkbook.Worksheets("Данные_на_выходе")
    Last = Sh.Cells(Sh.Rows.Count, "A").End(xlUp).Row
    dx = Sh.Range("A1:J" & Last)

    For n = 2 To UBound(dx)
        Key = dx(n, 1) & "_" & dx(n, 3) & "_" & dx(n, 5)
        If C_i.Exists(Key) Then
            dz = C_i.Item(Key)
            dz(1, 4) = dz(1, 4) + dx(n, 4)
            dz(1, 8) = dz(1, 8) + dx(n, 8)
            C_i.Item(Key) = dz

        Else
            C_i.Item(Key) = Sh.Range("a" & n).Resize(1, UBound(dx, 2)).Value
        End If

    Next

    Items = C_i.Items

    Last = Sh1.Cells(Sh.Rows.Count, "A").End(xlUp).Row
    If Last > 1 Then
        Sh1.Range("A2:J" & Last).ClearContents
    End If
    For n = 0 To C_i.Count - 1
        dz = Items(n)
        Sh1.Range("A" & (n + 2)).Resize(1, UBound(dz, 2)) = dz

    Next
Изменено: Tesla_LOLa - 04.02.2020 19:29:30
Суммирование одинаковых значений таблицы по ключу из нескольких столбцов, Суммирование одинаковых значений таблицы по ключу из нескольких столбцов
 
Спасибо огромное, спасли= работа супер и  оперативно!!! еще раз спасибо большое.

ребят код рабочий выложу в  бесплатной части форума = пользуйтесь на здоровье.
Суммирование одинаковых значений таблицы по ключу из нескольких столбцов, Суммирование одинаковых значений таблицы по ключу из нескольких столбцов
 
doober, взял заказ, жду= всем спасибо.
Суммирование одинаковых значений таблицы по ключу из нескольких столбцов, Суммирование одинаковых значений таблицы по ключу из нескольких столбцов
 
doober, ответила жду подтверждения.
Изменено: Tesla_LOLa - 04.02.2020 17:03:29
Суммирование одинаковых значений таблицы по ключу из нескольких столбцов, Суммирование одинаковых значений таблицы по ключу из нескольких столбцов
 
Необходимо произвести суммирование значений по полю "Мес. ФЗП, руб." по одинаковым строкам и "количество штатных единиц", остальные данные остаются неизменными. Вывести на отдельный лист уникальные строки (которые не схлопывались)  и строки которые схлопнулись вместе в одну с учетом обновленных значений в них.

Остальное получилось самой прикрутить, а вот в этом загвоздка.

Заплатить много не смогу, но чем Бог послал поделюсь- иначе дыба, оплатить могу на номер мобильного.

В качестве бонуса, если вы будете не против поделюсь Вашим решением со ссылкой на Вас с остальными в другом разделе.
.
Спасибо.
Макрос слияния строчек по одному параметру с суммированием значений, Макрос слияния строчек по одному параметру с суммированием значений
 
 kuklp или кто нибудь подскажите пожалуйста неразумным, а как и где можно подравить код чтобы отбор был не только по столбцу наименование, но И по столбцу магазин например  Спасибо.
Изменено: Tesla_LOLa - 04.02.2020 16:16:37
Суммирование одинаковых значений таблицы по ключу из нескольких столбцов
 
Приветствую повелителей кода и начинающих дарований!

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


Код
Sub test()
    Dim coll As New Collection, src(), dst(), i As Long, m As Long, txt As String
    
    ' Создание массива уникальных значений по столбцу "Наименование" на Лист1
    With ThisWorkbook.Worksheets("Лист1")
        m = .Cells(1, 2).End(xlDown).Row
        src = .Range(.Cells(1, 2), .Cells(m, 2)).Value
        
        On Error Resume Next
        For i = 2 To UBound(src, 1)
            txt = Trim$(src(i, 1))
            coll.Add txt, txt
        Next
        On Error GoTo 0
        
        ReDim dst(1 To coll.Count, 1 To 1)
        For i = 1 To coll.Count
            dst(i, 1) = coll(i)
        Next
    End With
    
    ' Вставка массива уникальных значений и подсчет сумм формулами =СУММЕСЛИ() на Лист2
    With ThisWorkbook.Worksheets("Лист2")
        .Cells(2, 2).Resize(coll.Count).Value = dst()
        .Cells(2, 4).Resize(coll.Count).FormulaR1C1 = "=SUMIF('Лист1'!R2C2:R" & m & "C2,RC2,'Лист1'!R2C:R" & m & "C)"
        .Cells(2, 5).Resize(coll.Count).FormulaR1C1 = "=SUMIF('Лист1'!R2C2:R" & m & "C2,RC2,'Лист1'!R2C:R" & m & "C)"
        .Cells(2, 7).Resize(coll.Count).FormulaR1C1 = "=SUMIF('Лист1'!R2C2:R" & m & "C2,RC2,'Лист1'!R2C:R" & m & "C)"
    End With
End Sub

Как сделать чтобы условием был не один столбец "Наименование", а предположим по столбцам "Наименование" И "Группа" И "Подгруппа"  чтобы одинаковые строки также суммировались- ума не приложу как подкрутить.

Образцы в приложении- заранее благодарки всем неравнодушным.

Изменено: Tesla_LOLa - 04.02.2020 15:47:32
макрос excel на анализ входящей почты outloock и отправку файла excel
 
ребята из безопасности не дали добро на изменение реестра= без него швах, печально.... :cry:

Для использования сценариев со скриптами  для автоматической обработки входящих писем необходимо внести изменения в реестр:
Чтобы это исправить, вам нужно установить значение EnableUnsafeClientMailRules в реестре, а затем перезапустить Outlook.

Outlook 2016
HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 16.0 \ Outlook \ Security
DWORD: EnableUnsafeClientMailRules
Значение: 1

Outlook 2013
HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 15.0 \ Outlook \ Security
DWORD: EnableUnsafeClientMailRules
Значение: 1

Outlook 2010
HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Outlook \ Security
DWORD: EnableUnsafeClientMailRules
Значение: 1

Пользователи Office, использующие правила выполнения сценариев, обнаруживают, что их сценарии в настоящее время отключены (как и « Запуск приложения» ) благодаря обновлению безопасности. Когда обновление установлено, все существующие правила запуска сценариев и запуска приложений будут отключены.

Всем спасибо огромное. :*  
макрос excel на анализ входящей почты outloock и отправку файла excel
 
БМВ спасибо. Будем подтягивать мат часть  :*  . =это уже прогресс, а как автоматически по теме входящего письма  запускать макрос и отправить сфоррмированный макросом файл  ответным письмом на почтовый адрес с которого был направлен запрос?
макрос excel на анализ входящей почты outloock и отправку файла excel
 
БМВ спасибо за ответ и что нашел время.

Да у меня если все получиться= весь код который у меня получится приложу- основная помощь в подсказках нужна в этом куске:"По идее необходимо при получении входящего письма макросом excel или в  макросом outloock  получить почту отправителя, сверить данные отправителя с базой контактов outloock, выгрузить наименование подразделения" и в этом "дальше отправить этот файл  ответным письмом на почтовый адрес с которого был направлен запрос"
Цитата
БМВ написал:
- что за база? Если контакты, то какие, личные, GlobalAB ...
База хз как правильно называется- та которая нажимаешь на кому и открывается окошко "Глобальный список адресов", там есть раздел "Отдел"- вот ума не приложу как наименование отдела вытаскивать из входящего по почте адресата письма макросом. Возможно просто искать по адресу электронной почты в файле и уже по этому фильтровать большой файл excel(он содержит почты) = я не знаю как лучше  и куда правильнее начать копать= т.е. то что фактически реализуемо.

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

Чуть попозже выложу  свою часть кода как его дошлифую и приведу в божеский вид.
Изменено: Tesla_LOLa - 30.09.2019 17:10:23
макрос excel на анализ входящей почты outloock и отправку файла excel
 
Братцы, сестры и Гуру программирования подскажите пожалуйста как быть и возможно с чего начать: в ходе работы столкнулась с необычной задачей:
На почту outloock периодически (очень часто) приходят письма с однотипными запросами (с конкретной темой письма) по которому надо ответить выгрузив  кусок таблицы одной и той же большой таблицы по подразделению. По идее необходимо при получении входящего письма макросом excel или в  макросом outloock  получить почту отправителя, сверить данные отправителя с базой контактов outloock, выгрузить наименование подразделения, далее  открыть файл excel ( с этого момента  моих знаний наверно хватит) по наименованию подразделению, провести фильтрацию по наименованию подразделения в файле, скопировать кусочек файла excel  в новый файл, сохранить новый файл, дальше отправить этот файл  ответным письмом на почтовый адрес с которого был направлен запрос (тут моих знаний снова не хватает).


Если все получится= как всегда по итогу выложу полную версию адаптированного рабочего кода, который смогут использовать другие для своих нужд. ;)
Заранее спасибо за любую помощь или добрый совет.
Изменено: Tesla_LOLa - 30.09.2019 18:24:59
удаление листов из книги вне списка/столбца значений макрос
 
Ребят спасибо Вам всем Огроменное= Вы Лучшие!!! :)  
удаление листов из книги вне списка/столбца значений макрос
 
Цитата
Jack Famous написал:
Попробую себя в роли учителя…
Спасибо Огромное и низкий поклон за науку= у Вас прирожденный талант педагога, теперь хоть стало немного понятнее. ;)  :idea:  
удаление листов из книги вне списка/столбца значений макрос
 
Цитата
JeyCi написал:
"сделайте за меня"
даже это для меня не совсем понятно......
Код
Set d = CreateObject("Scripting.Dictionary"): d.comparemode = 1    
 ......................
     d.item(t) =  .Cells(i, 7) & "|" & .Cells(i, 7)  

про такие вещи как  :
Скрытый текст
просто не понятны еще такие конструкции - понять не могу как формируются, материала Очень много но пока до него не совсем дорос, только блуждаю по мелководью да присматриваюсь. мне бы примеры- чем проще и тупее (совсем для новичков) с описанием - может и сам чего то да сподобился........когда мастодонты описывают макросы с использованием нескольких словарей в сложных макросах у меня честно глаза выползают из орбит и мозг лопается...... если не трудно поясните немного механизм формирования и работы со словарями на простых примерах (на Любых- чем проще тем лучше) пока въехать не могу......
удаление листов из книги вне списка/столбца значений макрос
 
Цитата
JeyCi написал:
просто: из списка собрать словарь dicSheets (в ключи - sh.Names списка),потом цикл For Each sh in Thisworkbook.Sheets.. по листам ! с проверкой в словаре:If Not dicSheets.exists(sh.Name) Then sh.Delete
Подскажите пожалуйста как это будет выглядеть в коде целиком, просто я пока только стараюсь учиться и далеко не все так легко с ходу могу понять что к чему........словари для меня тайная комната......... :)  
удаление листов из книги вне списка/столбца значений макрос
 
Уххх сложно было, нон оно работает ^_^= ловите, может кому сгодиться. ;)
Код
Dim s As Object, a As Variant, z As Integer, d As Boolean, zojberg As Variant   
    a = WorksheetFunction.Transpose(Worksheets("check").Range(Worksheets("check").Cells(1, 7), Worksheets("check").Cells(iLastRow, 7)))
    
        Application.DisplayAlerts = False
    For Each s In Sheets
        d = True
        For z = LBound(a) To UBound(a)
            If s.Name = a(z) Then d = False
        Next z
        If d Then s.Delete
    Next s
    Application.DisplayAlerts = True
Изменено: Tesla_LOLa - 18.02.2019 19:34:31
удаление листов из книги вне списка/столбца значений макрос
 
Доброго всем.
Подскажите где тут ошибка (пытаюсь перекрутить ранее подсказанный добрыми ребятами с этого форума под новые нужды) и как ее можно исправить чтобы по заданным наименованиям в столбце 7 начиная с сell(1,7)  и до последней ячейки в столбце названия Сравнивались с текущими названиями листов в книге И Удалялись если не совпадают.
Код
   iLastRow = Cells(3, 7).End(xlDown).Row ' последняя заполненная ячейка в столбце с именами листов
  For i = 1 To iLastRow
  If a = Worksheets("check").Cells(i, 7).Value Then
 For Each Worksheet In ThisWorkbook.Sheets 
      
     If a <> Worksheet.Name Then
     

        
        Worksheet.Delete
        End If
        On Error Resume Next
    Next
    
    i = i + 1
    End If
        On Error Resume Next
    Next
Спасибо за время и добрые советы.
Поиск макросом excel по ключу массива данных по листам книги с суммированием
 
Цитата
Nordheim написал:
Что то не вижу на форме ComboBox  .
В примере перенесен для упрощения в лист бокс= после попыток оптимизировать= это как оказалось стал лучший вариант (в описании подправлено) :oops:  
Изменено: Tesla_LOLa - 18.02.2019 13:51:43
Поиск макросом excel по ключу массива данных по листам книги с суммированием
 
Цитата
Юрий М написал:
Не нашёл в файле форму.
Юрий хотелось просто не усложнять и не отвлекать, а выложить уже потом целиковую рабочую версию, раз Вам она необходима, то прикладываю. Еще раз спасибо что нашли время.
Поиск макросом excel по ключу массива данных по листам книги с суммированием
 
Доброй ночи мастерам макросов и сложных вычислений.
В очередной раз окунувшись с головой в непростую науку постижения и использования макросов бьюсь со следующей задачкой:
На основе игр с юзер формой и фильтрами получаю некий массив данных в listbox (это получилось) на основе его необходимо осуществить поиск с суммированием по разношерстным листам, ключи поиска (названия листов) представлены в массиве, вот чешу репку и прикинуть не могу дальше быть.........
Скрытый текст

Подскажите бобрику люди знающие да ведающие как можно прикрутить или что можно посмотреть или подсмотреть чтобы ручки выправить.

Заранее спасибо большое за уделенное время= всем хорошего настроения.
Изменено: Tesla_LOLa - 18.02.2019 09:46:21 (дополнен код, обновлено приложение, внесены правки в описание)
странность работы функции InsertChartField msoChartFieldRange, необычное рядом
 
Михаил Лебедев спасибо огромное = помогло, блуждая в темных коридорах попыток также нашел еще 1 решение - переименовывать в теле цикла текущие листы с помощью ActiveSheet.Name = [DO105].Value & "B" тогда во втором цикле листы получались короткие, также похоже код раньше похоже сбоил если в названиях листа есть пробелы (теперь все ок).

Всем большое спасибо за поддержку и помощь
странность работы функции InsertChartField msoChartFieldRange, необычное рядом
 
Sanja =  я же выложил пример= там все визуально видно и там не макрорекордер.
странность работы функции InsertChartField msoChartFieldRange, необычное рядом
 
Sanja да сам алгоритм уже создан (даже не один, а несколько циклов по нескольким мастер листам) и работает, проблема именно в том, что при первичном использовании Любого из алгоритмов-циклов= все идеально, однако если любой из них в Любой последовательности запустить вторым, то пропадает подпись у столбца с заданной подписью из ячейки .
Основная процедура запускает последовательно 4 цикла....в первом (какой бы он ни был) все идеально...в остальных слетает....как то так.
странность работы функции InsertChartField msoChartFieldRange, необычное рядом
 
Sanja в самом начале кратко описал суть = "в теле макроса если задать переменными смену подписи в столбце диаграммы  из заданного диапазона/ячейки то  при запуске отдельного макроса он его видит и его выполняет, а если цикл запускается после другого цикла то нет".
Изменено: Tesla_LOLa - 18.12.2018 14:19:13
странность работы функции InsertChartField msoChartFieldRange, необычное рядом
 
К сожалению испробование еще переименование листа по циклу     ActiveSheet.Name = [DP105].Value тоже не помогло, хотя странно.

Загрузил запрошенный пример. если запустить цикл один раз =все отлично, если запустить его дважды (или аналогичный цикл с другими переменными то подписи ко второму столбцу пропадают и ничего не помогает)
странность работы функции InsertChartField msoChartFieldRange, необычное рядом
 
К сожалению вариант тот же...почему-то по какой-то причине если имя листа содержит () например мастерАШЕ (2)  или мастерАШЕ (3) то функция просто не работает, а если лист переименовать в любой без () например "мастердва" то все работает.........проблема в том как мне теперь задать имена листов корректно чтобы читала функция внутри цикла....
странность работы функции InsertChartField msoChartFieldRange, необычное рядом
 
после дополнительных пары часов -обнаружил, что если наименование текущего листа содержит (), например мастерАШЕ (2) то функция не пашет.....а листы размножаются аж до мастерАШЕ (99).....хмм как бы обойти данную проблемку.......
странность работы функции InsertChartField msoChartFieldRange, необычное рядом
 
Доброго всем.

Работая с размножением диаграмм бьюсь лбом об стенку над одной выявленной странностью:
Код
shtName33 = ActiveSheet.Name 'получаем имя текущего листа
major33 = shtName33 & "!$EA$105" 'получаем строку адреса в код    ActiveChart.FullSeriesCollection(2).DataLabels.Select
    ActiveChart.SeriesCollection(2).DataLabels.Format.TextFrame2.TextRange. _
    InsertChartField msoChartFieldRange, "=" & major33, 0 ', в оригинале выглядит если без переменных то выглядит так "=Лист5!$EA$105",0

    Selection.ShowRange = True 'показываем подпись на графике
    Selection.ShowValue = False 'убираем старую подпись от данных
в теле макроса если задать переменными смену подписи в столбце диаграммы  из заданного диапазона/ячейки то  при запуске отдельного макроса он его видит и его выполняет, а если цикл запускается после другого цикла то нет....... ребят может кто подскажет из-за чего вообще и может научит уму-разуму.

Заранее огромное спасибо.
Мастер лист для размножения по циклу
 
C учетом проделанной работы по автопостроению, вот обещанный результат, надеюсь ребятам поможет:
Скрытый текст
[CODE][/CODE]
Изменено: Tesla_LOLa - 30.11.2018 14:48:35
Мастер лист для размножения по циклу
 
СПАСИБО ОГРОМНЕЙШЕЕ!!!!! ЭТО ШЕДЕВР!!!!!!!!!
Страницы: 1 2 След.
Наверх