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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 13:15   #11
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

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

но если без бырьбы с трудностями Вам никак, то в стиле советских традиций необходимо "создать себе трудности, чтобы потом стойко их преодолевать" (а потом еще и гордиться собственным героизмом и рассказывать детям и внукам. только вот слово героизм немного не точно отражает суть процесса, но это только на мой взгляд).
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 25.12.2012, 13:27   #12
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Удалил сообщение.

Последний раз редактировалось Скрипт; 25.12.2012 в 13:52.
Скрипт вне форума Ответить с цитированием
Старый 25.12.2012, 13:32   #13
Робин
Форумчанин
 
Регистрация: 03.04.2010
Сообщений: 118
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
я знаю.
следуют нормально организовать данные. поместите итоговую строку выше фильтра - и задача становиться элементарной.

но если без бырьбы с трудностями Вам никак, то в стиле советских традиций необходимо "создать себе трудности, чтобы потом стойко их преодолевать" (а потом еще и гордиться собственным героизмом и рассказывать детям и внукам. только вот слово героизм немного не точно отражает суть процесса, но это только на мой взгляд).
Этот вариант я знаю.
Но это нужно для составления официального отчетного документа. Который утвержден соответствующим органом власти. И к его содержанию имеются определенные требования нормативно-правового характера. Которые нужно соблюдать. Иначе при проверке, ревизор запишет это как нарушение.
Робин вне форума Ответить с цитированием
Старый 25.12.2012, 13:38   #14
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от Робин Посмотреть сообщение
Этот вариант я знаю.
Но это нужно для составления официального отчетного документа. Который утвержден соответствующим органом власти. И к его содержанию имеются определенные требования нормативно-правового характера. Которые нужно соблюдать. Иначе при проверке, ревизор запишет это как нарушение.
Тогда единственное нормальное решение - макросом формировать требуемую выборку и строку итогов. Первое довольно неплохо делается расширенным фильтром.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 25.12.2012, 13:40   #15
Робин
Форумчанин
 
Регистрация: 03.04.2010
Сообщений: 118
По умолчанию

Цитата:
Сообщение от Скрипт Посмотреть сообщение
Робин, если средствами Excel не получается сделать, то нужно использовать VBA.

Смысл фильтра заключается в скрытии ненужных строк. Т.е. нужно с помощью VBA написать код, который будет скрывать ненужные строки.
Вы правы!
Но как раз написать такой код у меня и не получается. Если вы знаете как, плиз, подсобите.
Робин вне форума Ответить с цитированием
Старый 25.12.2012, 13:51   #16
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Робин, можно попробовать и без VBA. Вместо "Автофильтра" используйте "Расширенный фильтр".
Скрипт вне форума Ответить с цитированием
Старый 25.12.2012, 15:24   #17
Робин
Форумчанин
 
Регистрация: 03.04.2010
Сообщений: 118
По умолчанию

Цитата:
Сообщение от Скрипт Посмотреть сообщение
Робин, можно попробовать и без VBA. Вместо "Автофильтра" используйте "Расширенный фильтр".
Вот токо токо пробовал, ничего не вышло. Если у вас чето получается, плиз, покажите на примере.
Но, дело в том, что для печати отчета, мне нужна выборка за текущий месяц. А для анализа и сравнения, выборка за другие месяцы. И, как мне кажется, фильтром все это не получишь. Но молжет я чегото не знаю.
Робин вне форума Ответить с цитированием
Старый 25.12.2012, 15:43   #18
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Если не известно, как делать с помощью программы Excel, значит нужно попробовать использовать VBA.

Пример кода, который просматривает строки с 1 по 10 и скрывает строки, в которых есть число 1. Имеется ввиду, что в ячейке содержится только одно число 1. Если в ячейке будет 101, то строка не будет скрыта.

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

Ещё можно попробовать брать строку Excel в массив, а затем массив анализировать. Массивы быстрее просматриваются, чем ячейки Excel, которые являются объектами.

