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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.05.2007, 17:40   #1
prosims
 
Регистрация: 03.05.2007
Сообщений: 5
По умолчанию Простой максор. Excel. Как написать.

В VBA я новичек. Не могу написать макрос в Excel, уже на стены лезу.

Дано:

носки 45
трусы 43
штаны 75
майки 28
шубы 67
чай 56
кофе 54
сало 32

Нужно чтобы они делились по суммам в 150 штук, то есть вот так:

носки 45
трусы 43
штаны 62

штаны 13
майки 28
шубы 67
чай 52

чай 4
кофе 54
сало 32

Может кто сможет написать весь код, чтоб я мог разобраться, а то я не могу допереть сам. Заранее благодарен.
prosims вне форума
Старый 07.05.2007, 00:24   #2
prosims
 
Регистрация: 03.05.2007
Сообщений: 5
По умолчанию

Вот решение моей проблемы. Не знаю только что нужно добавить, чтобы этот макрос работал не на весь лист, а обраватывал только конкретный диапазон строк например с 25-й по 64ю.

i = 4
Sum = 0
Do While Cells(i, 2) <> ""
razn = 192 - Sum
If Cells(i, 3) < razn Then
Sum = Sum + Cells(i, 3)
ElseIf Cells(i, 3) > razn Then
Rows(i + 1).Select
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Cells(i + 2, 1) = Cells(i, 1)
Cells(i + 2, 2) = Cells(i, 2)
Cells(i + 2, 3) = Cells(i, 3) - razn
Cells(i, 3) = razn
i = i + 1
Sum = 0
ElseIf Cells(i, 3) = razn Then
Rows(i + 1).Select
Selection.Insert Shift:=xlDown
i = i + 1
Sum = 0
End If
i = i + 1
Loop
prosims вне форума
Старый 08.05.2007, 08:37   #3
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

На самом деле, Ваш макрос не обрабатывает весь лист (все ячейки рабочего листа)

Что касается работы с конкретным диапазоном, то не внося существенных изменений, можно использовать If i = 100 then Exit Do

Кроме того, можно(и нужно) избавиться от лишних инструкций, таких как, например, выделение строки и повторная вставка строки
Rows(i + 1).Resize(2).Insert ' Shift:=xlDown
Cells(i + 1, 2).Resize(2).EntireRow.Insert ' Shift:=xlDown

Последний раз редактировалось pashulka; 08.05.2007 в 08:40.
pashulka вне форума
Старый 10.05.2007, 23:58   #4
prosims
 
Регистрация: 03.05.2007
Сообщений: 5
По умолчанию

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

Заранее спасибо, всем кто помогает, не вижу где тут кнопка "спасибо".
prosims вне форума
Старый 11.05.2007, 13:28   #5
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Если я правильно понял поставленную задачу, то один из примеров её решения можно скачать здесь
pashulka вне форума
Старый 01.06.2007, 16:55   #6
prosims
 
Регистрация: 03.05.2007
Сообщений: 5
По умолчанию

Спасибо, правда там не совсем то что нужно. Попытался сделать с теми примерами. Не получается. Так как количество строк неизвестно на листах из раза в раз. В приложении файл для примера из которого нужно перенести данные из трих листов на один в одну "ширенгу".
Вложения
Тип файла: rar example.rar (10.7 Кб, 36 просмотров)
prosims вне форума
Старый 04.06.2007, 03:03   #7
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

На самом деле, в моём прошлом примере не было жёсткой привязки к количеству строк, впрочем, также как и в новом примере.
Вложения
Тип файла: rar Example (Prosims).rar (20.0 Кб, 65 просмотров)
pashulka вне форума
Старый 07.06.2007, 17:06   #8
prosims
 
Регистрация: 03.05.2007
Сообщений: 5
По умолчанию

Спасибо огромное за помощь. Это как раз то что мне нужно. Благодарю. Ты мне очень помог, а то бы я полгода возился. Сорри, что сразу не ответил, в командировке был.
prosims вне форума
Закрытая тема


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с помощью Microsoft Excel написать программу, позволяющую перемещать предмет на плоскости? Vova4kA Microsoft Office Excel 10 28.05.2008 14:18
задача под windows,помогите написать.Надо написать на Borland C++Builder 6. eddddii Помощь студентам 9 23.05.2008 17:04
помогите, пожалуйсто, написать макрос для excel bacalavr Microsoft Office Excel 2 04.04.2008 11:39
очень громоздкие финансовые модели в Excel, а Excel не тянет Ragazza Microsoft Office Excel 7 03.10.2007 20:08
Формирование из excel в ASCII, у меня он формирует по одному клиенту а в Excel нескол Askat Общие вопросы Delphi 0 18.07.2007 06:28