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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2009, 17:23   #11
lazy_tom_cat
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 18
По умолчанию

Лови готовое решение в двух вариантах:

1) Как я и говорил - стандартными функциями Excel
2) С использованием VBA. Я написал функцию Chek которая возвращает ИСТИНА при вхождении значения ячейки из одного интервала в другой.
Вложения
Тип файла: rar primer.rar (11.3 Кб, 13 просмотров)
VBA нужно использовать тогда, когда стандартные средства Excel бессильны....
lazy_tom_cat вне форума Ответить с цитированием
Старый 20.03.2009, 17:32   #12
SoFuWa
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 64
По умолчанию

Слушай а есть такая функция
Instr(значение ячейки, строка для сравнения;) > 0
Как бы ее присобачить сюда в строку
If Cells(i, 2).Value = Cells(n, 7).Value Then
Если написать If Instr(Cells(i, 2).Value, Cells(n, 7).Value ;) > 0 Then то так не прет, как бы сделать?

Первый вариант не пойдет, так ка мне не нужен такой массив из 0 и 1 или ругих знаков, строение БД совсем другое и нужен именно акуратный "x" напротив ячейки с информацией.
Насчет функии чек это конешно отлично что ты мне ее написал, и можно даже туда забить 200 значений хот я это паревно и можно ошибится и как тогда искать ошибку и где? Это же сума сойдешь согласись? И нужен "x" а не истина ложь, потому что иначе придется все переделывать в исходной БД


Sub asd()
For i = 2 To 4
For n = 2 To 3
If Cells(i, 2).Value = Cells(n, 7).Value Then
Cells(i, 1).Select
ActiveCell = "x"
End If
Next n
Next i
End Sub

Последний раз редактировалось SoFuWa; 20.03.2009 в 17:37.
SoFuWa вне форума Ответить с цитированием
Старый 20.03.2009, 17:41   #13
lazy_tom_cat
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 18
По умолчанию

Ты не прав, по поводу х.

Слегка доработав формулу можно выводить хоть х хоть +.

Попробуй в ячейки с функцией Check прописать эту формулу:
=ЕСЛИ(Check(B3;$E$2:$F$2);"X";"")

Ну что? То что нужно?

Я не понял вопрос про то если значения не найдены. Ты же спрашивал как поставить крестик напротив записи которая есть в проверяемом диапазоне?
VBA нужно использовать тогда, когда стандартные средства Excel бессильны....
lazy_tom_cat вне форума Ответить с цитированием
Старый 20.03.2009, 17:43   #14
SoFuWa
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 64
По умолчанию

Все спасибо за помощь, я просто лишний ; поставил , вот так все работает
Sub asd()
For i = 2 To 4
For n = 2 To 3
If InStr(Cells(i, 2).Value, Cells(n, 7).Value) > 0 Then
Cells(i, 1).Select
ActiveCell = "x"
End If
Next n
Next i
End Sub

И именно так как мне надо
SoFuWa вне форума Ответить с цитированием
Старый 20.03.2009, 17:46   #15
SoFuWa
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 64
По умолчанию

Да согласен так можно сделать =ЕСЛИ(Check(B3;$E$2:$F$2);"X";""), но я же говорю 200 значений, это очень длиная строка будт и можно ошибится при вводе координат ячеек, а если ошибешся то потом где ошибку искать это конешно удобно но паревно
Кстати я попробывал =ЕСЛИ(Check(B3;$E$2:$F$2);"X";" ") незнаю почему но не работает, везде ставит X даже где условие не срабатывает хотя если поставить Check(B3;$E$2:$F$2) то работает, можешь сам проверть

Последний раз редактировалось SoFuWa; 20.03.2009 в 17:52.
SoFuWa вне форума Ответить с цитированием
Старый 20.03.2009, 18:01   #16
lazy_tom_cat
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 18
По умолчанию

У меня всё работает, причём отлично

И опять повторюсь, я не понял проблему с 200 ячейками. Можешь по человечески объяснить что тебя смущает?
VBA нужно использовать тогда, когда стандартные средства Excel бессильны....
lazy_tom_cat вне форума Ответить с цитированием
Старый 20.03.2009, 18:10   #17
lazy_tom_cat
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 18
По умолчанию

Тебя напрягает в формулу вместо $E$2:$F$2 вставить $E$2:$F$200???
VBA нужно использовать тогда, когда стандартные средства Excel бессильны....
lazy_tom_cat вне форума Ответить с цитированием
Старый 20.03.2009, 18:21   #18
SoFuWa
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 64
По умолчанию

Ааааа так можно, тогда я туплю, да так удобнее гораздо. Спасибо за помощь, ткок еще одна проблемочка, дело в том что в будущем придется вводить еще другие диапазоны, можно их добавить потом в функцию? Ну чтоб проверять не по 1 списку, а по двум например, и соответственно , для друго го списка нужен будет другой символ не "X"

Последний раз редактировалось SoFuWa; 20.03.2009 в 18:33.
SoFuWa вне форума Ответить с цитированием
Старый 20.03.2009, 18:27   #19
lazy_tom_cat
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 18
По умолчанию

Ответы по порядку:

1.Функция Check пересчитывается так же как и стандартные функции Excel
2.По поводу ошибки, что конкретно пишет? Может быть дело в уровне безопасности? У тебя включен средний уровень? (Сервис\Макрос\Безопасность Уровень безопасности - Средняя)
VBA нужно использовать тогда, когда стандартные средства Excel бессильны....
lazy_tom_cat вне форума Ответить с цитированием
Старый 20.03.2009, 18:35   #20
SoFuWa
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 64
По умолчанию

Все ошибку больше не пишет, я незнаю почему писал, удалил, заного написал модуль, переоткрыл и все нормально, я сообщение исправил вопрос еще написал )) Спасибо шо помог )

в будущем придется вводить еще другие диапазоны, можно их добавить потом в функцию? Ну чтоб проверять не по 1 списку, а по двум например, и соответственно , для друго списка нужен будет другой символ не "X". Можешь тут написать или пример скинуть как добавить еще один диапазон?

Или это наверное чере Если реализуется типа =ЕСЛИ(check(L2;$P$2:$P$108);"х";" ") AND ЕСЛИ(check(L2;$P$2:$P$108);"AH";" ") ну типа такого как то щас попробовать надо как там пишится точно

Последний раз редактировалось SoFuWa; 20.03.2009 в 18:40.
SoFuWa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите со скриптом ZerokuL Помощь студентам 10 05.04.2008 11:07
Помогите разобраться со скриптом.... fclmhooligan JavaScript, Ajax 13 14.02.2008 22:36