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

Страницы: 1 2 3 След.
Макрос для подсчета годовой статистики из имеющейся таблицы с разбивкой по месяцам
 
srta_de_rubio, сейчас запустил код отрабатываю 500 тыс. строк, но вся загвоздка в том что всевозможных комбинаций, которые получаются также тысячи, поэтому макрос так долго отрабатывает. В итоге Excel не висит, а выполняется программа.
Изменено: garnik - 02.12.2018 21:01:41
Макрос для подсчета годовой статистики из имеющейся таблицы с разбивкой по месяцам
 
Друзья, согласен с Вами обоими, исправлюсь)
Макрос для подсчета годовой статистики из имеющейся таблицы с разбивкой по месяцам
 
Юрий М, да, конечно слышал, но на практике пока не применяю, учусь пока коды писать, до профессионального уровня мне еще далеко, но буду стараться в будущем выкладывать коды с учетом форматирования. На данный момент пока, что для меня главное работоспособность кода.
Макрос для подсчета годовой статистики из имеющейся таблицы с разбивкой по месяцам
 
Возможно из-за большого количества строк произошло зависание Excel. Вычисления производились на листе, поэтому возможно длительное выполнение кода. Ниже код с вычислениями в массиве, я думаю это ускорит работу макроса, также добавил отбор по году, в случае обработки с 2008 по 2018 год.

Код
Sub test()
Dim nov() As Variant
Dim arr() As Variant
lLastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
lLastCol = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1
arr = Range(Cells(1, 1), Cells(lLastRow, lLastCol))
Worksheets.Add.Name = "List1"
Set a = ThisWorkbook.Sheets("List1")
ReDim nov(1 To UBound(arr), 1 To 16)
    For i = 1 To lLastCol
        nov(1, i) = arr(1, i)
    Next i
        For i = 2 To UBound(arr)
            For j = 2 To lLastRow
                If arr(i, 3) = nov(j, 3) _
                    And arr(i, 5) = nov(j, 5) _
                    And arr(i, 8) = nov(j, 8) _
                    And arr(i, 9) = nov(j, 9) _
                    And arr(i, 7) = nov(j, 7) Then
                        For k = 10 To 16
                            nov(j, k) = nov(j, k) + arr(i, k)
                        Next k
                        Exit For
                Else
                        If nov(j, 3) = "" Then
                            For k = 1 To lLastCol
                                nov(j, k) = arr(i, k)
                            Next k
                                nov(j, 6) = ""
                            Exit For
                        End If
                End If
            Next j
        Next i
a.Range(Cells(1, 1), Cells(UBound(nov), 16)) = nov
End Sub


У меня обработка 190 тыс. строк заняла 15 секунд
Изменено: garnik - 02.12.2018 14:51:41
Макрос для подсчета годовой статистики из имеющейся таблицы с разбивкой по месяцам
 
srta_de_rubio, может быть Вам такое подойдет?

Код
Sub test()
Dim arr As Variant
lLastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
lLastCol = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1
arr = Range(Cells(1, 1), Cells(lLastRow, lLastCol))
Worksheets.Add.Name = "List1"
Set a = ThisWorkbook.Sheets("List1")
For i = 1 To lLastCol
a.Cells(1, i) = arr(1, i)
Next i
For i = 2 To UBound(arr)
For j = 2 To lLastRow
If arr(i, 3) = a.Cells(j, 3) _
And arr(i, 5) = a.Cells(j, 5) _
And arr(i, 8) = a.Cells(j, 8) _
And arr(i, 9) = a.Cells(j, 9) Then
For k = 10 To 16
a.Cells(j, k) = a.Cells(j, k) + arr(i, k)
Next k
Exit For
Else
If a.Cells(j, 3) = "" Then
For k = 1 To lLastCol
a.Cells(j, k) = arr(i, k)
Next k
a.Cells(j, 6) = ""
Exit For
End If
End If
Next j
Next i
End Sub
Разбивка данных из листа excel на новые книги по определенному признаку
 
