Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите с Excel
 
 автор: dodikxxx   (20.10.2011 в 15:54)   личное сообщение
68 Кб.
 
 

Ребята, кто шарит помогите, хотя вопрос возможно не в том форуме.
Если менять кол-во выпускаемых аппаратов (самая большая цифра вверху) то меняются количества ОСТАТКОВ ДЕТАЛЕЙ и соответственно рассчитывается ТРУДОЕМКОСТЬ ОСТАТКОВ этих остаточных деталей. Фишка в том, что мне нужно, меняя кол-во аппаратов (ну скажем от 10 до 200) увидеть самый лучший вариант работы, т.е. чтобы остатков деталей было как можно меньше, и следовательно сумма трудоемкостей остатков была минимальная. В данной таблице я подсчитал (РУЧНЫМ СПОСОБОМ перебирая от 1 до 120 там под таблицей символическая табличка) самое оптимальное значение 99. Но есть два момента:
1)что если любую программу надумают не делать? тогда результат опять меняется!
2)и как это всё автоматизировать? чтобы не искать в ручную? чтобы программа сама перебирала кол-во аппаратов и просчитав все варианты нашла правильное решение(т.е. минимальное значение остатков трудоемкости)?

  Ответить  
 
 автор: dodikxxx   (20.10.2011 в 16:08)   личное сообщение
 
 

всё пытаюсь применить тут функцию Екселя "Поиск решений" но не выходит пока что...

  Ответить  
 
 автор: kot_k_k   (20.10.2011 в 17:19)   личное сообщение
 
 

мало че понял - но если ввести 100 - то значение будет 71, меньше чем при 99.
нужно заложить этот расчет в программу и программой перебирая в цикле от 1 до 200 (хоть до миллиона) найти минимальное значение.

можно сделать извращенный цикл - который просто вписывает значение в клеточку (там где 99), немного задерживаатеся и считывает значение из другой клеточки - там где резальтат, - сравниваем с предыдущим и находим наименьшее и так нужное кол-во раз

  Ответить  
 
 автор: dodikxxx   (20.10.2011 в 17:30)   личное сообщение
 
 

А))) ну я там может где чего удалил из файла который на сайт выложил) тут да при 100 меньше получается.
ну в принципе да, всё что ты написал, звучит так как надо и как мне надо! да вот только я не умею писать такие проги. А что в экселе тоже проги пишутся?) даже не знал если честно.

  Ответить  
 
 автор: kot_k_k   (20.10.2011 в 17:35)   личное сообщение
 
 

Alt + F11 - вот тебе и проги пиши не хочу

Силыч прав - сделай таблу на соседнем листе загони туда все твои расчеты и строчки для кол-во аппаратов от 1 до 200 в последнем столбце получишь свои значения, в конце столбца найми Минимум для него, и это будет тебе проверка для функции ВПР и значение функции ВПР уже заносим на наш лист с расчетами

  Ответить  
 
 автор: dodikxxx   (20.10.2011 в 17:49)   личное сообщение
 
 

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

  Ответить  
 
 автор: Силblч   (20.10.2011 в 16:59)   личное сообщение
 
 

ВПР

  Ответить  
 
 автор: dodikxxx   (20.10.2011 в 17:32)   личное сообщение
 
 

Прочитал про ВПР, спасибо за отклик! но... кажись немного не то что нужно. Мне не минимальное значение из данных значений нужно, а именно меньший результат из n-ого количества автоматов. Вот Кот_к_к уловил именно то что мне нужно!

  Ответить  
 
 автор: Lukas   (20.10.2011 в 18:00)   личное сообщение
 
 


Sub Fill()
    Dim i As Integer
   
    With Workbooks.Add.Sheets(1) '.Add
        .Cells(1, 1) = "Кол-во в партии"
        .Cells(1, 2) = "Суммарная трудоемкость остатков"
        For i = 2 To 200
            .Cells(i, 1) = i
            ThisWorkbook.Sheets("Раскрой").Cells(2, 4) = i
            .Cells(i, 2) = ThisWorkbook.Sheets("Раскрой").Cells(23, 31)
        Next i
        .Range("A1:B200").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
        .Select
    End With
End Sub

Эта процедура (добавить в модуль этой книги)
добавит новую книгу, где на первом листе покажет результаты расчета суммарной трудоемкости
для кол-во в партии от 2 до 200, в отсортированном по возрастанию виде.

  Ответить  
 
 автор: dodikxxx   (20.10.2011 в 18:13)   личное сообщение
 
 

