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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2010, 06:55   #11
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Вашу задачу можно решить с помощью пользовательской функции:
Код:
Function CompRanges(rng1 As Range, rng2 As Range) As Boolean
    Dim i As Long: CompRanges = True: Application.Volatile
    For i = 1 To rng1.Count
        If rng1.Item(i) > rng2.Item(i) Then
            CompRanges = False: Exit Function
    End If: Next
End Function
Пример во вложении. Диапазоны сравниваемых столбцов, которые задаются в качестве аргументов функции, могут находиться на любых листах. Более того, эти диапазоны могут находиться в разных строках (например, "A1:A100" на листе "Лист1" и "B11:B110" на листе "Лист2").
Вложения
Тип файла: rar Книга1.rar (5.9 Кб, 26 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 21.09.2010, 21:21   #12
ZSV
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 27
По умолчанию

СПАСИБО ВАМ ОГРОМНОЕ!!!!! ВЫ МЕНЯ ОЧЕНЬ ВЫРУЧИЛИ!!!!!
ЭТО КАК РАЗ ТО ЧТО НУЖНО!! СПАСИБО
ZSV вне форума Ответить с цитированием
Старый 22.09.2010, 10:00   #13
ZSV
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Вашу задачу можно решить с помощью пользовательской функции:
Код:
Function CompRanges(rng1 As Range, rng2 As Range) As Boolean
    Dim i As Long: CompRanges = True: Application.Volatile
    For i = 1 To rng1.Count
        If rng1.Item(i) > rng2.Item(i) Then
            CompRanges = False: Exit Function
    End If: Next
End Function
Пример во вложении. Диапазоны сравниваемых столбцов, которые задаются в качестве аргументов функции, могут находиться на любых листах. Более того, эти диапазоны могут находиться в разных строках (например, "A1:A100" на листе "Лист1" и "B11:B110" на листе "Лист2").

Скажите пожалуйста, а если первый столбец находится на другом листе, то как будет выглядеть функция?
ZSV вне форума Ответить с цитированием
Старый 22.09.2010, 13:03   #14
ZSV
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от ZSV Посмотреть сообщение
Скажите пожалуйста, а если первый столбец находится на другом листе, то как будет выглядеть функция?
Сорри.... я не то спрашиваю....
тут маленькая корректировочка... я не учла кое-что...
например:
если:
1 1
2 2
3 3 - истина

1 1
2 1
3 3 - ложь
НО если:
1 1
2 0
3 3 - это тоже истина

Помогите плиз)
ZSV вне форума Ответить с цитированием
Старый 22.09.2010, 13:23   #15
DV68
Форумчанин
 
Регистрация: 05.08.2009
Сообщений: 465
По умолчанию

Формулой массива:
Код:
=И(ЕСЛИ(A3:A23=0;B3:B23;A3:A23)=ЕСЛИ(B3:B23=0;A3:A23;B3:B23))
правда пустые ячейки считаются тоже за 0.
Вложения
Тип файла: rar Проверк_а.rar (4.1 Кб, 9 просмотров)
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
DV68 вне форума Ответить с цитированием
Старый 22.09.2010, 13:24   #16
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Так если отличие больше, чем на 1, то это ИСТИНА?
Тогда так пробуйте:
If rng1.Item(i) = rng2.Item(i) +1 Then
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.09.2010, 14:22   #17
ZSV
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Так если отличие больше, чем на 1, то это ИСТИНА?
Тогда так пробуйте:
If rng1.Item(i) = rng2.Item(i) +1 Then
Попробовала.... так нельзя.... потому что какие бы не были значения результат всегда получается ИСТИНА(
ZSV вне форума Ответить с цитированием
Старый 22.09.2010, 14:28   #18
ZSV
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от DV68 Посмотреть сообщение
Формулой массива:
Код:
=И(ЕСЛИ(A3:A23=0;B3:B23;A3:A23)=ЕСЛИ(B3:B23=0;A3:A23;B3:B23))
правда пустые ячейки считаются тоже за 0.
Спасибо Вам большое! Так самое ТО ЧТО НАДО!!)

А все таки интересно было бы узнать как все это дело в Basic подкорректировать чтобы правильный результат получился)
ZSV вне форума Ответить с цитированием
Старый 22.09.2010, 15:11   #19
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Код:
Function CompRanges(rng1 As Range, rng2 As Range) As Boolean
    Dim i As Long: CompRanges = True: Application.Volatile
    For i = 1 To rng1.Count
    If rng2.Item(i) <> 0 And rng1.Item(i) <> 0 Then
        If rng1.Item(i) <> rng2.Item(i) Then CompRanges = False: Exit Function
    End If:    Next
End Function
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 22.09.2010 в 15:15. Причина: вернее так...
Hugo121 вне форума Ответить с цитированием
Старый 22.09.2010, 16:34   #20
ZSV
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от DV68 Посмотреть сообщение
Формулой массива:
Код:
=И(ЕСЛИ(A3:A23=0;B3:B23;A3:A23)=ЕСЛИ(B3:B23=0;A3:A23;B3:B23))
правда пустые ячейки считаются тоже за 0.
I'm sorry тут есть малькое НО, дело в том что попробывала я протестировать формулку в своей программе... и вот что выходит... выходит, что применима она не для всех случаев. В приложении я загружу далачку где я отметила заливкой ячейку, короче там ответ должен быть ИСТИНА а получается ЛОЖЬ
Посмотрите ПЛИЗ уж очень хочется разобраться с этой задачкой и знать разные варианты решений)
Вложения
Тип файла: rar Проверк_а2.rar (6.7 Кб, 11 просмотров)
ZSV вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан двухмерный массив из 20 столбцов. Вставить в него столбец из чисел 10 после всех четных столбцов. Дмитрий142 Помощь студентам 9 07.06.2012 19:32
Соответствие алгоритма и кода @Manya@ Общие вопросы C/C++ 0 08.05.2010 15:45
Проверить соответствие слов begin end..... RasKolnikoV Помощь студентам 3 13.05.2009 16:17
Access + ADO, проверка на соответствие (Login-Pass) nowmax БД в Delphi 5 23.02.2009 16:35
не соответствие типов amandra SQL, базы данных 6 30.06.2008 18:04