Цитата
vera198907 написал:
если я захочу поменять столбец по которому называются книги
Какие книги?  :D vera198907, у Вас там адреса и города. Пишите в личку сможем разобраться
Разбивка данных из листа excel на новые книги по определенному признаку
 
vera198907, не совсем. Прошу Вас оформляйте коды в сообщениях согласно правил форума.

Строки:
Код
b.Cells(q, 2) = a.Cells(i, 2)
b.Cells(q, 3) = a.Cells(i, 3)
b.Cells(q, 3) = a.Cells(i, 4)
b.Cells(q, 3) = a.Cells(i, 5)
b.Cells(q, 3) = a.Cells(i, 6)


Должны выглядеть вот так:

Код
b.Cells(q, 2) = a.Cells(i, 2)
b.Cells(q, 3) = a.Cells(i, 3)
b.Cells(q, 4) = a.Cells(i, 4)
b.Cells(q, 5) = a.Cells(i, 5)
b.Cells(q, 6) = a.Cells(i, 6)
Разбивка данных из листа excel на новые книги по определенному признаку
 
vera198907,
Ответ на первый вопрос: Да, файлы сохраняются там где исходник, но можно изменить путь в строках 7, 8 и 22.
Ответ на второй вопрос:
1. Необходимо увеличить цикл в строке кода 24 до нужного количества столбцов
2. После строки 18 добавить код присвоения ячейкам активной книги значения дополнительных столбцов
Изменено: garnik - 30.11.2018 22:04:00
Разбивка данных из листа excel на новые книги по определенному признаку
 
vera198907, Поместите файл примера в папку и откройте его с папки, запустите отработку
Разбивка данных из листа excel на новые книги по определенному признаку
 
vera198907, попробуйте вот так, может метры подправят я всего лишь учусь

