Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Подсчёт определенных столбцов листа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчёт определенных столбцов листа (Макросы/Sub)
Подсчёт определенных столбцов листа
pain2430 Дата: Среда, 09.10.2019, 19:19 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: 11 ±
Замечаний: 0% ±

Excel 2010
Добрый вечер, прошу помощи вот в таком вот задании:
Есть допустим данные в колонках A,B,C,D.
Мой макрос обрабатывает каждую из этих колонок. Есть ли какой-то код или способ, чтобы можно было выбирать колонки которые должны подсчитываться перед самим подсчётом?
Например сегодня мне нужно посчитать колонки A и C, а завтра A и D.

Думал сделать по условию, но не знаю как. Колонки заполняются не равномерно, в хаотичном порядке. Сегодня допустим добавились значения в A и C, а завтра добавились значения в A и D, и нужно подсчитать только те колонки, которые добавились в текущий день.

Спасибо!
 
Ответить
СообщениеДобрый вечер, прошу помощи вот в таком вот задании:
Есть допустим данные в колонках A,B,C,D.
Мой макрос обрабатывает каждую из этих колонок. Есть ли какой-то код или способ, чтобы можно было выбирать колонки которые должны подсчитываться перед самим подсчётом?
Например сегодня мне нужно посчитать колонки A и C, а завтра A и D.

Думал сделать по условию, но не знаю как. Колонки заполняются не равномерно, в хаотичном порядке. Сегодня допустим добавились значения в A и C, а завтра добавились значения в A и D, и нужно подсчитать только те колонки, которые добавились в текущий день.

Спасибо!

Автор - pain2430
Дата добавления - 09.10.2019 в 19:19
nilem Дата: Среда, 09.10.2019, 19:36 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1612
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
pain2430, привет
например, так:
[vba]
Код
Sub ttt()
Dim r As Range, i&, j&, v, sm#
Dim col$

col = Application.InputBox("Запишите номера нужных колонок", , "1,2,3,4")
If col = vbNullString Then Exit Sub

Set r = Range("A1:D100")
For Each v In Split(col, ",")
    j = Val(v)
    For i = 2 To r.Rows.Count
        sm = sm + r(i, j)
    Next i
Next v

MsgBox sm, 64
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеpain2430, привет
например, так:
[vba]
Код
Sub ttt()
Dim r As Range, i&, j&, v, sm#
Dim col$

col = Application.InputBox("Запишите номера нужных колонок", , "1,2,3,4")
If col = vbNullString Then Exit Sub

Set r = Range("A1:D100")
For Each v In Split(col, ",")
    j = Val(v)
    For i = 2 To r.Rows.Count
        sm = sm + r(i, j)
    Next i
Next v

MsgBox sm, 64
End Sub
[/vba]

Автор - nilem
Дата добавления - 09.10.2019 в 19:36
pain2430 Дата: Четверг, 10.10.2019, 00:13 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: 11 ±
Замечаний: 0% ±

Excel 2010
nilem, спасибо! Не совсем разобрался конечно как этим пользоваться. Не очень силен в кодах VBA. Понял только что сейчас подсчитывается сумма колонок начиная со второй строки :)
А можно ли как то сделать чтобы были кнопки над каждым столбцом, которые будут добавлять якобы в макрос колонки которые нужно подсчитать?(так просто удобней)
И вот мой макрос который считает эти колонки
[vba]
Код
Sub подсчёт()
ЛистМоихРасчётов.Range("H9:H200").Value = ЛистПримера.Range("B9:B200").Value
Call запуск
ЛистПримера.Range("C9:C200").Value = ЛистМоихРасчётов.Range("HC9:HC200").Value
ЛистПримера.Range("D9:D200").Value = ЛистМоихРасчётов.Range("HE9:HE200").Value

ЛистМоихРасчётов.Range("H9:H200").Value = ЛистПримера.Range("E9:E200").Value
Call запуск
ЛистПримера.Range("F9:F200").Value = ЛистМоихРасчётов.Range("HC9:HC200").Value
ЛистПримера.Range("G9:G200").Value = ЛистМоихРасчётов.Range("HE9:HE200").Value

ЛистМоихРасчётов.Range("H9:H200").Value = ЛистПримера.Range("H9:H200").Value
Call запуск
ЛистПримера.Range("I9:I200").Value = ЛистМоихРасчётов.Range("HC9:HC200").Value
ЛистПримера.Range("J9:J200").Value = ЛистМоихРасчётов.Range("HE9:HE200").Value

