Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/58: Рейтинг темы: голосов - 58, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 18.07.2014
Сообщений: 16

Сумма всех комбинаций значений из столбца чисел

18.07.2014, 16:44. Показов 12785. Ответов 45
Метки нет (Все метки)

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

Например n=4:
1
2
3
4
Кликните здесь для просмотра всего текста
суммы
3
4
5
5
6
7
6
7
8
9
10
Надеюсь, что ничего не забыл


Знаю о существовании топика ПОДБОР всех возможных комбинаций СУММЫ ячеек, но так как я полный дилетант в VBA, я не смог подкорректировать дельные советы по свой случай.

Прикрепляю файл, для которого это нужно провернуть.
123.xls
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.07.2014, 16:44
Ответы с готовыми решениями:

Сумма всех чисел из одного столбца ListBox
Как узнать итоговую сумму всех товаров? данные в листбокс заносятся из другой формы, следовательно товаров может быть разное количество....

Сумма вероятностей всех возможных комбинаций
Здравствуйте. Объясните, пожалуйста. Например, есть три символа, каждому присвоена вероятность, а в сумме эти вероятности дают...

Сумма произведений чисел комбинаций для k из n
Есть набор чисел. Их количество равно n. Нужно просчитать количество комбинаций для k из n (т.е., например, для 5 из 8). Это решил 3-мя...

45
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
18.07.2014, 18:39
Не парься, вот тебе готовое решение

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
51
52
53
54
Option Explicit
'
'Все вероятные комбинанации для определенного числа
'© Антихакер32™ ..2014
'
Const b0 = "0", b1 = "1"
Dim n&, n1&, n2&, dln&, f&, f1&, f2&
 
Function List(dln&) As String()
    'Бинарные элементы кода с указанной длиной *
    n = 2 ^ dln - 1
    ReDim a$(n): a(0) = String(dln, b0)
 
    For f = 0 To n
        a(f) = a(0)
    Next
    For f = dln To 1 Step -1
        n1 = 2 ^ (dln - f): n2 = n1 - 1
 
        For f1 = n1 To n Step n1 * 2
 
            For f2 = f1 To f1 + n2
                Mid(a(f2), f, 1) = b1
            Next
        Next
    Next
    List = a
End Function
 
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 18.07.2014 (Антихакер32)
'
    Const num = 10
    Dim j$(), j1$(), s$, n&, f&, i&
    Columns("A:A").Select
    Selection.ClearContents
    n = InputBox("Введите число комбинаций от 2 до " & num - 2 & " для числа " & num, , 3)
    j = List(num - 1): j1 = j
    For f = 0 To UBound(j)
        s = Replace(j(f), "0", "")
        If Len(s) = n - 1 Then j1(i) = j(f): i = i + 1
    Next
    ReDim Preserve j1(i - 1)
    For f = 0 To UBound(j1)
        j = Split(j1(f), "1")
        For i = 0 To UBound(j)
            j(i) = Len(j(i)) + 1
        Next
        'Выводим в каждую ячейку комбинацию сложения
        Range("A" & CStr(f + 1)) = Join(j, " + ")
    Next
End Sub
Добавлено через 2 минуты
1
0 / 0 / 0
Регистрация: 18.07.2014
Сообщений: 16
22.07.2014, 09:02  [ТС]
Антихакер32, спасибо. Я очень признателен, но это не совсем то, что я ожидал. В прикрепленном мной файле 86 ячеек с числами. Эти числа хотелось бы между собой просуммировать разнообразными образами без повторов (ака сочетания, комбинаторика) --- см. пример. Хотелось бы, чтобы алгоритм формулки составил как в примере.

Пример.xlsx
0
0 / 0 / 0
Регистрация: 18.07.2014
Сообщений: 16
22.07.2014, 09:31  [ТС]
Антихакер32, https://www.cyberforum.ru/cgi-bin/latex.cgi?C_n^k,\quad k=3,~n=86
там около 100 000 комбинаций будет, если я еще не забыл курс теории вероятности.
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
22.07.2014, 09:45
Avarice, не смущает, что уже для 30 чисел вариантов сумм будет: 1073741793
а для 40 примерно 1.09951E+12 ?!

боюсь, что для 86 я не смогу вычислить, не хочется в длинную арифметику лезть...

Так вот, если Вы будете в секунду генерировать миллион вариантов сумм, то для 40 чисел понадобится примерно 277 часов.

Только я не знаю, куда Вы варианты сохранять будете, места боюсь, не хватит.

p.s. формулу для подсчёта числа сочетаний без повторений брал тут. Только нужно просуммировать сочетания по 2 из N + сочетания по 3 из N + сочетания по 4 из N + ... + сочетания по N из N
0
0 / 0 / 0
Регистрация: 18.07.2014
Сообщений: 16
22.07.2014, 09:49  [ТС]
Sergio Leone, смутило, действительно, спасибо за комментарий. См. ответ №4.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
22.07.2014, 10:49
Там у меня все гениально и просто..
почему у меня числа не повторяются, потому что у меня
сначало строится массив с бинарными числами например 10011011...
длиной указанного ряда (10), затем отсеиваются только те комбинации
где есть указанное количество комбинаций к примеру 3
получаетя минимальное бинарное число из всех возможных комбинаций это
0000000111
максимальное
1110000000

после чего я только подставляю десятичное число для сложения
заменяя его тем, где в очередной комбинации находится еденица
и это еще я считаю самый простой, незамороченный способ
и комбинаций ровно столько сколько и должно быть