Код
Sub test()
lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
k = 0
Set a = Workbooks("Пример.xlsm").Sheets("Лист3")
For i = 2 To lLastRow
k = Cells(i, 3)
If Len(Dir(Workbooks("Пример.xlsm").Path & "\" & k & ".xlsx")) > 0 Then
Workbooks.Open Filename:=Workbooks("Пример.xlsm").Path & "\" & k & ".xlsx"
Set b = ActiveWorkbook.Sheets("Лист1")
lLastRowb = b.Cells(Rows.Count, 1).End(xlUp).Row
For q = 2 To lLastRowb + 1
If b.Cells(q, 1) = "" Then
b.Cells(q, 1) = b.Cells(q - 1, 1) + 1
Exit For
End If
Next q
b.Cells(q, 2) = a.Cells(i, 2)
b.Cells(q, 3) = a.Cells(i, 3)
ActiveWorkbook.Close True
Else
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=Workbooks("Пример.xlsm").Path & "\" & k & ".xlsx"
Set b = ActiveWorkbook.Sheets("Лист1")
For q = 1 To 3
b.Cells(1, q) = a.Cells(1, q)
If q = 1 Then
b.Cells(2, q) = 1
Else
b.Cells(2, q) = a.Cells(i, q)
End If
Next q
ActiveWorkbook.Close True
End If
Next i
End Sub
Как запустить 4 макроса одновременно?
 
Dakuras, возможно Вы хотели сделать вот так?

Код
Sub Макрос1()
Dim b, c, a
Set b = ThisWorkbook.Sheets("Для макроса")
Set c = ThisWorkbook.Sheets("С ФИО оф")
For a = 2 To 40 'Это тестовое число-может быть другим
If c.Cells(a, 2) <> "" And c.Cells(a, 23) <> "" And c.Cells(a, 26) <> "" And c.Cells(a, 27) <> "" _
And c.Cells(a, 28) <> "" And c.Cells(a, 31) <> "" And c.Cells(a, 32) <> "" And c.Cells(a, 33) <> "" Then
b.Cells(2, 1) = c.Cells(a, 2)
b.Cells(2, 2) = c.Cells(a, 23)
b.Cells(2, 3) = c.Cells(a, 26)
b.Cells(2, 4) = c.Cells(a, 27)
b.Cells(2, 5) = c.Cells(a, 28)
b.Cells(2, 6) = c.Cells(a, 31)
b.Cells(2, 7) = c.Cells(a, 32)
b.Cells(2, 8) = c.Cells(a, 33)
End If
'Тут стоит команда на печать нужного листа
Next a
End Sub
Изменено: garnik - 23.04.2018 20:12:13
Турнирная таблица: перемещение строки с наивысшими балами ввех таблицы
 
Юрий М, макрос не мой, взял готовый, поэтому особо не вдавался в подробности. По сути никакого смысла.
Турнирная таблица: перемещение строки с наивысшими балами ввех таблицы
 
maksimiich, все очень просто, в шапке таблицы устанавливаете фильтр, потом нажимаете ПКМ на вкладке листа, выбираете исходный текст, помещаете в появившемся окне следующий код:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("C3:H14")) Is Nothing Then
  If Target <> "" Then
  Call test
  Else
  Call test
  End If
End If
End Sub


Где
Код
"C3:H14"
изменяемый диапазон ячеек, в Вашем случае это ячейки, в которые вводите очки команд по турнирам
Код
 test
название макроса записанного с помощью макрорекордера, запись осуществляется во время фильтрации столбца ИТОГИ по убыванию.

Вот и все!
Изменено: garnik - 13.11.2017 22:54:59
Турнирная таблица: перемещение строки с наивысшими балами ввех таблицы
 
Попробуйте вот так, только макросы включите
Изменено: garnik - 13.11.2017 22:27:35
Создание аббревиатуры, Извлечение первых букв набора слов в ячейке
 
Друзья спасибо Вам. Получилось то что надо

Код
Sub test()
Dim c, i&
  c = Split(Cells(1, 1))
  For i = LBound(c) To UBound(c): c(i) = Left(c(i), 1): Next
  Cells(1, 2) = UCase(Join(c, ""))
End Sub
Изменено: garnik - 12.11.2017 19:41:57
Создание аббревиатуры, Извлечение первых букв набора слов в ячейке
 
Всем доброго времени суток. Друзья необходима помощь, сформировал формулу:

Код
=ЛЕВСИМВ(A1;1)&ПРОПНАЧ(ПСТР(A1;ПОИСК(" ";A1)+1;1))&ПРОПНАЧ(ПСТР(A1;ПОИСК(" ";A1;ПОИСК(" ";A1)+1)+1;1))&ПРОПНАЧ(ПСТР(A1;ПОИСК(" ";A1;ПОИСК(" ";A1;ПОИСК(" ";A1)+1)+1)+1;1))


Которая создает аббревиатуру по первым буквам каждого слова введенного в одну ячейку, слова разделены пробелами. Данная формула работает только с 4-мя словами.
Конечно можно ее увеличить до n-го количества слов, но она получится громоздкой. Подскажите может как-то макросом можно сделать
Скрытие\отображение листов по условию, Ошибки в макросе
 
Попробуйте файлик
Скрытие\отображение листов по условию, Ошибки в макросе
 
Вы строку условия поменяли?
Скрытие\отображение листов по условию, Ошибки в макросе
 
У Вас должно быть так
Код
Sub Worksheet_See()
If [A1] = "основной" Then
Sheets("Ежемесячный бюджет").Visible = True
Sheets("Дополнительные данные").Visible = True
Sheets("Ежемесячные расходы").Visible = False
Else
Sheets("Ежемесячный бюджет").Visible = False
Sheets("Дополнительные данные").Visible = False
Sheets("Ежемесячные расходы").Visible = True
End If
End Sub

Только вместо строки
Код
If [A1] = "основной" Then

Должно быть
Код
If ThisWorkbook.Sheets("Лист1").Cells(1,1) = "основной" Then
Как показать пусто в результате действия формулы
 
Попробуйте так:

Код
=ЕСЛИ(F2<>" ";"ь";"")
Отбор и подсчет количества уникальных значений по нескольким условиям, Отбор и подсчет количества уникальных значений по нескольким условиям
 
AAF, Вы гений, спасибо огромное :)
Отбор и подсчет количества уникальных значений по нескольким условиям, Отбор и подсчет количества уникальных значений по нескольким условиям
 
AAF, да то что нужно, спасибо Вам огромное :)

Как убрать, то что на картинке залито желтым?
Отбор и подсчет количества уникальных значений по нескольким условиям, Отбор и подсчет количества уникальных значений по нескольким условиям
 
Dmitriy XM, спасибо Вам, мкрос работает, но немного не то, суть в том что у меня нет таблицы для заполнения, макрос ее формирует сам.

AAF, и Вам спасибо, но Ваш макрос отображает не корректные данные, он считает всех агентов и все города,  но без учета года. А мне это очень важно, макрос должен запросить год и относительно этого года программа отбирает нужных мне агентов и города.
Отбор и подсчет количества уникальных значений по нескольким условиям, Отбор и подсчет количества уникальных значений по нескольким условиям
 
Sanja, спасибо Вам, но к сожалению не подойдет, так как макрос создает новый лист и формирует таблицу отчета.
Отбор и подсчет количества уникальных значений по нескольким условиям, Отбор и подсчет количества уникальных значений по нескольким условиям
 
Доброго дня, всем участникам форума. Столкнулся с проблемкой, есть код:

Код
Sub test2()
Dim d, a, i As Long
date3 = InputBox("Введите год")
If IsNumeric(date3) Then date3 = Year(DateSerial(CInt(date3), 1, 1)) Else Exit Sub
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = 1
a = ActiveSheet.Cells(2, 2).CurrentRegion.Value
For i = 2 To UBound(a)

  If Not d.exists(a(i, 2)) Then d(a(i, 2)) = 0
  If Year(a(i, 3)) = date3 Then d(a(i, 2)) = d(a(i, 2)) + 1
Next i
ActiveSheet.Cells(1, 8).Resize(1, d.Count) = d.keys
ActiveSheet.Cells(2, 8).Resize(1, d.Count) = d.items
End Sub


По этому коду макрос формирует отчет находящийся в диапазоне H1:K2, но задача усложнилась тем, что в исходной таблице добавился стобец с агентами. Теперь необходимо сформировать отчет по форме как в диапазоне G13:K16. Прошу Вашей помощи разобраться как это сделать. Пример прилагаю
Изменено: garnik - 13.08.2017 14:07:45
Текст и рисунок разместить на CommandButton в UserForm
 
Мистика, да и только, создавал несколько файлов до этого, вставлял картинку текст пропадал, не получалось так ка надо, файл не сохранял. Только что начал делать файл для примера. Все получилось так как надо. Спасибо The_Prist,  :)
Текст и рисунок разместить на CommandButton в UserForm
 
Kuzmich, это сработает, но не хотелось бы прибегать к графическим редакторам по созданию каждой кнопки. Может есть какой другой вариант?
Изменено: garnik - 28.07.2017 17:46:08
Текст и рисунок разместить на CommandButton в UserForm
 
Здравствуйте, уважаемые форумчане. Снова прошу у Вас помощи. Подскажите необходимо на кнопочке CommandButton вставить картинку слева по центру и наименование кнопки текстом, как показано на рисунке во вложении. Картинку в кнопочку вставляю, а вот с текстом беда, не могу сделать одновременно и текст и картинку. Пробовал вставлять текст как Label, но тогда при нахождении курсора мыши на тексте кнопки не происходит ее активация
Извлечение уникальных значений и подсчет их количества по условию
 
Друзья Всем спасибо большое, очень помогли.
Извлечение уникальных значений и подсчет их количества по условию
 
AAF, подскажите, пожалуйста, а если в перечне будут не города, а какие-нибудь различные наименования, это имеет значение?
Просто я смотрю у Вас в коде функции
Код
CreateObject("Scripting.Dictionary")

и
Код
CurrentRegion

Цитата
AAF написал: Не понял, зачем?
ну это я так для себя, учусь же  :)
Страницы: 1 2 3 След.
Наверх