Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/проверка по двум условиям при вводе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » проверка по двум условиям при вводе (Формулы/Formulas)
проверка по двум условиям при вводе
alex74 Дата: Понедельник, 02.10.2017, 23:30 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
добрый день, подскажите, пож-ста нубу.

есть реестр-ведомость, который заполняет девочка-оператор.
структура - Фио, Дата приказа, Рождение, Проживание, примечание

возникла необходимость чтобы невозможно было ввести новую строку если
а) Фио уже есть в таблице и
б) от текущей даты до Даты приказа прошло менее 3лет

спасибо
К сообщению приложен файл: 123.xls (21.5 Kb)


wbr Alex
 
Ответить
Сообщениедобрый день, подскажите, пож-ста нубу.

есть реестр-ведомость, который заполняет девочка-оператор.
структура - Фио, Дата приказа, Рождение, Проживание, примечание

возникла необходимость чтобы невозможно было ввести новую строку если
а) Фио уже есть в таблице и
б) от текущей даты до Даты приказа прошло менее 3лет

спасибо

Автор - alex74
Дата добавления - 02.10.2017 в 23:30
_Igor_61 Дата: Вторник, 03.10.2017, 08:00 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте! Проверьте - так подойдет?
К сообщению приложен файл: 9444456.xls (29.5 Kb)
 
Ответить
СообщениеЗдравствуйте! Проверьте - так подойдет?

Автор - _Igor_61
Дата добавления - 03.10.2017 в 08:00
alex74 Дата: Вторник, 03.10.2017, 10:38 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте! Проверьте - так подойдет?


я, вероятно, тормоз, но я вижу выше своей таблички-образца Вами добавленную таблицу с шестью столбцами, пробую там набирать, двойники вводятся, ничего не контролируется
как мне правильно проверить?
пробовал в 2007 и в 2003 Екселе.


wbr Alex
 
Ответить
Сообщение
Здравствуйте! Проверьте - так подойдет?


я, вероятно, тормоз, но я вижу выше своей таблички-образца Вами добавленную таблицу с шестью столбцами, пробую там набирать, двойники вводятся, ничего не контролируется
как мне правильно проверить?
пробовал в 2007 и в 2003 Екселе.

Автор - alex74
Дата добавления - 03.10.2017 в 10:38
_Igor_61 Дата: Вторник, 03.10.2017, 12:22 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Я ничего не добавлял, эта табличка была в Вашем файле-примере 123
Вводите данные в Вашу табличку. В скрытом столбце - формула для условий, к столбцам "фамилия" и "дата" применил проверку ввода. Но наверное макрос нужно делать - при ручном вводе срабатывает, а если копируешь и вставляешь - не срабатывает. А может у меня комп или я сам глючу :)
 
Ответить
СообщениеЯ ничего не добавлял, эта табличка была в Вашем файле-примере 123
Вводите данные в Вашу табличку. В скрытом столбце - формула для условий, к столбцам "фамилия" и "дата" применил проверку ввода. Но наверное макрос нужно делать - при ручном вводе срабатывает, а если копируешь и вставляешь - не срабатывает. А может у меня комп или я сам глючу :)

Автор - _Igor_61
Дата добавления - 03.10.2017 в 12:22
alex74 Дата: Вторник, 03.10.2017, 13:18 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Я ничего не добавлял, эта табличка была в Вашем файле-примере 123

посыпаю голову пеплом, слона то я и не заметил

Вводите данные в Вашу табличку.

добавляю новые строчки внизу или заполняю пустые в середине - эффекта не наблюдаю, те Фио-дубли вводятся независимо от Даты

Но наверное макрос нужно делать - при ручном вводе срабатывает,