от это круто))) правда теперь надо понять как это работает. Правой кнопкой на активном листе, и "исходный текст" и дальше вставить туда прогу и сохранить? Всё так? или что-то ещё надо сделать?

  Ответить  
 
 автор: Lukas   (20.10.2011 в 18:34)   личное сообщение
27 Кб.
 
 

=>

  Ответить  
 
 автор: dodikxxx   (21.10.2011 в 10:35)   личное сообщение
 
 

ЗАРАБОТАЛО!!!!!!!!))

  Ответить  
 
 автор: dodikxxx   (21.10.2011 в 10:45)   личное сообщение
 
 

Lukas спасибище огромное! то что нужно!!!!!!! а я ведь могу там расширить диапазон больше 200 да?
постараюсь разобраться как ты это сделал! ЭТО ТО ЧТО НУЖНО БЫЛО ВРОДЕ))))СПС

  Ответить  
 
 автор: Explorer   (20.10.2011 в 18:35)   личное сообщение
 
 

эх-эх-эх

  Ответить  
 
 автор: dodikxxx   (21.10.2011 в 09:58)   личное сообщение
 
 

В смысле эх эх эх?)))
Ну простите за нубизм, но не умею я такое делать...

  Ответить  
 
 автор: amba-l   (21.10.2011 в 13:03)   личное сообщение
 
 


В смысле эх эх эх?)))


я так думаю что эх-эх-эх переводиться как "мне бы ваши проблемы" или "о сколько нам открытий чудных, готовит просвещенья дух...."

  Ответить  
 
 автор: dodikxxx   (21.10.2011 в 13:08)   личное сообщение
 
 

))) да скорее всего "мне бы ваши проблеммы))))"

  Ответить  
 
 автор: Explorer   (21.10.2011 в 14:02)   личное сообщение
 
 

здарова Никалаичь! Каг дела?

  Ответить  
 
 автор: dodikxxx   (21.10.2011 в 11:28)   личное сообщение
 
 

Next i
.Range("A1:B200").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Блин... не могу разобраться... Подскажи пожалуйста что это означает? мне просто надо это применить к рабочим файлам(там немного другие данные и сторочки). И кнопочка такая удобная))) как это сделать... Может в кратце у тебя найдётся минутка?

  Ответить  
 
 автор: snipe   (21.10.2011 в 12:28)   личное сообщение
 
 

значит это - диапазон а1:в200 сортировать по возрастанию в столбце в2
про кнопочку проще показать
быстрее поймете
сложного ни чего нет

  Ответить  
 
 автор: dodikxxx   (21.10.2011 в 12:48)   личное сообщение
 
 

спс! в всём остальном почти разобрался, классно он сделал) а вот тут застрял малёк. пытаюсь разобраться с кнопочкой... удобно с ней, не надо в модуль постоянно лезть и включать его.

  Ответить  
 
 автор: snipe   (21.10.2011 в 13:40)   личное сообщение
 
 

сначала пишете макрос
потом ставите кнопочку и вам предлагается выбрать макрос который будет запускаться по нажатию кнопочки
все

  Ответить  
 
 автор: dodikxxx   (21.10.2011 в 15:14)   личное сообщение
62 Кб.
 
 

сделал как вы и сказали. Заработало, но медленно почему-то) ошибку подправил.
Спасибо за совет! Кнопка работает)

  Ответить  
 
 автор: dodikxxx   (21.10.2011 в 15:35)   личное сообщение
 
 

вот у Lukas при нажатии на кнопку моментально подсчитывает, а когда я нажимаю, он думает секунд 8. Интересно от чего это зависит? Цифры одни и те же, и сделал всё так же как у него....

  Ответить  
 
 автор: dodikxxx   (21.10.2011 в 16:05)   личное сообщение
 
 

Усё научился делать на своих нескольких приложениях!!! ОГРОМНОЕ СПАСИБО Lukas, Kot_k_k, Snipe!!!!!
Выручили очень здорово!

  Ответить  
 
 автор: snipe   (21.10.2011 в 17:04)   личное сообщение
22 Кб.
 
 

я тоже сделал...
но у лукаса быстрее
однако вот =>

  Ответить  
 
 автор: dodikxxx   (24.10.2011 в 11:29)   личное сообщение
16 Кб.
 
 