Код:
Sub Procedure_1()

    Dim oCell As Excel.Range
    Dim i As Long
    
    'Отключаем обновление монитора, чтобы код работал быстро.
    Application.ScreenUpdating = False
    
    'С помощью цикла с "i" двигаемся по строкам.
    For i = 1 To 10 Step 1
    
        'С помощью цикла "For Each ... In ... Next"
        'просматриваем все ячейке в строке.
        For Each oCell In Rows(i).Cells
        
            If oCell.Value = 1 Then
                
                'Скрываем строку. Т.е. делаем фильтрацию.
                Rows(i).Hidden = True
                
                'Выходим из цикла "For Each", т.к. строку
                'уже скрыли и нет смысла в ней ещё что-то просматривать.
                Exit For
                
            End If
            
        Next oCell
    
    Next i
    
    'Включаем обновление монитора.
    Application.ScreenUpdating = True

End Sub
Скрипт вне форума Ответить с цитированием
Старый 26.12.2012, 13:20   #19
Робин
Форумчанин
 
Регистрация: 03.04.2010
Сообщений: 118
По умолчанию

Цитата:
Сообщение от Скрипт Посмотреть сообщение
Если не известно, как делать с помощью программы Excel, значит нужно попробовать использовать VBA.

Пример кода, который просматривает строки с 1 по 10 и скрывает строки, в которых есть число 1. Имеется ввиду, что в ячейке содержится только одно число 1. Если в ячейке будет 101, то строка не будет скрыта.

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

Ещё можно попробовать брать строку Excel в массив, а затем массив анализировать. Массивы быстрее просматриваются, чем ячейки Excel, которые являются объектами.

Код:
Sub Procedure_1()

    Dim oCell As Excel.Range
    Dim i As Long
    
    'Отключаем обновление монитора, чтобы код работал быстро.
    Application.ScreenUpdating = False
    
    'С помощью цикла с "i" двигаемся по строкам.
    For i = 1 To 10 Step 1
    
        'С помощью цикла "For Each ... In ... Next"
        'просматриваем все ячейке в строке.
        For Each oCell In Rows(i).Cells
        
            If oCell.Value = 1 Then
                
                'Скрываем строку. Т.е. делаем фильтрацию.
                Rows(i).Hidden = True
                
                'Выходим из цикла "For Each", т.к. строку
                'уже скрыли и нет смысла в ней ещё что-то просматривать.
                Exit For
                
            End If
            
        Next oCell
    
    Next i
    
    'Включаем обновление монитора.
    Application.ScreenUpdating = True

End Sub
Доброго дня всем!
Для начала. Не могу понять, почему сайт работает с перебоями? Или это может только у меня?
Далее. Уважаемый Скрипт! Ваш макрос работает. Но решпет проблему лишь частично.
Например, как быть со списками длиннее 10 строк. И как увязать этот макрос с другими макросами.
Вложения
Тип файла: rar Пример-2.rar (45.1 Кб, 5 просмотров)
Робин вне форума Ответить с цитированием
Старый 26.12.2012, 13:57   #20
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Цитата:
Например, как быть со списками длиннее 10 строк.
Это стандартная задача в VBA в Excel - определение последней строки, в которой есть данные. Для этого можно использовать разные способы, я приведу один способ:
Код:
Sub Procedure_1()

    Dim lLastRow As Long
    
    'Основная часть параметров команды "Find" получена
    'с помощью макрорекордера.
    
    'Определение последней строки с данными на активном листе.
    'What:="?" - знак вопроса здесь является специальным символом.
    'SearchDirection:=xlPrevious - поиск с конца в начало.
    lLastRow = Cells.Find(What:="?", LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
        MatchCase:=False, SearchFormat:=False).Row

End Sub
Скрипт вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли сделать такое?... troyan32 Общие вопросы Delphi 9 08.04.2011 16:31
Возможно ли такое? Vlad.V Microsoft Office Excel 28 13.01.2011 18:51
Возможно ли такое...если да то как это сделать?! prizrak1390 Общие вопросы Delphi 9 03.01.2008 10:14