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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2021, 21:39   #1
2dm
Новичок
Джуниор
 
Регистрация: 28.07.2021
Сообщений: 2
По умолчанию VBA Exсel В одной и той-же ячейке на каждом листе есть определенная цифра, нужно сделать подсчет за последние семь дней, то есть за последние семь листов.

Дано: куча листов (каждый лист это день недели) в одной книге.
Много формул.
В одной и той-же ячейке на каждом листе есть определенная цифра,
нужно сделать подсчет за последние семь дней, то есть за последние семь листов.
всё что нашел на просторах рунета это:
Sub Заработок()
Dim x, i As Long
For i = 1 To Sheets.Count
x = x + Sheets(i).[A29]
Next
MsgBox (x)
End Sub

но он считает по всем листам(

Последний раз редактировалось 2dm; 28.07.2021 в 21:44. Причина: ошибка
2dm вне форума Ответить с цитированием
Старый 28.07.2021, 22:51   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

For I = sheets.count -7 to sheets.count ....
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 28.07.2021, 23:36   #3
2dm
Новичок
Джуниор
 
Регистрация: 28.07.2021
Сообщений: 2
По умолчанию

Aleksandr H., Святой вы человек! Спасибо работает)
а нельзя ли сделать так что бы оно считало от активной страницы минус 7 дней?
2dm вне форума Ответить с цитированием
Старый 30.07.2021, 19:49   #4
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 163
По умолчанию

Цитата:
Сообщение от 2dm Посмотреть сообщение
а нельзя ли сделать так что бы оно считало от активной страницы
от активного листа...
Код:
Sub Заработок()
    Dim x, i As Long, AShO As Long
    
    '   определяем очередь активного листа
    For i = 1 To Sheets.Count
        If Sheets(i).Name = ActiveSheet.Name Then
            AShO = i
            Exit For
        End If
    Next
    
    '   считаем
    If AShO - 6 < 1 Then
        MsgBox "наверно знаете почему непосчитать..."
        Exit Sub
    Else
        For i = AShO - 6 To AShO
            x = x + Sheets(i).[A29]
        Next
        MsgBox (x)
    End If
    
End Sub
Elixi вне форума Ответить с цитированием
Старый 31.07.2021, 13:24   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Elixi Посмотреть сообщение
' определяем очередь активного листа
Код:
 For i = 1 To Sheets.Count
        If Sheets(i).Name = ActiveSheet.Name Then
            AShO = i
            Exit For
        End If
    Next
=
Код:
AShO = Activesheet.Index
Не?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 31.07.2021, 18:15   #6
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 163
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Код:

AShO = Activesheet.Index

Не?
Вот видите, об этом не знал, так что спасибо за уроки Aleksandr H.
Elixi вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчет рабочих дней и часов в одной ячейке Valenelena Microsoft Office Excel 5 17.03.2016 07:03
Строка. Удалить последние буквы в каждом слове c# gvozdik12 Помощь студентам 1 17.03.2013 20:56
Долгая загрузка форума последние несколько дней Alar О форуме и сайтах клуба 45 08.12.2012 00:20
есть цифра-нужно словами ее написать! stas77 Microsoft Office Excel 2 30.10.2009 07:39