Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / поиск пустой ячейки / 12 сообщений из 12, страница 1 из 1
01.11.2007, 14:04:00
    #34910321
konvoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
Ищется в колонке D значение Cont, если сразу не находится, то делаются операции 1, если находится, то проверяется заполнение ячейки "M". Если ячейка заполнена, то ищется дальше пока не найдется строка со значением Cont, где М пустая (над этой строкой выполняются операции 2) или дойдет до конца, тогда операции 3.
Выдается ошибка в строке *** на выражении (Range("M" & (Str(r))).Value = ""). Как правильно написать проверку в найденой строке, что ячейка "M" не заполнена?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    With Worksheets( 1 ).Range("D1:D" & LTrim(Str(Num))) ' Диапазон поиска по столбцу D, где Num заведомо больше числа Row в таблице
        Set c = .Find(Cont, LookIn:=xlValues)
        If c Is Nothing Then   
		операции  1  .......... 
         Else

	   Do   ' -----------------------поиск непогашенной операции
                    Set c = .FindNext(c)
                    r = c.Row
***          Loop Until ((c Is Nothing) Or (Range("M" & (Str(r))).Value = ""))

               if c Is Nothing Then
		операции  2 
	   else
		операции  3 
	    end if
           End if
	...
    End With
Модератор: Не забываем про тег SRC
...
Рейтинг: 0 / 0
01.11.2007, 14:25:54
    #34910428
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
Код: plaintext
        Loop Until ((c Is Nothing) Or (Range("M" & r).Value = ""))
...
Рейтинг: 0 / 0
01.11.2007, 14:42:05
    #34910482
konvoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
Спасибо. Непонятно почему, но заработало.
...
Рейтинг: 0 / 0
02.11.2007, 08:52:28
    #34911930
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
Первую строку в которой значение в столбце D = Cont, в столбце M ="", можно найти обычной формулой массива,

Код: plaintext
1.
2.
3.
4.
5.
With Worksheets( 1 ).Range("D1:D" & LTrim(Str(Num)))
  r = Evaluate("MIN(IF(" & .Address(, , , True) & "=" & Cont & "," & _
                   "IF(" & .Offset(,  9 ).Address(, , , True) & "=""""," & _
                   "ROW(" & .Address(, , , True) & "))))")
End With
Debug.Print r

Если r = 0, то такой строки не найдено.
Иначе выдаст первый встретившийся номер строки
...
Рейтинг: 0 / 0
02.11.2007, 10:07:02
    #34912091
konvoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
на операторе r = ... выдается ошибка
...
Рейтинг: 0 / 0
02.11.2007, 10:33:05
    #34912192
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
konvoyна операторе r = ... выдается ошибка

полный рабочий код, незнаю что может вызывать ошибку, если хотите выложите файл

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub test()
Dim Num&, Count&, r&

Num =  50 
Cont =  3 

With Worksheets( 1 ).Range("D1:D" & LTrim(Str(Num)))
  r = Evaluate("MIN(IF(" & .Address(, , , True) & "=" & Cont & "," & _
                   "IF(" & .Offset(,  9 ).Address(, , , True) & "=""""," & _
                   "ROW(" & .Address(, , , True) & "))))")
End With
Debug.Print r

End Sub
...
Рейтинг: 0 / 0
02.11.2007, 15:31:01
    #34913521
konvoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
Предложенная вами команда у меня почему-то работает частично, значение 0 (не найдено) не возникает. Файл приложил. Никак не получается отработать правильно ПОИСК и обработку.
...
Рейтинг: 0 / 0
02.11.2007, 15:32:17
    #34913528
konvoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
Почему-то не прилепился файл
...
Рейтинг: 0 / 0
02.11.2007, 16:55:27
    #34913921
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
Что сразу бросилось в глаза, это то что мой

Код: plaintext
.Offset(,  9 )
вы поменяли на
Код: plaintext
.Offset(,  12 )

верните назад, т.к. это смещение к столбцу M относительно столбца D
...
Рейтинг: 0 / 0
02.11.2007, 19:16:38
    #34914414
konvoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
Я Вам премного благодарен. Все работает в лучшем виде. Я не понял назначение 9 и решил, что это цифровое обозначение столбца М, а о том, что это смещение узнал только от Вас.
...
Рейтинг: 0 / 0
02.11.2007, 20:40:47
    #34914538
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
konvoyЯ Вам премного благодарен. Все работает в лучшем виде. Я не понял назначение 9 и решил, что это цифровое обозначение столбца М, а о том, что это смещение узнал только от Вас.Если в примере макроса встретилась незнакомая команда (например как сейчас - Offset), то надо поставить курсор на эту команду и нажать F1. Потом читать до тех пор пока не станет ясно что эта команда делает.
...
Рейтинг: 0 / 0
03.11.2007, 10:33:30
    #34914848
konvoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск пустой ячейки
Спасибо. Я как раз хотел обратиться с этим вопросом, т.к. появилась потребность в поиске значения третьего поля.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / поиск пустой ячейки / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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