Да у него конечно как-то в лёт считает. Просто сразу раз и всё) не понимаю что у меня не так сделано...
а вот в этом файле у меня идёт процесс довольно долго (сек 7-8) и в конце выдаёт ошибку (см. рисунок) и не сортирует по возрастанию из за этого.

  Ответить  
 
 автор: snipe   (24.10.2011 в 13:41)   личное сообщение
 
 

файлик надо смотреть

  Ответить  
 
 автор: dodikxxx   (24.10.2011 в 14:23)   личное сообщение
 
 

так я про ваш файлик то говорю. Скачал, запустил и вот - ошибку выдаёт тайм аута...
но процесс идёт и все 200 позиций просчитывает до конца, но не сортирует. Но это не очень уже важно, ибо всё работает в принципе... а вот код я поглядел, там по другому сделано, тоже погляжу поразбираюсь) глядишь научусь азам)

  Ответить  
 
 автор: snipe   (24.10.2011 в 16:20)   личное сообщение
 
 

видимо это из-за 2010 екселя
сейчас посмотрю в 2003

  Ответить  
 
 автор: snipe   (24.10.2011 в 16:55)   личное сообщение
23 Кб.
 
 

переделал под 2003

  Ответить  
 
 автор: dodikxxx   (25.10.2011 в 13:49)   личное сообщение
 
 

Простите, не успел ещё разобраться в вашем коде( И ОГРОМНОЕ СПАСИБО ЗА ПОЯСНЕНИЯ!!!
Подскажите мне пожалуйста один момент:
Давайте в коде Lukas пока что это сделаем, в нём я уже почти разобрался и мне легче будет быстрее в свои готовые встроить изменения. А ваш очень удобный, тоже его начну думать, как только задачу доделаю. А потом переделаю, уж больно удобно там вводить "от" и "до" значения)))
Так вот: что нужно дописать в код чтобы третьим столбцом вылезали значения из столбца "Партия, час". Там тоже итоговое значение, вот его тоже напротив вставлять и фильтровать по нему наверно не надо.

  Ответить  
 
 автор: snipe   (25.10.2011 в 15:07)   личное сообщение
 
 

вот переделанный код лукаса

Sub Fill()
    Dim i As Integer
    Dim j As Long
    Dim k As Long
    j = ThisWorkbook.Sheets("Раскрой").Cells(2, 31)
    k = ThisWorkbook.Sheets("Раскрой").Cells(2, 32)
    With Workbooks.Add.Sheets(1) '.Add
        .Cells(1, 1) = "Кол-во в партии"
        .Cells(1, 2) = "Суммарная трудоемкость остатков"
        .Cells(1, 3) = "Партия, час"
        For i = j To k
            .Cells(i - j + 2, 1) = i
            ThisWorkbook.Sheets("Раскрой").Cells(2, 4) = i
            .Cells(i - j + 2, 2) = ThisWorkbook.Sheets("Раскрой").Cells(23, 31)
            .Cells(i - j + 2, 3) = ThisWorkbook.Sheets("Раскрой").Cells(23, 28)
        Next i
        .Range(Cells(1, 1), Cells(i - j + 2, 3)).Sort Key1:=Range("B2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
        .Select
    End With
End Sub


ячейка AE2 - значение "от"
ячейка AF2 - значение "до"
необходимо быть внимательным ибо контроля за тем что от<до (должно быть) нет

  Ответить  
 
 автор: dodikxxx   (25.10.2011 в 16:15)   личное сообщение
 
 

эт я уже уловил (про ячейки)) сделал под своё и работает) Немного пока не понятны отдельные куски кода, но сейчас посижу поразбираюсь в этом деле. ОГРОМНОЕ СПАСИБО Snipe!

  Ответить  
 
 автор: dodikxxx   (25.10.2011 в 18:00)   личное сообщение
 
 

Усё, разобрался))) классно сделано. Для вас наверно халява, а мне то что нужно)))
вот только не понятна концовка программы. Смысл понятен, там сортировка. Но вот как это делается... все слова незнакомые)
ну ничего, делается и ладно, в конце концов я не программист.

  Ответить  
 
 автор: snipe   (25.10.2011 в 18:19)   личное сообщение
 
 

я тоже не программист
ни образования ни должности
так для общего развития

  Ответить  
 
 автор: dodikxxx   (27.10.2011 в 12:09)   личное сообщение
 
 

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

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList