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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 24.01.2009, 22:54   #11
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Нажмите Alt + F11. Откроется редактор VBA.
Там увидите код макроса:
Код:
Private Sub Worksheet_Calculate()
    Dim shIn As Worksheet: Set shIn = ThisWorkbook.Worksheets("вход записи")
    Dim shOut As Worksheet: Set shOut = ThisWorkbook.Worksheets("КупляПродажа")
    Dim row As Range, cell As Range

    If Me.[a1].Value >= Me.[a2].Value Then
        For i = Me.[a2].Value To Me.[a1].Value
            Me.[a2] = i
            Set row = shIn.Rows(i)
            With row
                Select Case .Cells(5).Value
                Case "Продажа"
                    Set cell = shOut.Range("e65000").End(xlUp).Offset(1)
                    cell.Value = "Продажа - " & .Cells(2)
                    .Cells(7).Resize(1, 3).Copy cell.Next.Resize(1, 3)
                Case "Купля"
                    Set cell = shOut.Range("a65000").End(xlUp).Offset(1)
                    cell.Value = "Купля - " & .Cells(2)
                    .Cells(7).Resize(1, 3).Copy cell.Next.Resize(1, 3)
                End Select
            End With
        Next
    End If
End Sub
В строках
Set shIn = ThisWorkbook.Worksheets("вход записи")
Set shOut = ThisWorkbook.Worksheets("КупляПрода жа")

можно изменять названия соответствующих листов.

Столбец Продажи на листе КупляПродажа определяется
в строке
Set cell = shOut.Range("e65000").End(xlUp).Offset(1)

Аналогично в строке
Set cell = shOut.Range("a65000").End(xlUp).Offset(1)
определяется столбец Купля

Многое зависит от того, насколько изменится структура представления данных на листах.
Будет проще, если Вы прикрепите к сообщению оригинальный файл, а мы уже приделаем к нему макрос.
EducatedFool вне форума
Старый 24.01.2009, 23:49   #12
zander
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 113
По умолчанию самому тоже хочется понапрягаться :)

Есть еще момент, нужна команда очистки ячеек на листах ввод данных, и купля продажа простое удаление не передается макросу и он не обрабатывает строки порядковый номер которых меньше чем 25 только больше. Да и вот еще. Почему то в формуле слово ввод данных в одинарных ковычках, а другое слово с ковычками не пишется
zander вне форума
Старый 24.01.2009, 23:57   #13
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
самому тоже хочется понапрягаться
Ну так напрягайтесь сколько угодно Что Вам мешает?

Цитата:
нужна команда очистки ячеек на листах ввод данных
Зачем? Неужто Ваша чудо-система, которая формирует строки в этом файле, порой ещё и удаляет их?

Если удалять надо раз в полгода, так это и вручную можно сделать...

Цитата:
он не обрабатывает строки порядковый номер которых меньше чем 25
Конечно не отрабатывает. В ячейку A2 на листе настроек записывается номер последней обработанной строки +1.
Сделано это специально, чтобы дважды не обрабатывать одну и ту же строку.
Поставьте в ячейке А2 значение 1, и макрос начнёт обрабатывать всё с самого начала...

Цитата:
Почему то в формуле слово ввод данных в одинарных ковычках, а другое слово с ковычками не пишется
Кавычки нужны только в том случае, если в названии листа присутствуют пробелы.
Если Вы введёте другое название листа, которое не содержит пробелов, Excel удалит ставшие ненужными кавычки.

Последний раз редактировалось EducatedFool; 25.01.2009 в 00:01.
EducatedFool вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите чайнику Леон Microsoft Office Access 4 21.07.2008 14:41
Помогите чайнику Snoopa Microsoft Office Excel 8 10.01.2008 00:10
Помогите чайнику в програмировании Нати Помощь студентам 6 18.10.2007 13:15