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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2010, 14:08   #1
mihaz
Пользователь
 
Регистрация: 23.01.2010
Сообщений: 12
По умолчанию скрывание строк, ячейки которой не содержат нужного значения

таково задание.

есть строки, такого типа

пример:
А 1 4 2
Б 1 5 2
В 2 3 5
Г 3 2 3
Д 5 1 5

нужно скрыть строки, в которых нету 1, т.е. получится чтото вроде

А 1 4 2
Б 1 5 2
Д 5 1 5

есть соображения?
фильтр не подходит
програмка такого типа, есть кнопка, которая открывает форму, в которую ввожу цифру "1", и остаются только те строки, в которых есть "1" в любом месте
на 1 курсе проходил вижуалбэйсик, но за ненадобностью, позабыл уже все
mihaz вне форума Ответить с цитированием
Старый 23.01.2010, 17:26   #2
0mega
Форумчанин
 
Регистрация: 12.09.2009
Сообщений: 232
По умолчанию

Я возьму на себя смелость дать координаты Вашим записям

_______A________B_______C
1.....А 1 4 2
2.....Б 1 5 2
3.....В 2 3 5
4.....Г 3 2 3
5.....Д 5 1 5
6

В ячейке В1 пишем: =ЕСЛИ(ЕОШ(НАЙТИ("1";A1));"";A1)
Вы получите нужную выборку, только с пробелами.
(Между Б152 и Д515 будут 2-е пустые строчки
Как убрать пробелы я не знаю )
0mega вне форума Ответить с цитированием
Старый 23.01.2010, 18:20   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте mihaz.
решить Вашу задачу с помощью VBA, поможет подобный код:
Код:
Sub Command_Click()
    showSelectValue Val(Поле)
End Sub
Sub showSelectValue(q)
Dim i%, j%, vArr(), lastRow&, b As Boolean
With ActiveSheet.UsedRange
    lastRow = .Row - 1 + .Rows.Count
End If
vArr = Range(Cells(1, 1), Cells(lastRow, 4)).Value
For i = UBound(vArr) To 1 Step -1
    b = True
    For j = 2 To UBound(vArr, 2)
        If Cells(i, j) = q Then
            b = 0
            Exit For
        End If
    Next
    Rows(i).Hidden = b
    'Rows(i).Hidden = 0
Next
End Sub
Евгений.
P.S. форум не "машина ответов", его участники люди, и выкладывая вопрос не забывайте обращаться к тем кому Вы его адресуете, не знаете как - можно просто поздоровавшись.

Последний раз редактировалось Teslenko_EA; 23.01.2010 в 20:11.
Teslenko_EA вне форума Ответить с цитированием
Старый 23.01.2010, 18:37   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Цитата:
Евгений.
P.S. форум не "машина ответов", его участники люди, и выкладывая вопрос не забывайте обращаться к тем кому Вы его адресуете, не знаете как - можно просто поздоровавшись.
В принципе это так, но тогда база форума раздуется, если в каждом сообщении добавлять приветствие. Но кому как нравится, в общем
motorway вне форума Ответить с цитированием
Старый 23.01.2010, 18:57   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

motorway, "база форума раздуется" - это о Сервере - "машине", не стоит жертвовать уважением к собеседнику ради "железки", ведь общаемся мы не с ней а только с её помощью.
Я думаю и Вы не против уважительного обращения, а слова "..кому как нравится.." - наверное о чём то другом.
Евгений.

Последний раз редактировалось Teslenko_EA; 23.01.2010 в 20:12.
Teslenko_EA вне форума Ответить с цитированием
Старый 23.01.2010, 21:17   #6
mihaz
Пользователь
 
Регистрация: 23.01.2010
Сообщений: 12
По умолчанию

приношу извинения за невежливость=)
Здравствуйте всем!
спасибо за советы, попробую прямо сейчас, о результатах и проблемах сообщу обязательно...
mihaz вне форума Ответить с цитированием
Старый 23.01.2010, 21:21   #7
mihaz
Пользователь
 
Регистрация: 23.01.2010
Сообщений: 12
По умолчанию

и насчет координат, скроее это выглядит так
...A B C D E
1 А 1 4 2
2 Б 1 5 2
3 В 2 3 5
4 Г 3 2 3
5 Д 5 1 5
6
mihaz вне форума Ответить с цитированием
Старый 23.01.2010, 21:27   #8
mihaz
Пользователь
 
Регистрация: 23.01.2010
Сообщений: 12
По умолчанию

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

есть смысл создать форму, где "q" нужное мне значение, и кнопочка, типа Старт, которая запустит прогрмму?

проблемы пишет что End If without if
и next без for

Последний раз редактировалось mihaz; 23.01.2010 в 21:32.
mihaz вне форума Ответить с цитированием
Старый 23.01.2010, 22:20   #9
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

да действительно очепятка, должно быть так:
Код:
...
With ActiveSheet.UsedRange
    lastRow = .Row - 1 + .Rows.Count
End With
vArr = Range(Cells(1, 1), Cells(lastRow, 5)).Value ' E соответствует пятой колонке
For i = UBound(vArr) To 1 Step -1
    b = True
    For j = 1 To UBound(vArr, 2) 'для такой таблицы начинайте проверку с первой колонки
...
"..открывает форму, в которую ввожу цифру.." - в форму ничего ввести нельзя, процедура
Код:
Sub Command_Click()
    showSelectValue Val(Поле)
End Sub
подразумевает обработку события Click (Нажатие кнопки) которое передает в процедуру showSelectValue значение поля (Поле) в которое "ввожу цифру".
Без формы showSelectValue можно вызвать так:
showSelectValue 1
или так
showSelectValue Val(Cells(1, 6))
Евгений.

Последний раз редактировалось Teslenko_EA; 23.01.2010 в 22:25.
Teslenko_EA вне форума Ответить с цитированием
Старый 23.01.2010, 22:28   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Можно чуточку укоротить макрос:

Код:
Sub ОставитьТолькоСтрокиСЕдиницами()
    Dim ro As Range: Application.ScreenUpdating = False
    For Each ro In ActiveSheet.UsedRange.EntireRow
        ro.Hidden = ro.Find("1", , , xlWhole) Is Nothing
    Next ro
End Sub
Пример в файле:

EducatedFool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка на книгу, название которой является значением ячейки Максим23 Microsoft Office Excel 9 27.09.2010 09:21
Чтение cookie и нахождение нужного значения bebecap Общие вопросы Delphi 5 22.09.2009 23:35
Вывести на экран матрицу, в которой наибольшее число нулевых строк Александр НИК-В Паскаль, Turbo Pascal, PascalABC.NET 0 05.12.2008 20:49
в 1 книге копируется значение ячейки, номер которой каждый раз увеличивается на 1... Dr.Alex Microsoft Office Excel 2 29.10.2007 20:29
Подскажите пожалуйста чем удобнее воспользоваться для поиска нужного значения Ivo4ka Microsoft Office Excel 9 01.10.2007 20:17