PS. файл Пример.xlsx в моем офисе 2003 не читается
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
22.07.2014, 10:58
Avarice, так Вас не все варианты интересуют, а только сумма ровно ТРЁХ чисел из 86 чисел?
Тогда Вы правы, таких вариантов действительно 102340
0
0 / 0 / 0
Регистрация: 18.07.2014
Сообщений: 16
22.07.2014, 11:17  [ТС]
Антихакер32, я не подвергаю сомнению то, что ваше решение замечательное. К сожалению, я не компетентен в том, чтобы подредактировать его под мою задачу.
Перезалил файл.
Пример.xls

Sergio Leone, я немного подсократил n до 79: выкладываю файл. Как вы считаете, возможно ли ~1,5 млн. чисел в столбец в экселе вписать?
числа.xls
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
22.07.2014, 11:30
Цитата Сообщение от Avarice Посмотреть сообщение
Перезалил файл. Пример.xls
Спасибо

Цитата Сообщение от Avarice Посмотреть сообщение
возможно ли ~1,5 млн. чисел в столбец в экселе вписать?
Нет ограничение 2^16-1 ячеек (65535)

сейчас гляну, что там за пример
1
0 / 0 / 0
Регистрация: 18.07.2014
Сообщений: 16
22.07.2014, 11:33  [ТС]
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Нет ограничение 2^16-1 ячеек (65535)
сейчас гляну, что там за пример
Точно, так и думал. Тогда есть смысл, если чисел будет больше указанного, размещать их в несколько столбиков.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
22.07.2014, 11:39
Цитата Сообщение от Avarice Посмотреть сообщение
Эти числа хотелось бы между собой просуммировать разнообразными образами без повторов
Просмотрел, файл, и считаю моего огромного желания может и хватит такое зделать
но программных мощностей не хватит
0
0 / 0 / 0
Регистрация: 18.07.2014
Сообщений: 16
22.07.2014, 11:47  [ТС]
Антихакер32,
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Просмотрел, файл, и считаю моего огромного желания может и хватит такое зделать
но программных мощностей не хватит
Было бы очень классно. Я, конечно, не советчик, но можно ведь тестить алгоритм на https://www.cyberforum.ru/cgi-bin/latex.cgi?n=10, \quad k=3 --- там всего-навсего https://www.cyberforum.ru/cgi-bin/latex.cgi?120(3)+45(2) комбинаций. А для 102 000 я попробую у себя . Главное, чтобы все не уперлось в указанные 65 тыс. ячеек столбца.

К тому же, согласитесь, задача не такая уж и абстрактная. Есть разумная вероятность, что это может понадобиться другим людям, или вам когда-нибудь, например.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
22.07.2014, 11:57
Цитата Сообщение от Avarice Посмотреть сообщение
или вам когда-нибудь, например
даже не представляю, где это может пригодиться,
для меня любая математическая задача это всеголиш разминка..
чтоб не потерять форму так-сказать, в очень редких случаях
случается такое что ранее пройденный мною матерьял
вдруг неожиданно становится открытием
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
22.07.2014, 11:58
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Нет ограничение 2^16-1 ячеек (65535)
имеется в виду не число ячеек, а число строк.
Да, есть такое ограничение.
Но Это в формтате XLS ( MS Excel XP/2003 )
в формате XLSX новые ограничения 1 048 576 строк и 16 384 столбцов.
2
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
22.07.2014, 12:08
Вы можете так сделать

в несколко циклов, которые будут подставлять числа удовлетворяющие
сумме, но чтоб комбинации не повторялись, есть объект Dictionary

CreateObject("Scripting.Dictionary") -Словарь
с помощью его можно не допустить повторов для его Key

затем то что уникально, вывести в новую ячеку

Добавлено через 3 минуты
Цитата Сообщение от Sergio Leone Посмотреть сообщение
( MS Excel XP/2003 )
я уже упомянул, что мне с ним и приходится работать
1
0 / 0 / 0
Регистрация: 18.07.2014
Сообщений: 16
22.07.2014, 12:29  [ТС]
Антихакер32, к сожалению, я не настолько продвинут в использовании VBA, чтобы как-то применить ваш дельный совет.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
22.07.2014, 12:47
Вариант
Вложения
Тип файла: rar Пример.rar (17.5 Кб, 56 просмотров)
3
0 / 0 / 0
Регистрация: 18.07.2014
Сообщений: 16
22.07.2014, 12:50  [ТС]
SoftIce, здорово! А есть ли возможность не итоговую сумму писать, а еще с формулами, как в примере?
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
22.07.2014, 12:51
Цитата Сообщение от Avarice Посмотреть сообщение
Sergio Leone, я немного подсократил n до 79:
буду нудным...
Вы не ответили на мой вопрос.
Вас интересуют все возможные суммы или только определённое число слагаемых.
В Пример.xls перебраны ВСЕ варианты.
Но общее количество ВСЕХ вариантов для n=79 настолько велико, что не хватит не времени, чтобы дождаться окончания вычислений, ни места, куда эти суммы можно сохранить!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.07.2014, 12:51
Помогаю со студенческими работами здесь

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

Даны списки чисел, нужно вывести список всех возможных комбинаций чисел, составляющих эти списки
Даны списки чисел, нужно вывести список всех возможных комбинаций чисел, составляющих эти списки (элемент из списка 1, элемент из списка 2...

Найти количество комбинаций, при которых сумма чисел на двух бочонках окажется равна заданному числу
Здравствуйте, помогите пожалуйста с программой, начинающий). Один способ придумал простой, но нужен ещё один. Не знаю что можно ещё...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru