Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Консолидация таблиц по нескольким признакам, с суммированием данных
 
Александр, Спасибо за совет, обязательно в ближайшее время изучу эту надстройку.
Единственно, что меня смущает - что итоговая таблица в Вашем варианте "Пример__1__xlsx" состоит из 44 строк, что по сути является суммой строк всех 4х таблиц.
В данном примере это безусловно работает, но это всего лишь пример. Таблицы,а их 8-10, к которым хочу применить такой метод имеют по 2-5 атрибута и каждая содержит около сотни тыс. строк. А просто в сумме, да еще с делением на атрибуты, консолидированная таблица точно превысит лимит excel по строкам.  
Не перестаю удивляться возможностям excel и VBA.
Консолидация таблиц по нескольким признакам, с суммированием данных
 
Добрый день, уважаемые знатоки. Подскажите пожалуйста Ваше мнение по решению не особо сложной задачки. Имея несколько таблиц, у которых одинаковые первые три поля, но не обязательно повторяющиеся, их сложить так, что бы на выходе получить одну таблицу. Первые три поля в которой будут сгруппированы просто по принципу их наличия, а значения остальных столбцов просто просуммировано.
Решение(В примере), с идеальным результатом к которому стремлюсь, заключается в использовании супермегакрутых функций сводной таблицы))), которая быстро и группирует и суммирует необходимые данные. Однако для ее источника таблицы приходится разбивать в ручную.
Проблемы заключается в том, что таких таблиц хочется использовать 10-15, что трудоемко. Да и в том, что в их сумме получится более 1 000 000 строк(((
Пробовал использовать сводную таблицу с несколькими источниками, но она у меня не группировала данные, а "перемножала" строки между собой, в итоге файл просто зависал(((
Пробовал создать Базу Данных в Аксесе(Сори, знаю что не по адресу) но он, не группирует строки, а исключает лишние, если такие отсутствуют в другой таблице.
Похожих тем куча, но они используют для связи только один столбец(Создать такой не проблема, допустим сцепкой), и всегда эти связи совпадают по значению, т.е. фиксированное количество строк и значений в них.
Можно ли решить такую задачу не прибегая к ручной работе создания базы для сводной?  
Изменено: Владимир Шаматонов - 5 Окт 2018 14:50:21
Не перестаю удивляться возможностям excel и VBA.
Вычисляемое поле сводной (максимальная цена)
 
Жаль что больше ответов по статье нет, вопрос хороший. Мне бы тоже разобраться - В каких то случаях выч.поле работает как надо по формуле, в каких то нет.
В данный момент интересна такая задачка, что бы в сводной, на одно поле, влияло количество дней. Думал, что поможет формула в вычисляемом поле:
= СуммаХ / (МАКС(Дата)- МИН(Дата)), где:
Сумма Х - столбец с набором цифр для изменения в вычисляемом поле, с возможностью проссумирования их по иерархии дальше в сводной таблице
Дата - собственно столбец с датами, рядом со столбцом Сумма Х.
Но формула не работает, т.к. вычисляемое поле вместо поиска максимума и минимума по Дате, просто суммирует значения и в итоге: (МАКС(Дата)- МИН(Дата)) = 0
Подскажите пожалуйста, как правильно указать условия? Или такое вообще не возможно сделать в вычисляемом поле?  
Не перестаю удивляться возможностям excel и VBA.
Удалить разделители .csv при сборе данных через VBA, Удалить разделители .csv при сборе данных через VBA
 
Дмитрий, в таком случае большое спасибо за исходник. Уверен - очень многим пользователям он пригодился.
А также на счет решения - первый метод сработал(в чем я очень благодарен), но только без приставки "Text", ибо с ней макрос не срабатывает и сразу ссылается на ошибку "Compile error: Expected Function or variable", т..е. сработал так:
Код
Set wbAct = Workbooks.Open(Filename:=avFiles(li), Local:=True)
Не перестаю удивляться возможностям excel и VBA.
Удалить разделители .csv при сборе данных через VBA, Удалить разделители .csv при сборе данных через VBA
 
Добрый день. Возникла необходимость пользоваться источником данных, который по дефолту выгружается в формате .csv с разделителями ";" вместо привычных столбцов. При ручном открытии такого файла разделители видимо автоматически превращаются в столбцы и данные превращаются в удобную таблицу. Но при сборе(копировании) этих данных, при чем из нескольких файлов, через VBA по средствам самого распространенного макроса автоматизация такая не работает и на выходе я получаю не удобную собранную таблицу, а столбец, в строках которого зашиты данные с разделителями.
Перечитал много тем, связанных с переформатированием .csv в .xls, но применить их решения никак не получилось((( Я решения понял так, но реализовать его не получилось:
нужно строку Workbooks.Open CSVfilename, local:=True
изменить и как то применить либо в части кода, где идет выбор файлов: avFiles = Application.GetOpenFilename("Excel files(*.csv*),*.csv*", , "Выбор файлов", , True)
Либо уже в части копирования данных, через цикл.
Файл для сбора "Макрос" и файлы как источник данных прилагаю. Может быть у здешних гуру есть идеи решения такой пустяковой проблемы?
Не перестаю удивляться возможностям excel и VBA.
Оповещение перед сохранением, убрать выскакивающее сообщение
 
Спасибо.! Тоже уже который раз забываю где эта настройка находится.  
Не перестаю удивляться возможностям excel и VBA.
Установка в макросе даты и времяни доставки пьсма Outlook., Как в макросе указать время и дату доставки письма?
 
Добрый день. Каждый день требуется отправлять по 20-30 писем на на разные адреса с разными данными. Получилось сделать макрос, который сам это письмо создает, добавляет необходимых адресатов и даже вставляет в письмо нужную часть таблицы из одной большой. Но скоро долгожданный отпуск) и поставили задачу отпавить данные письма до отпуска, но что бы они пришли. как обычно в необходимое время.
Ручной работы наверно на весь день - каждому письму задовать дату доставки, но не нравится мне больше всего то, что я не узнаю, возможно ли это реализовать через макрос, который мне автомотизирует все остальное.
Решение найти пытался, из полезного нашел только настройку таймера - но это не то. Нужно что бы былы задана конкретнся дата и время получения(лучше чтоб из ячейки) при формировании письма. Часть макроса на формирование письма выглядит так - возможно как и адресата и текст письма, также можно задать функцию доставки на конкруютную дату и время:
Код
Set objOutlookApp = CreateObject("Outlook.Application")
    objOutlookApp.Session.Logon
    Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub 'если не получилось создать приложение или экземпляр сообщения - выходим
 
    sTo = Range("C4").Value    'Кому
    sSubject = Range("C6").Value   'Тема письма
    sBody = Range("C7").Value    'Текст письма
       
        With objMail    'создаем сообщение
        .To = sTo   'адрес получателя
        .CC = Range("C5").Value
        .Subject = sSubject   'тема сообщения
        '.Body = ???  'отключил, текст вшит в НТМЛсообщение
        .BodyFormat = olFormatHTML   'формат HTML
        .HTMLBody = Range("C7").Value & SheetToHTML(ThisWorkbook.Worksheets("Доставка (2)"))
        .Attachments.Add sAttachment
        .Display   'Display, если необходимо просмотреть сообщение, а не отправлять без просмотра, '.Send 'отправлять без просмотра
    End With
Изменено: Владимир Шаматонов - 12 Май 2016 13:18:10
Не перестаю удивляться возможностям excel и VBA.
Фильтр объединенных ячеек
 
Цитата
sva написал: Выделяете диапазон с объединенными ячейками и запускаете макрос
Спасибо, работает. А я думал, что это не возможно сделать в фильтре.
Есть просьба - прокоментируйте макрос, пожалуйста.
Сам я не програмист и не понимаю, что конкретно он делает. Планирую его добавить в файл с другими макросами, работу которых уже немного освоил и хотел быть уверен, что они не будут конфликтовать между собой.  
Не перестаю удивляться возможностям excel и VBA.
Помогите объеденить два цикла и действия в макросе на удаление строк и столбцов
 
Цитата
Hugo написал: set delra = nothing
Приогромнейшее спасибо. Вторая часть макроса, на удаления столбцов, заработала.
Что представляет собой это чудо строчка, чтоб я её подписал и на будующее знал. Какую функцию в себе она несет? Она "сбрасывает, очищает" range сторок для удаления из первой части макроса?
Не перестаю удивляться возможностям excel и VBA.
Помогите объеденить два цикла и действия в макросе на удаление строк и столбцов
 
Сам сейчас заметил что строки 9 и 16(на которой ошибка) совершенно одинаковые и я их оставил без изменения. Хотя 9 нужны для удаления строк. а 16 для удаления столбцов. Но ни опыта и не знаний у меня все равно не хватает ля решения сей задачи. М.б. по другому должна выглядить строка 16?
Не перестаю удивляться возможностям excel и VBA.
Помогите объеденить два цикла и действия в макросе на удаление строк и столбцов
 
Добрый день. Из одного макроса по удалению строк - самому получилось аналогично составить второй, на удаление столбцов. Оба простые и по отдельности работают.
Но в одном макросе работать не хотят - отанавливается и выдает ошибку в строке:        
Код
   If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)      ' добавляем столбец в диапазон для удаления
Сам макрос выглядит так, все подписано и должно быть понятно:
Код
Sub DeleteRowsAndColumns123()
Dim ra As Range, delra As Range, DeleteRow As String, DeleteColumn As String     'как обычно, задаем переменные
    
DeleteRow = "Удалить строку"       ' удаляем строки с таким текстом
DeleteColumn = "Удалить столбец"       ' удаляем столбцы с таким текстом
    
For Each ra In ActiveSheet.UsedRange.Rows      ' перебираем все строки в используемом диапазоне листа
If Not ra.Find(DeleteRow, , xlValues, xlPart) Is Nothing Then     ' если в строке найден искомый текст
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)     ' добавляем строку в диапазон для удаления
End If      'Конец проверки "если"
Next       'Конец цикла поиска
If Not delra Is Nothing Then delra.EntireRow.Delete       ' если подходящие столбцы найдены - удаляем их
    
For Each ra In ActiveSheet.UsedRange.Columns       ' перебираем все столбцы в используемом диапазоне листа
If Not ra.Find(DeleteColumn, , xlValues, xlPart) Is Nothing Then     ' если в столбце найден искомый текст
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)      ' добавляем столбец в диапазон для удаления
End If      'Конец проверки "если"
Next        'Конец цикла поиска
If Not delra Is Nothing Then delra.EntireColumn.Delete       ' если подходящие строки найдены - удаляем их
End Sub
Офис 2010. Пожалуйста, подскажите, где я ошибся?
Не перестаю удивляться возможностям excel и VBA.
Зависание Excel при копировании ячейки, проблемы работы больших файлов
 
Добрый день, такаяже проблема была. Но решение было другое - удаление всех правил Условного Форматирования.
Не перестаю удивляться возможностям excel и VBA.
Страницы: 1
Наверх