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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2017, 12:16   #11
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Код:
Sub a()
    Dim str As String
    Dim cel As Range
    On Error Resume Next
    str = "ПлательщикИНН=" & Trim(CStr(InputBox("ИНН = ")))
    Set cel = Columns("A:A").Find(What:=str, After:=Range("A1"), LookIn:=xlFormulas _
        , LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
    Sheets(Sheets.Count).Cells(Sheets(Sheets.Count).Range("A50000").End(xlUp).Row + 1, 1).Resize(36, 1).Value = _
        Range(cel.Offset(-7, 0), cel.Offset(28, 0)).Value
    Set cel = Nothing
End Sub
Спасибо за код, я его немного переделал (цифры поменял), но к сожалению, это не то что я думал.
Данный код работает так:
Открыв банковскую выписку при помощи Excel, запускаю макрос и выдает окно в которое нужно ввести ИНН (то что я не написал, но как раз и хотел, чтоб так было), и после ввода номера ИНН, макрос находит первый платеж от этой организации (их к сожалению бывает очень много но мелкие суммы), копирует эту секцию и вставляет в конец документа. Т.е., все другие остаются не удаленные, плюсом первую найденную оплату, дублирует еще раз(было 100 платежей, стало 101).
amadeus017 вне форума Ответить с цитированием
Старый 29.03.2017, 12:17   #12
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а что должна делать строчка:
Делать то что в ней прописано.
Ведь, как оказалось, не обязательно красить, можно скопировать на другой лист.

А поскольно запись не одна, то уж тут ТС надо поискать как обработать все результаты Find и покопировать на другой лист
Вложения
Тип файла: xls PaintCells.xls (61.5 Кб, 12 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 29.03.2017 в 12:21.
Aleksandr H. вне форума Ответить с цитированием
Старый 29.03.2017, 13:10   #13
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Делать то что в ней прописано.
Ведь, как оказалось, не обязательно красить, можно скопировать на другой лист.

А поскольно запись не одна, то уж тут ТС надо поискать как обработать все результаты и покопировать на другой лист
Что-то сложно для меня, я все таки бухгалтер, а не программист. Ну да попробую что-нибудь сделать, и на этом спасибо, что не оставили без внимания ))) !!!
amadeus017 вне форума Ответить с цитированием
Старый 29.03.2017, 13:24   #14
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от amadeus017 Посмотреть сообщение
Что-то сложно для меня
тогда топорный вариант
Код:
Sub a()
    Dim str As String
    Dim cel As Range
    Dim firstAdress
    On Error Resume Next
    str = "ПлательщикИНН=" & Trim(CStr(InputBox("ИНН = ", , "7716004076")))
    Set cel = Columns("A:A").Find(What:=str, After:=Range("A1"), LookIn:=xlFormulas _
    , LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)
    If Not cel Is Nothing Then
        firstAdress = cel.Address
        Do
            Sheets(Sheets.Count).Cells(Sheets(Sheets.Count).Range("A50000").End(xlUp).Row + 2, 1).Resize(35, 1).Value = _
            Range(cel.Offset(-5, 0), cel.Offset(29, 0)).Value
            Set cel = Columns("A:A").FindNext(cel)
            If cel Is Nothing Then
                GoTo DoneFinding
            End If
        Loop While Not cel Is Nothing And cel.Address <> firstAdress
    End If
DoneFinding:
    Set cel = Nothing
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 29.03.2017, 13:39   #15
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
тогда топорный вариант
Код:
Sub a()
    Dim str As String
    Dim cel As Range
    Dim firstAdress
    On Error Resume Next
    str = "ПлательщикИНН=" & Trim(CStr(InputBox("ИНН = ", , "7716004076")))
    Set cel = Columns("A:A").Find(What:=str, After:=Range("A1"), LookIn:=xlFormulas _
    , LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)
    If Not cel Is Nothing Then
        firstAdress = cel.Address
        Do
            Sheets(Sheets.Count).Cells(Sheets(Sheets.Count).Range("A50000").End(xlUp).Row + 2, 1).Resize(36, 1).Value = _
            Range(cel.Offset(-7, 0), cel.Offset(28, 0)).Value
            Set cel = Columns("A:A").FindNext(cel)
            If cel Is Nothing Then
                GoTo DoneFinding
            End If
        Loop While Not cel Is Nothing And cel.Address <> firstAdress
    End If
