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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2010, 15:31   #1
PARTOS
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 87
По умолчанию просчитать все возможные варианты диапазона используя VBA

Здравствуйте уважаемые господа программисты. Подскажите, как решить следующую задачку с помощью VBA:

Нужно просчитать все возможные варианты зелёного диапазона (С5:Е13) и из полученных МАКСИМУМОВ и МИНИМУМОВ оставить только первые 10 максимумов и первые 10 минимумов (К5:L14).
Вложения
Тип файла: rar вопрос.rar (9.0 Кб, 12 просмотров)
PARTOS вне форума Ответить с цитированием
Старый 30.09.2010, 15:48   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Делать сейчас не буду, но может просто собирать значения в массив, затем массив отсортировать и взять снизу и сверху по 10?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 30.09.2010, 15:59   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Здесь немного другой вариант-Фриланс.В файле никакого кода нет.
Главное не максимум вытянуть,главное правильно алгоритм построить всего процесса.опыт есть в данном направлении.обрабатывал информацию и по несколько гигов.даром делать не буду.
Вот код для составления комбинаций.возможно поможет

Код:
Option Explicit

Public zzz() As Long
Public stR As String
Dim ii As Byte



Public Function Factorial(ByRef N As Long) As Long
    Dim Result As Long
    Dim I As Long

    I = 1#
    Result = 1#
    Do
        Result = Result * I
        I = I + 1#
    Loop Until Not I <= N

    Factorial = Result
End Function
Public Function KthPermutation(ByVal N As Long, ByVal K As Long, ByRef A() As Long)
    Dim Temp As Long
    Dim SelNum As Long
    Dim I As Long
    Dim J As Long
    Dim F As Long

    K = K - 1#
    F = 1#
    ReDim A(N)
    For I = 1# To N Step 1
        A(I) = I
        F = F * I
    Next I
    
    For I = 1# To N - 1# Step 1
        F = F \ (N + 1# - I)
        SelNum = I + K \ F
        Temp = A(SelNum)
        For J = SelNum To I + 1# Step -1
            A(J) = A(J - 1#)
        Next J
        A(I) = Temp
        K = K Mod F
stR = stR & A(I)
    Next I
stR = stR & A(I) & vbCrLf
End Function
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 30.09.2010 в 16:06.
doober вне форума Ответить с цитированием
Старый 30.09.2010, 18:30   #4
PARTOS
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 87
По умолчанию

Упрощу вопрос:
Меня интересует только одно – как написать цикл, чтобы перебрать в одной ячейке все варианты от 1 до 999


Нужно написать программу, чтобы в ячейке D2 были перечислены все значения от 1 до 999
другими словами
если D2>B2 то D2=D2+1 иначе STOP
Вложения
Тип файла: rar вопрос2.rar (5.8 Кб, 13 просмотров)
PARTOS вне форума Ответить с цитированием
Старый 30.09.2010, 19:53   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

станьте в Д2, лента "формулы", группа "зависимости формул", кнопка "вычислить формулу". В открывшемся окне жмите кнопку "вычислить", после 6-го нажатия увидите все 999 значений.
С ними надо было что-то делать, поэтому я их просто просуммировал...
Вложения
Тип файла: rar вопрос2.rar (6.4 Кб, 15 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.09.2010, 20:52   #6
PARTOS
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 87
По умолчанию

IgorGO спасибо за подсказку, но написав «чтобы в ячейке D2 были перечислены все значения от 1 до 999», я имел ввиду чуть-чуть другое:


Мне нужен макрос-счётчик, который при запуске, в определённую ячейку вставлял сначала 1, потом 2, потом 3, и т.д. до 999, после того как счётчик доходил до 999 работа макроса прекращалась.

Другими словами :
Я включаю программу
В какой-нибудь (заранее определённой) ячейке за некоторое время отображаются все значения от 1 до 999 (как в перелистывающемся календаре)
Когда счётчик дойдёт до 999 – программа заканчивает свою работу
PARTOS вне форума Ответить с цитированием
Старый 30.09.2010, 22:06   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

перелистывайте...
Вложения
Тип файла: rar Книга412.rar (9.3 Кб, 17 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.09.2010, 22:15   #8
PARTOS
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 87
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
перелистывайте...
спасибо! то что нужно!
PARTOS вне форума Ответить с цитированием
Старый 30.09.2010, 22:59   #9
PARTOS
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 87
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
перелистывайте...
Ещё вопрос:
Возможно ли, чтобы перебираемые значения (от 1 до 99) представить в числовом виде.
Например, в ячейке G5 записать что-то вроде =(D5*1)+1, и чтобы при запуске макроса данные изменялись бы и в ячейке D5 и в ячейке G5.
PARTOS вне форума Ответить с цитированием
Старый 01.10.2010, 01:14   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

я, собственно, не совсем понимаю в чем вопрос?
а как по Вашему они там представлены? в коде написано cells(5,4) = cells(5,4)+1 - результат есть число, берите его, умножайте, складывайте с другими числами.
Я не возражаю...

Там, в коде, строку
Cells(5, 4) = 0
надо поменять на
Cells(5, 4) = Cells(1, 1) - 1
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 01.10.2010 в 01:20.
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все возможные варианты строки Vikenty Общие вопросы Delphi 3 29.08.2010 03:30
графы - Все возможные пути manuk Помощь студентам 9 23.05.2010 23:58
Все возможные слагаемые anGeee Паскаль, Turbo Pascal, PascalABC.NET 4 04.12.2008 20:22
перебрать все варианты перестановки строк sv_mix Помощь студентам 2 26.07.2008 17:48