End Sub
[/vba]
Схема проста, данные с листа примера, копируются на другой лист, далее вызывается макрос со сложными расчётами, все считается и результат вносится на лист примера.
Небольшой пример прикрепил. Спасибо!
К сообщению приложен файл: __.xlsx (13.1 Kb)
 
Ответить
Сообщениеnilem, спасибо! Не совсем разобрался конечно как этим пользоваться. Не очень силен в кодах VBA. Понял только что сейчас подсчитывается сумма колонок начиная со второй строки :)
А можно ли как то сделать чтобы были кнопки над каждым столбцом, которые будут добавлять якобы в макрос колонки которые нужно подсчитать?(так просто удобней)
И вот мой макрос который считает эти колонки
[vba]
Код
Sub подсчёт()
ЛистМоихРасчётов.Range("H9:H200").Value = ЛистПримера.Range("B9:B200").Value
Call запуск
ЛистПримера.Range("C9:C200").Value = ЛистМоихРасчётов.Range("HC9:HC200").Value
ЛистПримера.Range("D9:D200").Value = ЛистМоихРасчётов.Range("HE9:HE200").Value

ЛистМоихРасчётов.Range("H9:H200").Value = ЛистПримера.Range("E9:E200").Value
Call запуск
ЛистПримера.Range("F9:F200").Value = ЛистМоихРасчётов.Range("HC9:HC200").Value
ЛистПримера.Range("G9:G200").Value = ЛистМоихРасчётов.Range("HE9:HE200").Value

ЛистМоихРасчётов.Range("H9:H200").Value = ЛистПримера.Range("H9:H200").Value
Call запуск
ЛистПримера.Range("I9:I200").Value = ЛистМоихРасчётов.Range("HC9:HC200").Value
ЛистПримера.Range("J9:J200").Value = ЛистМоихРасчётов.Range("HE9:HE200").Value

End Sub
[/vba]
Схема проста, данные с листа примера, копируются на другой лист, далее вызывается макрос со сложными расчётами, все считается и результат вносится на лист примера.
Небольшой пример прикрепил. Спасибо!

Автор - pain2430
Дата добавления - 10.10.2019 в 00:13
nilem Дата: Четверг, 10.10.2019, 07:15 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1612
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Можно попробовать с чекбоксами
[vba]
Код
Sub ertert()
Dim ChBx As CheckBox
With Sheets("Ëèñò2")
    For Each ChBx In ActiveSheet.CheckBoxes
        If ChBx.Value = 1 Then
            Select Case ChBx.TopLeftCell.Column
                Case 2
                    .Range("A9:A200").Value = Range("B9:B200").Value
                    'Call çàïóñê
                Case 5
                    .Range("B9:B200").Value = Range("E9:E200").Value
                Case 8
                    .Range("C9:C200").Value = Range("H9:H200").Value
                Case 11
                    .Range("D9:D200").Value = Range("K9:K200").Value
            End Select
        End If
    Next
    .Activate
End With
End Sub
[/vba]
К сообщению приложен файл: ttt.xlsm (21.3 Kb)


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеМожно попробовать с чекбоксами
[vba]
Код
Sub ertert()
Dim ChBx As CheckBox
With Sheets("Ëèñò2")
    For Each ChBx In ActiveSheet.CheckBoxes
        If ChBx.Value = 1 Then
            Select Case ChBx.TopLeftCell.Column
                Case 2
                    .Range("A9:A200").Value = Range("B9:B200").Value
                    'Call çàïóñê
                Case 5
                    .Range("B9:B200").Value = Range("E9:E200").Value
                Case 8
                    .Range("C9:C200").Value = Range("H9:H200").Value
                Case 11
                    .Range("D9:D200").Value = Range("K9:K200").Value
            End Select
        End If
    Next
    .Activate
End With
End Sub
[/vba]

Автор - nilem
Дата добавления - 10.10.2019 в 07:15
pain2430 Дата: Четверг, 10.10.2019, 21:45 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: 11 ±
Замечаний: 0% ±

Excel 2010
nilem, спасибо Вам огромное! Все прекрасно работает!
 
Ответить
Сообщениеnilem, спасибо Вам огромное! Все прекрасно работает!

Автор - pain2430
Дата добавления - 10.10.2019 в 21:45
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчёт определенных столбцов листа (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!