в 1234 видно две записи, которые я добавил вручную, проверка не отработала -(
К сообщению приложен файл: 1234.xls (31.5 Kb)


wbr Alex
 
Ответить
Сообщение
Я ничего не добавлял, эта табличка была в Вашем файле-примере 123

посыпаю голову пеплом, слона то я и не заметил

Вводите данные в Вашу табличку.

добавляю новые строчки внизу или заполняю пустые в середине - эффекта не наблюдаю, те Фио-дубли вводятся независимо от Даты

Но наверное макрос нужно делать - при ручном вводе срабатывает,

в 1234 видно две записи, которые я добавил вручную, проверка не отработала -(

Автор - alex74
Дата добавления - 03.10.2017 в 13:18
_Igor_61 Дата: Вторник, 03.10.2017, 13:51 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Конечно, на них же нужно условия распространить :)
Протяните вниз желтый столбец, потом выделите какую-нибудь ячейку в диапазоне А3:А13, и посмотрите через меню "Данные" - "Проверка данных" что там написано, что за формула стоит, и так же в столбце "В". Вот это и нужно сначала распространить на ячейки ниже Вашей таблицы, а потом уже вводить данные.
А заполнить можно так: выделите например А10:В10 (т.е. то, где проверка уже установлена) и протяните вниз, и потом с помощью выделения и Del очистите то, что автоматически заполнилось.
И еще (из сообщения №7:
Цитата
наверное макрос нужно делать - при ручном вводе срабатывает, а если копируешь и вставляешь - не срабатывает. А может у меня комп или я сам глючу


Сообщение отредактировал _Igor_61 - Вторник, 03.10.2017, 13:57
 
Ответить
СообщениеКонечно, на них же нужно условия распространить :)
Протяните вниз желтый столбец, потом выделите какую-нибудь ячейку в диапазоне А3:А13, и посмотрите через меню "Данные" - "Проверка данных" что там написано, что за формула стоит, и так же в столбце "В". Вот это и нужно сначала распространить на ячейки ниже Вашей таблицы, а потом уже вводить данные.
А заполнить можно так: выделите например А10:В10 (т.е. то, где проверка уже установлена) и протяните вниз, и потом с помощью выделения и Del очистите то, что автоматически заполнилось.
И еще (из сообщения №7:
Цитата
наверное макрос нужно делать - при ручном вводе срабатывает, а если копируешь и вставляешь - не срабатывает. А может у меня комп или я сам глючу

Автор - _Igor_61
Дата добавления - 03.10.2017 в 13:51
alex74 Дата: Вторник, 03.10.2017, 13:58 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Конечно, на них же нужно условия распространить

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

спасибо что уделяете мне время, надеюсь теперь получится

докладываю: "ура! заработало!" (с)


wbr Alex

Сообщение отредактировал alex74 - Вторник, 03.10.2017, 14:45
 
Ответить
Сообщение
Конечно, на них же нужно условия распространить

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

спасибо что уделяете мне время, надеюсь теперь получится

докладываю: "ура! заработало!" (с)

Автор - alex74
Дата добавления - 03.10.2017 в 13:58
sboy Дата: Вторник, 03.10.2017, 14:15 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Если данные вносятся ручками, (а не копированием строк) то вот так будет работать
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
If Not IsDate(Target.Value) Then Exit Sub
    With Range("A3:A" & Target.Row - 1)
    Set fio = .Find(what:=Target.Offset(0, -1).Value)
        If Not fio Is Nothing Then
            fadr = fio.Address
                Do
                    flag = (Target.Value - fio.Offset(0, 1).Value) > 1095
                    Set fio = .FindNext(fio)
                Loop While Not fio Is Nothing And fio.Address <> fadr
            If flag Then
                Exit Sub
            Else
                Rows(Target.Row).ClearContents
            End If
        End If
    End With
End Sub
[/vba]
К сообщению приложен файл: 2404409.xls (37.0 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Если данные вносятся ручками, (а не копированием строк) то вот так будет работать
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
If Not IsDate(Target.Value) Then Exit Sub
    With Range("A3:A" & Target.Row - 1)
    Set fio = .Find(what:=Target.Offset(0, -1).Value)
        If Not fio Is Nothing Then
            fadr = fio.Address
                Do
                    flag = (Target.Value - fio.Offset(0, 1).Value) > 1095
                    Set fio = .FindNext(fio)
                Loop While Not fio Is Nothing And fio.Address <> fadr
            If flag Then
                Exit Sub
            Else
                Rows(Target.Row).ClearContents
            End If
        End If
    End With
End Sub
[/vba]

Автор - sboy
Дата добавления - 03.10.2017 в 14:15
alex74 Дата: Среда, 04.10.2017, 15:13 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Если данные вносятся ручками, (а не копированием строк) то вот так будет работать
Ваш вариант работает, ввести дубль не позволяет - дубльФио и невернаяДата просто исчезают, можно ли вставить сообщение об ошибке?
и у меня такой глупый вопрос: я открываю Ваш файл, но по Alt+F8 мне не видно вашего кода


wbr Alex

Сообщение отредактировал alex74 - Среда, 04.10.2017, 15:26
 
Ответить
Сообщение
Если данные вносятся ручками, (а не копированием строк) то вот так будет работать
Ваш вариант работает, ввести дубль не позволяет - дубльФио и невернаяДата просто исчезают, можно ли вставить сообщение об ошибке?
и у меня такой глупый вопрос: я открываю Ваш файл, но по Alt+F8 мне не видно вашего кода

Автор - alex74
Дата добавления - 04.10.2017 в 15:13
sboy Дата: Среда, 04.10.2017, 17:38 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
MsgBox допишите в этом куске
[vba]
Код
Else
                Rows(Target.Row).ClearContents
                MsgBox "Такой товарищ нам не нужен"
            End If
[/vba]
код в модуле листа


Яндекс: 410016850021169
 
Ответить
СообщениеMsgBox допишите в этом куске
[vba]
Код
Else
                Rows(Target.Row).ClearContents
                MsgBox "Такой товарищ нам не нужен"
            End If
[/vba]
код в модуле листа

Автор - sboy
Дата добавления - 04.10.2017 в 17:38
alex74 Дата: Среда, 18.10.2017, 16:23 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
добр день
застрял на ровном месте.
не понимаю почему оно то работает, то нет.
в аттаче красным - не работающая проверка, хотя строчкой ниже видно что другое фио проверяется правильно
К сообщению приложен файл: 0728905.xls (36.0 Kb)


wbr Alex
 
Ответить
Сообщениедобр день
застрял на ровном месте.
не понимаю почему оно то работает, то нет.
в аттаче красным - не работающая проверка, хотя строчкой ниже видно что другое фио проверяется правильно

Автор - alex74
Дата добавления - 18.10.2017 в 16:23
_Boroda_ Дата: Среда, 18.10.2017, 16:34 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
В макросе замените A3 на A2
[vba]
Код
With Range("A2:A" & Target.Row - 1)
[/vba]
К сообщению приложен файл: 0728905_1.xls (37.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВ макросе замените A3 на A2
[vba]
Код
With Range("A2:A" & Target.Row - 1)
[/vba]

Автор - _Boroda_
Дата добавления - 18.10.2017 в 16:34
sboy Дата: Среда, 18.10.2017, 16:41 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Косякнул с диапазоном
3 строка
[vba]
Код
    With Range("A2:A" & Target.Row - 1)
[/vba]


Яндекс: 410016850021169
 
Ответить
СообщениеКосякнул с диапазоном
3 строка
[vba]
Код
    With Range("A2:A" & Target.Row - 1)
[/vba]

Автор - sboy
Дата добавления - 18.10.2017 в 16:41
alex74 Дата: Среда, 18.10.2017, 16:58 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Косякнул с диапазоном

сенкс за оперативный ответ
а можно еще столбцы поменять местами? А-дата, В-фио (удобнее так вбивать)


wbr Alex
 
Ответить
Сообщение
Косякнул с диапазоном

сенкс за оперативный ответ
а можно еще столбцы поменять местами? А-дата, В-фио (удобнее так вбивать)

Автор - alex74
Дата добавления - 18.10.2017 в 16:58
sboy Дата: Среда, 18.10.2017, 17:08 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Проверяйте
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
If Not IsDate(Target.Offset(0, -1)) Then Exit Sub
    With Range("B2:B" & Target.Row - 1)
    Set fio = .Find(what:=Target.Value)
        If Not fio Is Nothing Then
            fadr = fio.Address
                Do
                    flag = (Target.Offset(0, -1).Value - fio.Offset(0, -1).Value) > 1825
                    Set fio = .FindNext(fio)
                Loop While Not fio Is Nothing And fio.Address <> fadr
            If flag Then
                Exit Sub
            Else
                Rows(Target.Row).ClearContents
                MsgBox "Такой товарищ нам не нужен!"
            End If
        End If
    End With
End Sub
[/vba]
К сообщению приложен файл: 5378843.xls (36.0 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеПроверяйте
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
If Not IsDate(Target.Offset(0, -1)) Then Exit Sub
    With Range("B2:B" & Target.Row - 1)
    Set fio = .Find(what:=Target.Value)
        If Not fio Is Nothing Then
            fadr = fio.Address
                Do
                    flag = (Target.Offset(0, -1).Value - fio.Offset(0, -1).Value) > 1825
                    Set fio = .FindNext(fio)
                Loop While Not fio Is Nothing And fio.Address <> fadr
            If flag Then
                Exit Sub
            Else
                Rows(Target.Row).ClearContents
                MsgBox "Такой товарищ нам не нужен!"
            End If
        End If
    End With
End Sub
[/vba]

Автор - sboy
Дата добавления - 18.10.2017 в 17:08
alex74 Дата: Четверг, 19.10.2017, 10:06 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Проверяйте
отлично! работает.
уже обнаружили лайфхак - если ввести дубликата с разницей более пяти лет), а потом в этой записи исправить дату на древнюю (уже нет 5лет разницы), то ругательства на недопустимость не будет. обьяснил чтобы так не делали.
а вот если в книге несколько листов, то макрос нужно привязывать (по Alt+F11) к книге или к конкретному листу где он должен проверять данные?


wbr Alex
 
Ответить
Сообщение
Проверяйте
отлично! работает.
уже обнаружили лайфхак - если ввести дубликата с разницей более пяти лет), а потом в этой записи исправить дату на древнюю (уже нет 5лет разницы), то ругательства на недопустимость не будет. обьяснил чтобы так не делали.
а вот если в книге несколько листов, то макрос нужно привязывать (по Alt+F11) к книге или к конкретному листу где он должен проверять данные?

Автор - alex74
Дата добавления - 19.10.2017 в 10:06
sboy Дата: Четверг, 19.10.2017, 10:13 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
уже обнаружили лайфхак

вот хулюганы! можем запретить изменение даты, если ФИО уже есть)
если в книге несколько листов

макрос работает на конкретном листе, при изменении значений в столбце В.
Можно прописать в каждый лист. Или сделать отдельным модулем, а в каждом листе прописать обращаться за проверкой.


Яндекс: 410016850021169
 
Ответить
Сообщение
уже обнаружили лайфхак

вот хулюганы! можем запретить изменение даты, если ФИО уже есть)
если в книге несколько листов

макрос работает на конкретном листе, при изменении значений в столбце В.
Можно прописать в каждый лист. Или сделать отдельным модулем, а в каждом листе прописать обращаться за проверкой.

Автор - sboy
Дата добавления - 19.10.2017 в 10:13
_Boroda_ Дата: Четверг, 19.10.2017, 10:22 | Сообщение № 18
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
уже обнаружили лайфхак

Чтобы ручки-то шаловливые не сували куда не нужно - вообще запрещаем даже выделять дату, если есть лоси с котами
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim d_ As Range, d0_ As Range
    Set d0_ = Intersect(Target, Range("A2").Resize(Rows.Count - 1))
    If d0_ Is Nothing Then Exit Sub
    For Each d_ In d0_
        If IsDate(d_) Then
            If d_.Offset(, 1) <> "" Then
                d_.Offset(, 1).Select
                Exit Sub
            End If
        End If
    Next d_
End Sub
[/vba]
К сообщению приложен файл: 5378843_1.xls (39.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
уже обнаружили лайфхак

Чтобы ручки-то шаловливые не сували куда не нужно - вообще запрещаем даже выделять дату, если есть лоси с котами
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim d_ As Range, d0_ As Range
    Set d0_ = Intersect(Target, Range("A2").Resize(Rows.Count - 1))
    If d0_ Is Nothing Then Exit Sub
    For Each d_ In d0_
        If IsDate(d_) Then
            If d_.Offset(, 1) <> "" Then
                d_.Offset(, 1).Select
                Exit Sub
            End If
        End If
    Next d_
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 19.10.2017 в 10:22
alex74 Дата: Четверг, 19.10.2017, 10:42 | Сообщение № 19
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Девушки такие девушки. Не знаю какой смайлик поставить -) или -(.

Проверка по дате им уже не поможет, тк нормально у них введены только 2016г и частично 15г, а более старые периоды в поле Дата занесены номера приказов, номера распоряжений и тп мусор вместо ДД.ММ.ГГГГ.

Слезно просят такое: после ввода Фио, вывести на экран найденные, уже существующие в таблице записи с этой Фио, далее девушки уже самостоятельно оценят нужно ли продолжить ввод или же отказаться.

Посыпаю голову пеплом и извиняюсь за неверно изначально сформулированный вопрос. Сорри.


wbr Alex

Сообщение отредактировал alex74 - Четверг, 19.10.2017, 11:58
 
Ответить
СообщениеДевушки такие девушки. Не знаю какой смайлик поставить -) или -(.

Проверка по дате им уже не поможет, тк нормально у них введены только 2016г и частично 15г, а более старые периоды в поле Дата занесены номера приказов, номера распоряжений и тп мусор вместо ДД.ММ.ГГГГ.

Слезно просят такое: после ввода Фио, вывести на экран найденные, уже существующие в таблице записи с этой Фио, далее девушки уже самостоятельно оценят нужно ли продолжить ввод или же отказаться.

Посыпаю голову пеплом и извиняюсь за неверно изначально сформулированный вопрос. Сорри.

Автор - alex74
Дата добавления - 19.10.2017 в 10:42
Мир MS Excel » Вопросы и решения » Вопросы по Excel » проверка по двум условиям при вводе (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!