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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2009, 17:53   #1
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию использование Like - в чем проблема?

задача:

есть область (Range("Name_for_del")) куда заносятся слова по которым в проверяемой области будет проводится подчистка данных.

сравниваю через Like, но пробовал и "=" результат одинаковый - никакого... т.е. если искать по одному слову то результата нет а если искать по всей ячейке, то работает.

а мне надо чтобы искало только по одному слову!


вот код:

Код:
With Sheets("70")
.Cells(1, "J").PasteSpecial Paste:=xlPasteValues
a = .Range("Name_for_del").Value
b = .Range(.Cells(5, "K"), .Cells(.Cells(65000, "K").End(xlUp).Row, "K")).Value
Application.Calculation = xlManual 

For j = 1 To UBound(a, 1)
  For k = 1 To UBound(b, 1)

If  "*" & a(j, 1) & "*"  Like b(k, 1) Then

.Range(.Cells(k + 4, "J"), Cells(k + 4, "L")).ClearContents
End If
Next k
Next j
Application.Calculation = xlAutomatic
как сделать чтобы по ключевому слову, например: "товар1" ячейка с текстом "товар1 №контракта 333" или " №контракта 333 товар1с НДС" или другое сочетание таки находилось???

Последний раз редактировалось kievlyanin; 20.08.2009 в 18:05.
kievlyanin вне форума Ответить с цитированием
Старый 20.08.2009, 17:57   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Есть подозрение, что Вы перепутали местами что с чем сравнивать. Должно быть
Код:
If a(j, 1) Like "*" & b(k, 1) & "*" Then
где
b(k, 1) = "товар1"
a(j, 1) = "товар1 №контракта 333"
Если у Вас также, но не работает, возможно совпадения действительно нет...
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 20.08.2009, 18:04   #3
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Есть подозрение, что Вы перепутали местами что с чем сравнивать. Должно быть
Код:
If a(j, 1) Like "*" & b(k, 1) & "*" Then
где
b(k, 1) = "товар1"
a(j, 1) = "товар1 №контракта 333"
Если у Вас также, но не работает, возможно совпадения действительно нет...


да попутал .. но наоборот тоже не работает ... это просто код выолжил уже х/з какой варинт уже пробую че тока в голову не взбредет ... ща исправлю
kievlyanin вне форума Ответить с цитированием
Старый 20.08.2009, 18:23   #4
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

блин .. тут что-то неправильно с синтаксисом *
если убирать * и в список ставить полное значение удаляемой ячейки - работает! .. если оставить только часть и приписать "*" то не работает ...

как это правильно написать???
kievlyanin вне форума Ответить с цитированием
Старый 20.08.2009, 21:06   #5
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

А что если обойтись без цикла?
Код:
dim rFndRng as range,a as range,b as range,rCell as range
With Sheets("70")
.Cells(1, "J").PasteSpecial Paste:=xlPasteValues
set a = .Range("Name_for_del")
set b = Range(.Cells(5, "K"), .Cells(.Cells(65000, "K").End(xlUp).Row, "K"))
Application.Calculation = xlManual
Application.ScreenUpdating = False
for each rCell in a
set rFndRng = b.find(what:=rCell,lookin:=xlvalues,lookat:=xlPart)
if not rFndRng is nothing then Range(.Cells(rFndRng.row + 4, "J"), .Cells(rFndRng.row + 4, "L")).ClearContents
next rCell
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End with
Как-то так
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru

Последний раз редактировалось The_Prist; 20.08.2009 в 21:08.
The_Prist вне форума Ответить с цитированием
Старый 20.08.2009, 21:10   #6
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

А у Вас в этой строчке
Код:
.Range(.Cells(k + 4, "J"), Cells(k + 4, "L")).ClearContents
ошибки не возникало случаем? Потому как у Вас отсутствует "." перед второй Cells. Может у Вас обработчик ошибок On error resume Next стоит перед кодом?
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 21.08.2009, 10:29   #7
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
А у Вас в этой строчке
Код:
.Range(.Cells(k + 4, "J"), Cells(k + 4, "L")).ClearContents
ошибки не возникало случаем? Потому как у Вас отсутствует "." перед второй Cells. Может у Вас обработчик ошибок On error resume Next стоит перед кодом?

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

а вариант без цикла щас проверю.
kievlyanin вне форума Ответить с цитированием
Старый 21.08.2009, 11:39   #8
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

блин .. сдаюсь ..

вот тренировочный файл с примером.

Есть два варианта с циклом (мое) и без цикла от The_Prist.

в обоих случаях проблемы

мое вообще не работает а второй вариант работает странно - удаляет все как надо, но почему то код надо два раза запускать... т.е. где-то что-то не так.
Вложения
Тип файла: rar primer.rar (61.9 Кб, 14 просмотров)
kievlyanin вне форума Ответить с цитированием
Старый 28.08.2009, 10:48   #9
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

up!

все еще не решил задачку
kievlyanin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с задачей на использование классов (С++) N1KeL Помощь студентам 4 25.07.2009 23:58
в чем проблема??? N@Z Паскаль, Turbo Pascal, PascalABC.NET 1 05.05.2009 23:07
в чем проблема? Exploit Помощь студентам 10 26.01.2009 09:39
В чем проблема? Sirazh Microsoft Office Excel 4 25.09.2008 21:32