powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel
16 сообщений из 16, страница 1 из 1
Excel
    #32607754
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как организовать поиск фрагмента
“01.08.2004” в строке вида :

“xxxxxxxxxxxxx 01.08.2004”

которая находится в ОБЪЕДИНЁННЫХ 4-х столбцах
B , C, D and E

На ТЕКУЩИЙ МОМЕНТ НА ЛИСТЕ 2200 СТРОК, но в дальнейшем
Количество строк буде расти

СПАСИБО
...
Рейтинг: 0 / 0
Excel
    #32608063
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
могет типа :
n = Format("01.08.2004", 0)
e = Format(Right(Cells(i, j), 10), 0)
If e = n Then
Cells(i, j).Select
End If
Естественно "i" и "j" переменные диапазона поиска...

Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Excel
    #32608090
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы сделал цикл for-each(это быстрее) по Range("B1:B2200") и проверял значение irange.range("A1") (это ссылка на 1 элемент ячейки при объединении) , например, через INstr.
...
Рейтинг: 0 / 0
Excel
    #32608189
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Sub PartStr()
Dim r As Range, g As Range
Set r = ActiveSheet.Range("A1:F27")
Set g = r.Find(What:="12.03.2006")
End Sub
Диапазон содержит как объединённые, так и простые ячейки.
Строки заполнены прогрессией "fff 12.03.2003" (от 03 до 29).
Для усложнения условий поиска первый столбец не содержит объединённых ячеек.
Метод работает наиболее быстро из известных мне встроенных средств поиска.
...
Рейтинг: 0 / 0
Excel
    #32608990
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
могет типа : 
n = Format("01.08.2004",  0 )
e = Format(Right(Cells(i, j),  10 ),  0 )
If e = n Then
Cells(i, j).Select
End If
Естественно "i" и "j" переменные диапазона поиска...

НЕ МОГЕТ БЫТЬ , ИМЕЕМ ERROR
мой код на базе предложенного:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim i As Integer
    Dim j As Integer
    i =  0 
    j =  1 
  
    n = Format("01.08.2004",  0 )
    e = Format(Right(Cells(i, j),  10 ),  0 )
    If e = n Then
    Cells(i, j).Select
    End If

в строке
e = Format(Right(Cells(i, j), 10), 0)
имеем 2 строки сообщения
Run-time error ‘1004’:
Application – defined or object-defined error


'n' and 'e' надо обїявлять ?
...
Рейтинг: 0 / 0
Excel
    #32608996
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
Dim r1 As Range, g As Range
    'Set r = ActiveSheet.Range("A1:F27")
    Set r1 = ActiveSheet.Range("b1:b300")
    Set g = r1.Find(What:="01.08.2004")

Ошибок нет, но я не знаю как выбрать найденную ячейку или
выдать сообщение что искомый фрагмент не найден.

Извините , СПАСИБО
...
Рейтинг: 0 / 0
Excel
    #32609020
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. пример в Help'е:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Find Method Example

This example finds all cells in the range A1:A500 on worksheet one that contain the value  2 , and then it makes those cells gray.

With Worksheets( 1 ).Range("a1:a500")
    Set c = .Find( 2 , lookin:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Interior.Pattern = xlPatternGray50
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
...
Рейтинг: 0 / 0
Excel
    #32609810
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beginner_1
Dim i As Integer
Dim j As Integer
i = 0 Должно быть Min (i) = 1
j = 1

n = Format("01.08.2004", 0)
e = Format(Right(Cells(i, j), 10), 0)
If e = n Then
Cells(i, j).Select
End If
в строке
e = Format(Right(Cells(i, j), 10), 0)
имеем 2 строки сообщения
Run-time error ‘1004’:
Application – defined or object-defined error


'n' and 'e' надо обїявлять ?

И вообще, не вижу цикла...
...
Рейтинг: 0 / 0
Excel
    #32610290
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
См. пример в Help'е:Find Method Example

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
This example finds all cells in the range A1:A500 on worksheet one that contain the value  2 , and then it makes those cells gray.

With Worksheets( 1 ).Range("a1:a500")
    Set c = .Find( 2 , lookin:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Interior.Pattern = xlPatternGray50
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
 

СПАСИБО за пример,
ОН, пример, работает только с НЕОБЪЕДИНЁННЫМИ ЯЧЕЙКАМИ,
у меня же строка находится в смежных объединённых ячейках.
...
Рейтинг: 0 / 0
Excel
    #32611429
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример с ячейками, объединёнными не только в строке, но и в столбце.
...
Рейтинг: 0 / 0
Excel
    #32612019
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProcessorВот пример с ячейками, объединёнными не только в строке, но и в столбце.
Да, хороший пример, но если значение повторяется несколько раз?
Я бы немного добавил:
n = 1
m = "A3"
mm = ":F34"
l: If m & mm = "$F$34:F34" Then GoTo l1
Dim r As Range, g As Range
Set r = ActiveSheet.Range(m & mm)
Set g = r.Find(What:=ActiveSheet.Range("C1").Text)
ActiveSheet.Range("E" & n) = IIf(g Is Nothing, "????", g.Address)
n = n + 1
m = g.Address
GoTo l
l1:

Естественно надо определяться с диапазоном просмотра...
...
Рейтинг: 0 / 0
Excel
    #32612412
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Excel
    #32612895
ПЯРНУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jojo , БОЛЬШОЕ СПАСИБО ЗА ПРИМЕРЫ ПО ДАТЕ,

Я только что скопировал, буду пробовать
...
Рейтинг: 0 / 0
Excel
    #32613165
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Steplerно если значение повторяется несколько раз?

Весь топик красной нитью пронизывает вопрос Beginner_1'а:
у меня строка находится в смежных объединённых ячейках
Пример как раз и показывает, что метод Find работает и в этом случае.
Остальное - в примере из Help'а.
Если же искомый фрагмент может повторяться в ячейке, используй поиск по строке в ячейке.
...
Рейтинг: 0 / 0
Excel
    #32613225
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Processor
Если же искомый фрагмент может повторяться в ячейке, используй поиск по строке в ячейке.
Не обижайся, я имел ввиду - если не одна, а несколько ячеек содержать такое же значение....
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Excel
    #32613428
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SteplerНе обижайся, я имел ввиду - если не одна, а несколько ячеек... Не обижайся - следующие ячейки ищутся методом FindNext в цикле:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Interior.Pattern = xlPatternGray50
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
Это фрагмент из того же примера из Help'а...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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