powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск и сортировка в Excel
2 сообщений из 2, страница 1 из 1
Поиск и сортировка в Excel
    #36079541
sssdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу помощи у знатоков. help Попытался нарисовать макрос который в определенном столбце находит все значения по вхождению любых букв, затем меняет шрифт и заливку, а затем их сортирует (хотя может было бы лучше и фильтрует) Причем Sub писался для Perconal, т.е универсалка на кнопку панели управления. С первой частью все хорошо, находим, выделяем, а вот с сортировкой голову сломал confused , подскажите где ошибка, вот код:
Code
Sub НайтиСортировать()

Application.DisplayAlerts = False
Application.ScreenUpdating = False

Dim НачЯч As Range
Dim Диап As Range
Dim Столб As Range
Dim СтартАдр As String
Dim Результат As Range
Dim Искомое As String
Dim НачЯчАдр As String
Dim ИскЯч As Range

Set НачЯч = ActiveCell
НачЯчАдр = ActiveCell.Address
Set Столб = Range(Cells(ActiveCell.Column, 1), _
Cells(Range("A65536:IV65536").End(xlUp).Row, ActiveCell.Column))
'Столб.Select

Искомое = "*" & InputBox("Чаво искать будем?") & "*"
Set Результат = Столб.Find(Искомое, , , xlWhole)
If Not Результат Is Nothing Then
СтартАдр = Результат.Address
End If
Do While Not Результат Is Nothing
' Обработка результата поиска
Результат.Interior.ColorIndex = 20
Результат.Font.ColorIndex = 5

' Новый поиск
Set Результат = Столб.FindNext(Результат)
If Результат.Address = СтартАдр Then
Exit Do
End If
Loop
Range(НачЯчАдр).Select
Set Диап = Range(Cells(ActiveCell.Row, 1), _
Cells(Range("A65536:IV65536").End(xlUp).Row, ActiveCell.End(xlToRight).Column))

'Диап.Select

Dim СортЯч As Range
Dim НомСтолб As Currency
НомСтолб = НачЯч.Column

With Диап
.Columns(НомСтолб).EntireColumn.Insert
For Each СортЯч In .Columns(НомСтолб).Cells
СортЯч.Offset(, -1).Value = СортЯч.Font.ColorIndex
Next
.Offset(, 0).Resize(.Rows.Count, .Columns.Count).Select
.Sort Key1:=Cells(1, 1).Offset(1, 1)
.Columns(НомСтолб).Offset(, -1).EntireColumn.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End With
End Sub

Заранее благодарен
...
Рейтинг: 0 / 0
Поиск и сортировка в Excel
    #36084320
sssdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да жаль что никто не ответил, маленько доработал, работает, находит по любому вхождению, выделяет фильтрует, удобно, но возникли следующие вопросы - ищет только по значению, т. е. результат формул и даты в формате дат не ищет, и второе написал Sub, для обратного действия - тоже работает, но если ничего не нашел, то усе. Может кто нибудь подскажет как этих тараканов вывести. Штука удобная может пригодиться всем. Вот измененный код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
Sub НайтиИФильтровать()
Application.DisplayAlerts = False
Call ScreenOff

Dim НачЯч As Range
Dim Диап As Range
Dim Столб As Range
Dim Строк As Range
Dim СтартАдр As String ' Хранит координаты первого найденного значения
Dim Результат As Range
Dim Искомое As String
Dim НачЯчАдр As String
Dim ИскЯч As Range
Dim КолСтр As Integer
Dim Цвет As Integer
Set НачЯч = ActiveCell
НачЯчАдр = ActiveCell.Address
Set Столб = Range(Cells( 1 , ActiveCell.Column), _
Cells(Range("A65536:IV65536").End(xlUp).Row, ActiveCell.Column))


Искомое = "*" & InputBox("Чаво искать будем?") & "*"
' Поиск первого входжения искомого слова
Set Результат = Столб.Find(Искомое, , , xlWhole)
If Not Результат Is Nothing Then
' Сохраним адрес найденной ячейки (чтобы контролировать зацикливание поиска)
СтартАдр = Результат.Address
End If
Do While Not Результат Is Nothing
' Обработка результата поиска
Результат.Interior.ColorIndex =  20 
Результат.Font.ColorIndex =  5 

' Новый поиск
Set Результат = Столб.FindNext(Результат)
If Результат.Address = СтартАдр Then ' Поиск завершен
Exit Do
End If
Loop
Dim АктСтолб
КолСтр = Столб.Rows.Count
АктСтр = НачЯч.Row
Цвет =  20 
НачЯч.Select
АктСтолб = НачЯч.Column
For I = АктСтр To КолСтр
If Cells(I, АктСтолб).Interior.ColorIndex <> Цвет Then
Rows(I).Hidden = True
End If
Next
Application.DisplayAlerts = True
Call ScreenOn
End Sub


Sub Разфильтровать()
Call ScreenOff
Dim Столб As Range
Dim КолСтр As Integer
Dim КонСтр
Dim НомСтолб As Integer
Set Столб = Range(Cells( 1 , ActiveCell.Column), _
Cells(Range("A65536:IV65536").End(xlUp).Row, ActiveCell.Column))
КолСтр = Столб.Rows.Count
КонСтр = Range("A65536:IV65536").End(xlUp).Row
НомСтолб = Столб.Column


For I =  1  To КонСтр
Cells(I, НомСтолб).Interior.ColorIndex = xlNone
Cells(I, НомСтолб).Font.ColorIndex =  1 
Next


For I =  1  To КолСтр
If Rows(I).Hidden = True Then
Rows(I).Hidden = False
End If
Next
Call ScreenOn
End Sub
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск и сортировка в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]