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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2013, 19:39   #1
feromonus
Новичок
Джуниор
 
Регистрация: 18.08.2013
Сообщений: 2
По умолчанию Перебор значений со сложением и вычитанием(вопрос)

День добрый!
Прошу помочь в следующем решении или направить по тропе истины).

Имеется столбец с числами, их может быть не более 12, хочу сделать выборку всех возможных комбинации со сложением и вычитанием удовлетворяющих условию =0 и видеть эти комбинаций.

Например: 17+11-8-5-2-2-1-1-1=8 не подходит и т.д
17
11
8
5
2
2
1
1
1

Прошу помочь и направить.Почитал по форуму достаточно, но все вокруг да около.Спасибо.
Вложения
Тип файла: rar комбинации.rar (18.2 Кб, 7 просмотров)
feromonus вне форума Ответить с цитированием
Старый 18.08.2013, 21:56   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от feromonus Посмотреть сообщение
Имеется столбец с числами, их может быть не более 12, хочу сделать выборку всех возможных комбинации со сложением и вычитанием удовлетворяющих условию =0
Код:
 Sub What_for_it_is_necessary()
 A = Array(17, 11, 8, 5, 2, 2, 1, 1, 1)
  For n = 0 To 511
 s = Bin(n, A)
 If s <> "" Then
 MsgBox s
 End If
  Next
End Sub

Function Bin(ByVal mm, Arr) As String
    Dim ss As String
    rez = ""
    Do While mm >= 2
        Md = mm Mod 2
        mm = Int(mm / 2)
        rez = Md & rez
    Loop
    Sum = 0
    rezult = Format(mm & rez, "000000000")
    ss = ""
    For n = 1 To Len(rezult)
        If Mid(rezult, n, 1) = 0 Then
            ss = ss & "+" & Arr(n - 1)
            Sum = Sum + Arr(n - 1)
        Else
            Sum = Sum - Arr(n - 1)
            ss = ss & "-" & Arr(n - 1)

        End If
    Next
    If Sum = 0 Then

        Bin = ss
    Else
        Bin = ""
    End If

End Function

Цитата:
видеть эти комбинаций.
Вот они
+17-11-8+5+2-2-1-1-1
+17-11-8+5-2+2-1-1-1
+17-11-8+5-2-2+1+1-1
+17-11-8+5-2-2+1-1+1
+17-11-8+5-2-2-1+1+1
+17-11-8-5+2+2+1+1+1
-17+11+8+5-2-2-1-1-1
-17+11+8-5+2+2+1-1-1
-17+11+8-5+2+2-1+1-1
-17+11+8-5+2+2-1-1+1
-17+11+8-5+2-2+1+1+1
-17+11+8-5-2+2+1+1+1
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 19.08.2013, 03:41   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

или так:
Код:
Sub Komb(rg As Range, v As Double)
  Dim s As String, si As String, i As Long, k As Long
  For i = 0 To 2 ^ rg.Rows.Count
    si = ""
    For k = 0 To rg.Rows.Count - 1
      si = si & IIf((2 ^ k And i) = 2 ^ k, "+", "-") & rg.Cells(k + 1)
    Next
    If Application.Evaluate(si) = v Then s = s & si & Chr(10)
  Next
  MsgBox s
End Sub


Sub Start()
  Komb [a1:a9], 0
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.08.2013, 20:32   #4
feromonus
Новичок
Джуниор
 
Регистрация: 18.08.2013
Сообщений: 2
По умолчанию

Спасибо душевное помогающим!
Не справился бы!
feromonus вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор всех доступных значений! AquaKlaster Общие вопросы Delphi 40 02.03.2015 12:27
перебор значений и подстановка Red Warrior Microsoft Office Excel 0 06.06.2013 21:00
Перебор значений (DevC++) InquisitorAles Помощь студентам 5 21.11.2010 23:26
Перебор значений таблицы Domain Microsoft Office Excel 2 05.10.2010 05:33
Перебор значений genf Microsoft Office Excel 0 18.12.2009 10:56