Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 22.07.2018
Сообщений: 80
Excel

Как доработать Сумму значений в промежутке

06.03.2019, 14:56. Показов 1131. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Помогите доработать данный код, который высчитывает сумму для всех столбцов.

найти №q№r лист данные в листе результат;
--если пусто или нет в листе результат, то копируем №q№r из листа данные в лист результат;
--если с3 лист данные есть число, то ищем в столбце "с" начиная с "с3" пустые ячейки, после суммируем диапазон c3j5; полученный результат записываем в с2 лист результат,
--а если в с2 лист данные пусто, то ищем пустые ячейки до первой заполненной и суммируем диапазон c*j*; полученный результат записываем в ячейку с*


В файле приведён пример подсчета данного кода.
Цветом выделил то, что он подсчитывает.


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Sub pr()
 
 
Dim a, b, c, i&, j&, s#, t$, t1$, k&
    a = ActiveSheet.UsedRange.Columns("A:C")
    b = ActiveSheet.UsedRange.Columns("D:S")
    With CreateObject("scripting.dictionary")
        For i = 2 To UBound(a)
            If IsEmpty(a(i, 3)) Then
                t = a(i, 1) & "|" & a(i, 2)
                k = 0
                If t = t1 Then
                    s = s + Application.Sum(Application.Index(b, i, , 1))
                Else
                    t1 = t
                    k = 1
                    GoTo zapis
                End If
                t1 = t
            Else
zapis:
                If s <> 0 Then
                    If .exists(t) Then t = t & j: j = j + 1
                    c = Application.Index(a, i - 1, , 1): c(3) = s
                    .Item(t) = c
                    s = 0
                End If
                If k = 1 Then i = i - 1: k = 0
            End If
        Next
        Sheets.Add
        c = Application.Transpose(.items)
        Cells(2, 1).Resize(.Count, 3) = Application.Transpose(c)
    End With
 
 
End Sub
Вложения
Тип файла: xlsx Время.xlsx (13.6 Кб, 3 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.03.2019, 14:56
Ответы с готовыми решениями:

Найти сумму последних цифр всех четных чисел в заданном промежутке значений
в общем, вот задача: Написать программу на языке Си вычисления суммы последних цифр всех четных чисел в заданном диапазоне значений. ...

Построить таблицу значений функции f(x)=x^3+x^2-16x-18 для значений x, изменяющихся на промежутке
Дана функция f(x)=x^3 〖+x〗^2-16x-18 Построить таблицу значений функции y=f(x) для значений x, изменяющихся на промежутке с шагом ∆x=0.5

Выборка финальных значений в промежутке и нахождение несуществующих значений
всем привет! прошу помощи начинающему, есть 3 таблицы: две из них - с данными о товарах (на уровне магазина и области), третья -...

5
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
06.03.2019, 19:04
А в чем требуется доработка?

Добавлено через 30 минут
Надо добавить строку кода после строки №19:
Visual Basic
1
If i = UBound(a) Then GoTo zapis
для учета последних данных.
0
1 / 1 / 0
Регистрация: 22.07.2018
Сообщений: 80
07.03.2019, 09:02  [ТС]
Доброе утро!
Суть кода который привел, он ищет в столбце С пустые ячейки и основываясь на этом суммирует диапазон от D до S и выдает на отдельный лист.
Как доработать код, чтоб он производил сумму по всем остальным столбцам.
Могу выслать цветовую схему как должно быть.
0
1 / 1 / 0
Регистрация: 22.07.2018
Сообщений: 80
07.03.2019, 09:17  [ТС]
Здравствуйте!
Спасибо за помощь!
Вот пример того как должно получиться.
цветом выделил сумму по критерию B.
А на листе Результат показал как должно получиться.
Вложения
Тип файла: xlsx Время.xlsx (19.2 Кб, 3 просмотров)
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
09.03.2019, 17:34
Лучший ответ Сообщение было отмечено artofnewman как решение

Решение

Пробуй
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Sub pr1()
    Dim a, b, c, i&, j&, n&, s#, t$, t1$, k&
    a = Sheets("ДАННЫЕ").UsedRange.Columns("A:B")
    b = Sheets("ДАННЫЕ").UsedRange.Columns("C:S")
    ReDim Preserve a(1 To UBound(a), 1 To UBound(a, 2) + UBound(b, 2))
    With CreateObject("scripting.dictionary")
        For n = 1 To UBound(b, 2)
            For i = 2 To UBound(a)
                If IsEmpty(b(i, n)) Then
                    t = a(i, 1) & "|" & a(i, 2)
                    k = 0
                    If t = t1 Then
                        s = s + Application.Sum(Application.Index(b, i, , 1))
                    Else
                        t1 = t
                        k = 1
                        GoTo zapis
                    End If
                    t1 = t
                    If i = UBound(a) Then GoTo zapis
                Else
zapis:
                    If s <> 0 Then
                        j = 1
                        t = a(i - 1, 1) & "|" & a(i - 1, 2)
proverka:
                        If .exists(t) Then
                            c = .Item(t)
                            If c(n + 2) <> 0 Then
                                t = t & j: j = j + 1
                                GoTo proverka
                            End If
                        Else
                            c = Application.Index(a, i - 1, , 1)
                        End If
                        c(n + 2) = s
                        .Item(t) = c
                        s = 0
                    End If
                    If k = 1 Then i = i - 1: k = 0
                End If
            Next
        Next
        Sheets.Add
        c = Application.Transpose(.items)
        Sheets("ДАННЫЕ").Rows(1).Copy Cells(1, 1)
        Cells(2, 1).Resize(.Count, UBound(a, 2)) = Application.Transpose(c)
        Columns("A:S").AutoFit
    End With
End Sub
0
1 / 1 / 0
Регистрация: 22.07.2018
Сообщений: 80
10.03.2019, 10:59  [ТС]
Здравствуйте!!!
Вы гений!!!!!!!!!!!!!!!!!!!!!!!!!!

Вы супер!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!

Желаю Вам и Вашей семье фарта море и здоровья!!!!!!!!!!!!!!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.03.2019, 10:59
Помогаю со студенческими работами здесь

Как найти сумму чисел в промежутке элементов массива?
Все получилось, кроме этого вопроса( Подскажите, пожалуйста, чего не хватает? Program z1; var Z:array of integer; ...

Как доработать Javascript, который выводит общую сумму?
Есть яваскрипт, подсчитывающий общую сумму заказа позиций отмеченных в чекбоксе. Внизу кнопка подсчитать, и окно для вывода суммы. Мне...

Все значения: сумму всех значений по месяцам из первой таблицы и делил бы их соответственно на сумму значений
Добрый день, Есть две таблицы с одинаковой структурой (пример во вложении). Задача состоит в том, чтобы сделать запрос, который...

Умножение значений в промежутке времени excel
Доброго времени суток. Очередной стопор в таблицах. Суть в примере. Спасибо

Распечатать таблицу значений y(x) = 6•x – 4 на промежутке [0; 9] c шагом 0,5
2. Распечатать таблицу значений y(x) = 6•x – 4 на промежутке c шагом 0,5. (30 баллов)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru