Страницы: 1
RSS
Проверка данных - запрет на выполнение формулы по условию из другой ячейки
 
Здравствуйте!

Пример во вложении.
Есть проверка данных, чтобы нельзя было ввести в столбец "Кол-во" число, не кратное столбцу "Кратность" (также настроено отображение описания ошибки). При этом хотелось бы, чтобы дополнительно нельзя было вводить в столбец "Кол-во" любое значение, если в столбце "Наличие" было "нет".
Пытался сделать проверку данных по столбцу "Сумма", чтобы там была ошибка при вводе если в Наличии "нет", но работает только если вручную ввести в столбец "Сумма" число, тогда как если ввести в столбец "Кол-во" число, формула в столбце "Сумма" все равно считается.
Возможно это решается двойной проверкой данных по столбцу "Кол-во" (по Кратности и Наличию, при этом чтобы выводились разные тексты ошибок), но я такого решения не нашел.

Если кто-то может подсказать, было бы здорово. Макросы не предлагать, к сожалению.
 
Я бы делал через условное форматирование (просто помечал там, где ошибка). Во втором столбце доделал через проверку данных (сообщение не менял).
Обратите внимание, что нужно ещё сделать проверку данных на столбец "Наличие", чтобы туда нельзя было написать "Неет", "нэт", "не будет", "закончилось" и т.д.

UPD Добавил 3-й вариант - в графе стоимость 0, если в "Наличие" стоит "нет"
Изменено: Wiss - 12.11.2019 11:46:44
Я не волшебник, я только учусь.
 
Цитата
если в столбце "Наличие" было "нет"
Вариант.
Код
=И(ОСТАТ(D3;C3)=0;B3<>"нет")
=И(ОСТАТ(D3;C3)=0;B3="есть")

Для столбца стоимость

Код
=ЕСЛИ(B2="есть";D2*E2;0)

Или я не так понял?
Изменено: gling - 12.11.2019 11:57:10
 
Цитата
Wiss написал:
Обратите внимание, что нужно ещё сделать проверку
последовательности ввода данных. Если сначала внести число в столбец "Кол-во", а потом написать "нет" в столбце "Наличие", Ошибку не отследить. То же самое с кратностью. Предлагаю сделать по-другому. Менять формат ячейки на ";;;" с пом. УФ в столбце "Кол-во" при значении "нет" в столбце "Наличие". А в столбце "Стоимость" делать проверку значения в столбце "Наличие".
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев, супер. Заметно, что это 2 222 сообщение.
Я не волшебник, я только учусь.
 
Спасибо всем за предоставленные варианты, но это все-таки не то, что мне надо.

Идея ставить сумму 0 в столбце "Стоимость", если Наличие "нет" уже реализована в основной таблице, но заполняющий не всегда может обратить на это внимание (такая специфика заполняющих). УФ не подходит, так как по опыту выяснилось, что не все его видят (были прецеденты).

Поэтому хотелось, чтобы возникала именно ошибка, когда формула в столбце "Стоимость" дает какое-нибудь число, если ввести значение в "Кол-во" при Наличии "нет".
Если я правильно понимаю, таких вариантов нет?
Немного изменил формулу "Стоимость", чтобы в столбце было пусто, когда в "Кол-во" тоже пусто.
 
=ЕСЛИ(И(ЕСЛИ(D2<>"";D2*E2;"")<>"";B2="нет");1/0;ЕСЛИ(D2<>"";D2*E2;""))
 
Ошибка не в ячейке столбца "Стоимость", а выводимая при проверке данных столбца "Стоимость". Писал об этом в описании задачи в первом сообщении, но не уточнил в последнем сообщении, извините.
 
=И(ОСТАТ(D2;C2)=0;B2="есть")
в проверку данных в столбец D.
 
Да, такой вариант есть, но он не подходит, так как заполняющему должно выводиться сообщение, что именно он сделал не так. А в этом случае придется писать "Проверьте кратность или наличие".
Искомое решение задачи - это выводить сообщение "Проверьте кратность", если заполняющий вводит некратное "Кол-во", и сообщение "Нет в наличии", если заполняющий вводит Кол-во в строке, где Наличие "нет".
 
Цитата
Сергей Овчаров написал:
Макросы не предлагать
Если без макросов, то можно сделать некрасиво, но в соответствии с требованиями.
Сделать два столбца с количеством. С разными проверками данных. В одном проверять кратность. В другом проверять количество. И выводить разные предупреждения.
На мой взгляд, макросом лучше.
 
Такой вариант не подойдет, конечно. В любом случае спасибо! Видимо такую задачу можно решить только макросом.
 
Если захотите макросом, вставьте код в модуль листа.
Проверяет наличие. Проверка кратности выполняется через проверку данных.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("D:D")) Is Nothing Then
        Dim r As Range
        On Error Resume Next
            Set r = Intersect(Target, Columns("D:D").SpecialCells(xlCellTypeConstants))
        On Error GoTo 0
        If Not r Is Nothing Then
            Dim c As Range
            For Each c In r
                If IsNumeric(c) Then
                    If c.Value > 0 Then
                        If Cells(c.Row, 2) = "нет" Then
                            c.Select
                            c.ClearContents
                            MsgBox "Лошара, товара нет в наличии!", vbCritical
                        End If
                    End If
                End If
            Next
        End If
    End If
End Sub
 
Цитата
Сергей Овчаров написал:
Ошибка не в ячейке столбца "Стоимость", а выводимая при проверке данных столбца "Стоимость".
Вы это чё это написали?  :cry:
Если Вам нужна ошибка не в яч. столбца Стоимость, то при какой проверке и куда выводимая должна быть ошибка?
Цитата
Сергей Овчаров написал:
Немного изменил формулу "Стоимость", чтобы в столбце было пусто, когда в "Кол-во" тоже пусто.
У вас и так будет 0 при "Пусто" в "Кол-во". Чем он хуже, чем "Пусто"?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
Михаил Лебедев написал:
Цитата Сергей Овчаров  написал:Ошибка не в ячейке столбца "Стоимость", а выводимая при проверке данных столбца "Стоимость". Вы это чё это написали?  
Это относилось к сообщению другого пользователя, мы с ним друг друга поняли.

К сожалению, как писал выше, мне не подходит ни один из предложенных ни Вами, ни другими, вариантов.
В таблице есть проверка данных по столбцу "Кол-во", которая выводит сообщение об ошибке при вводе не кратного количества товара. Была идея сделать дополнительную проверку данных, которая бы выводила сообщение об отсутствии товара в наличии, если заполняющий вводит значение в столбец "Кол-во" при Наличии "нет".

Судя по всему такого решения не существует без помощи макросов.
Страницы: 1
Наверх