DoneFinding:
    Set cel = Nothing
End Sub
Этот вариант, лучше чем предыдущий (с кнопкой), но в нем "косяк". Теперь все платежи которые были в исходнике, находятся все и поочередно копируются друг под друга до "глубины" строк, а именно до A50000 (в моем случаи, получилась последняя строка "A50008").
По этому, я так думаю, что в исходнике найти все ИНН (посчитать сколько раз повторяется), затем запустить макрос и скопировать количество повторений на другой лист и убрать пробелы м/у скопированными платежами. Но это все же быстрее чем я делал (искал по ИНН, отмечал цветом, а потом отфильтровав все кроме отмеченного цветом, удалял, тем самым оставались платежи только по той организации, которая мне нужна бала)
amadeus017 вне форума Ответить с цитированием
Старый 29.03.2017, 13:47   #16
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от amadeus017 Посмотреть сообщение
Теперь все платежи которые были в исходнике, находятся все и поочередно копируются друг под друга до "глубины" строк, а именно до A50000 (в моем случаи, получилась последняя строка "A50008").
Вошпєм так, на файлах из 8 сообщения у меня работает, полу/нерабочий код не выкладаю. Какая у вас структура не знаю, "косяка" дебажить не могу.
Вложения
Тип файла: xls PaintCells.xls (62.0 Кб, 10 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 29.03.2017, 14:00   #17
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Вошпєм так, на файлах из 8 сообщения у меня работает, полу/нерабочий код не выкладаю. Какая у вас структура не знаю, "косяка" дебажить не могу.
Это я видимо не так что-то делал. Я открывал выписку при помощи Excel, затем в него вставлял с форума код, в котором подправлял строки

Цитата:
Sheets(Sheets.Count).Cells(Sheets(S heets.Count).Range("A50000").End(xl Up).Row + 2, 1).Resize(36, 1).Value = _
Range(cel.Offset(-7, 0), cel.Offset(28, 0)).Value
и запускал. Так у меня на этом же листе, внизу один под одним, вставлялись платежки (сам виноват, не так делал).

Теперь все работает!!!
Огромное спасибо за экономию времени!!!
amadeus017 вне форума Ответить с цитированием
Старый 29.03.2017, 14:27   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от amadeus017 Посмотреть сообщение
Теперь все работает!!!
Отлично!

Посмотрите, может быть, Вам удобнее/быстрее будет воспользоваться отдельной программкой, которую я по быстрому набросал.

Copy_INN_EXE.rar

пароль на архив: 123
в архиве файл Copy_INN.exe

вот так выглядит интерфейс:
screenshot_copier.png

Ну, если программа пригодится - буду рад,
нет, значит, нет.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.03.2017, 04:02   #19
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
Хорошо

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Посмотрите, может быть, Вам удобнее/быстрее будет воспользоваться отдельной программкой, которую я по быстрому набросал.
Ну, если программа пригодится - буду рад,
нет, значит, нет.
Как говорится, то что доктор прописал!...
Т.е., это именно то, что я и хотел!!!
Большое спасибо!
amadeus017 вне форума Ответить с цитированием
Старый 30.03.2017, 10:06   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Большое пожалуйста!
Пользуйтесь на здоровье!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Раскрасить ячейку dbgrideh Ernest027 БД в Delphi 13 12.08.2015 08:38
Раскрасить ListBox $T@LKER C# (си шарп) 8 05.04.2011 22:35
РАскрасить строки ListViev. Aleksandr Общие вопросы Delphi 20 17.09.2010 10:29
Раскрасить пузырьки в диаграмме danil1234567 Microsoft Office Excel 2 28.06.2010 18:03
Раскрасить DBGrid alex_base БД в Delphi 13 06.11.2007 11:36