Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2014, 02:32   #71
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
"и потом по выбору месяца" - вот я и поймал
По выбору месяца, а не месяцев!
Ну правильно, выбирается один месяц из 12.
Hugo121
Ну вы же мне сделали вып. список с месяцами.!!!
Сорри - Step_UA сделал, перепутал.

Последний раз редактировалось valerij; 28.02.2014 в 02:36.
valerij вне форума Ответить с цитированием
Старый 28.02.2014, 10:02   #72
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Потому это отчёт за месяц, а не за год.
Начал что-то делать, к вечеру может покажу свой вариант.
Хотя это можно и формулами делать, если список машин известен заранее.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2014, 11:00   #73
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Потому это отчёт за месяц, а не за год.
Начал что-то делать, к вечеру может покажу свой вариант.
Хотя это можно и формулами делать, если список машин известен заранее.
Спросил, данные за месяц, только таблица(лист Отчёт) должна обнулится тогда, когда я внесу дату текущего месяца, не по системной дате!!
Это может быть и не первым числом месяца.
Вот как в марте, начнут вводить данные только 04.03.2014
valerij вне форума Ответить с цитированием
Старый 28.02.2014, 11:02   #74
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вот такой вариант.
Но сперва передвинуть в сторону строку сумм - например под ячейку с выбором месяца или правее.
Эти суммы в принципе можно добавить вниз кодом, но лень. Если такой вариант возмёте - тогда можно и эти суммы дописать.

код в модуль листа ОТЧЁТ:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address(0, 0) <> "F1" Then Exit Sub
    tt Target.Value

End Sub
код в стандартный модуль:
Код:
Option Explicit

Sub tt(m$)
    Dim b(), d(), i(), aa(), ad(), af(), x&, ma, mes&, il&
    Dim dI As Object, dAA As Object, dAD As Object, dAF As Object, k

    Set dI = CreateObject("scripting.dictionary"): dI.comparemode = 1
    Set dAA = CreateObject("scripting.dictionary"): dAA.comparemode = 1
    Set dAD = CreateObject("scripting.dictionary"): dAD.comparemode = 1
    Set dAF = CreateObject("scripting.dictionary"): dAF.comparemode = 1

    ma = Split("Месяц,Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь", ",")
    For x = 1 To 12
        If m = ma(x) Then mes = x: Exit For
    Next

    With Sheets("Расход горючего")
        il = .Range("b" & .Rows.Count).End(xlUp).Row
        b = .Range(.Range("b4"), .Range("b" & il)).Value
        d = .Range(.Range("d4"), .Range("d" & il)).Value
        i = .Range(.Range("i4"), .Range("i" & il)).Value
        aa = .Range(.Range("aa4"), .Range("aa" & il)).Value
        ad = .Range(.Range("ad4"), .Range("ad" & il)).Value
        af = .Range(.Range("af4"), .Range("af" & il)).Value
    End With

    For x = 1 To UBound(b)
        If Month(d(x, 1)) = mes Then
            dI.Item(b(x, 1)) = dI.Item(b(x, 1)) + i(x, 1)
            dAA.Item(b(x, 1)) = dAA.Item(b(x, 1)) + aa(x, 1)
            dAD.Item(b(x, 1)) = dAD.Item(b(x, 1)) + ad(x, 1)
            dAF.Item(b(x, 1)) = dAF.Item(b(x, 1)) + af(x, 1)
        End If
    Next

    x = 0
    If dI.Count > 0 Then
        ReDim out(1 To dI.Count, 1 To 5)
        For Each k In dI
            x = x + 1: out(x, 1) = k
            out(x, 2) = dI.Item(k): out(x, 3) = dAA.Item(k)
            out(x, 4) = dAD.Item(k): out(x, 5) = dAF.Item(k)
        Next
    End If

    With Sheets("Отчёт")
        .[a2].Resize(.UsedRange.Rows.Count, 5).ClearContents
        If x > 0 Then .[a2].Resize(x, 5) = out
    End With

End Sub
Эта возня с месяцами для универсальности - у меня Эксель английский...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2014, 14:14   #75
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Эта возня с месяцами для универсальности - у меня Эксель английский...
Hugo121
Я пока не дома, буду ближе к вечеру, забыл добавить, что выбор месяца в листе Отчёт - [F1], уже не нужен, если только без него нельзя обойтись.
Но пусть будет, убрать всегда успеется. )

Последний раз редактировалось valerij; 28.02.2014 в 14:17.
valerij вне форума Ответить с цитированием
Старый 28.02.2014, 14:17   #76
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну в принципе без него можно обойтись. Но где-то нужно указать, за какой месяц Вам нужен отчёт
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2014, 21:12   #77
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Ну в принципе без него можно обойтись. Но где-то нужно указать, за какой месяц Вам нужен отчёт
Hugo121
Вставил макрос, СУПЕР!!!!!!!!!
Есть мелочи, ввели данные - март месяц, перешли в лист Отчёт и каждый раз приходится активировать месяц, что бы скорректировать данные.
Ведь необязательно ждать конца месяца.
Сам попробую поменять, потом отпишусь.

Последний раз редактировалось valerij; 01.03.2014 в 02:02.
valerij вне форума Ответить с цитированием
Старый 28.02.2014, 23:13   #78
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Можно этот макрос дополнительно запускать при переходе на лист.
Вложения
Тип файла: rar 2014.rar (31.8 Кб, 5 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2014, 23:15   #79
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Можно этот макрос дополнительно запускать при переходе на лист.
А где он удаляет строку([A20]) Итог в листе Отчёт?

Нашёл, так
Код:
.[a2].Resize(.UsedRange.Rows.Count - 2, 5).ClearContents

Последний раз редактировалось valerij; 28.02.2014 в 23:56.
valerij вне форума Ответить с цитированием
Старый 28.02.2014, 23:55   #80
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Этот итог я сам туда перетащил, чтоб он не затирался, я об этом говорил.
Если такой вариант отчёта годится, то можно или итог держать постоянно под шапкой (что просто и надёжно, код чуть скорректировать), или нужно дописывать код, чтоб он этот итог генерил под таблицей (координаты известны). Это нужно дописать кому-то...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите упростить простой макрос frantic150 Microsoft Office Excel 2 23.06.2009 04:55
проверьте плз код!можно ли его оптимизировать или упростить? -ushёl- Помощь студентам 10 23.04.2009 21:07
Вот! Тот макрос, который заставил обратится меня на этот форум! Дмитрий Фукс Microsoft Office Excel 6 10.04.2009 10:29
Запереть макрос можно? zander Microsoft Office Excel 1 15.02.2009 15:40