
excel中,怎样设置:如果A列为空则B列不能输入内容,如果A列不为空则B列可以输入预设的内容。
比如:A1为空,则B1不许输入;A1不为空,则B1可输入“男”、“女”,而不能输入其它内容。反复试验了,公式确实没错,也取消了“忽略空值”,但是只对键盘输入和鼠标双击再右...
比如:A1为空,则B1不许输入;A1不为空,则B1可输入“男”、“女”,而不能输入其它内容。
反复试验了,公式确实没错,也取消了“忽略空值”,但是只对键盘输入和鼠标双击再右键粘贴的方式有效,而对下拉填充、Ctrl+V填充和直接鼠标右键单击粘贴都不起作用。
比如:在B列均设置为=(A1<>"")*or(B1="男",B1="女")数据有效性时,
1、A列空时,B列可以通过Ctrl+V填充和直接鼠标右键单击粘贴方式输入“李四”等任何字符,而且输入以后再查看B列的数据有效性没变,还是自定义;
2、A1不为空时,B1可以键盘输入“男”,这时A2为空,而B2可以通过B1下拉方式输入“男”,同样再查看B2的数据有效性没变,还是自定义。
平时工作时,多数情况下使用下拉和粘贴方式输入,这数据有效性就失去控制意义了。
这是Excel的刻意设计,还是一个bug,还是我没理解数据有效性的含义呢?
希望各位再给出解答,我的分数很多,可以再追加悬赏。谢谢! 展开
反复试验了,公式确实没错,也取消了“忽略空值”,但是只对键盘输入和鼠标双击再右键粘贴的方式有效,而对下拉填充、Ctrl+V填充和直接鼠标右键单击粘贴都不起作用。
比如:在B列均设置为=(A1<>"")*or(B1="男",B1="女")数据有效性时,
1、A列空时,B列可以通过Ctrl+V填充和直接鼠标右键单击粘贴方式输入“李四”等任何字符,而且输入以后再查看B列的数据有效性没变,还是自定义;
2、A1不为空时,B1可以键盘输入“男”,这时A2为空,而B2可以通过B1下拉方式输入“男”,同样再查看B2的数据有效性没变,还是自定义。
平时工作时,多数情况下使用下拉和粘贴方式输入,这数据有效性就失去控制意义了。
这是Excel的刻意设计,还是一个bug,还是我没理解数据有效性的含义呢?
希望各位再给出解答,我的分数很多,可以再追加悬赏。谢谢! 展开
2011-12-18
展开全部
VBA可以实现,在工作表名处鼠标右键“查看代码中”,找到当前需要限制输入的工作表名,并在其上鼠标右键“查看代码中”,在右边的空白框中复制并粘贴如下事件的代码即可:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo err
Application.EnableEvents = False
If Target.Column = 2 Then '如果当前编辑的为B列
'判断对应的A列是否有内容
If Range("A" & Target.Row).Value = "" Then '对应的A列为空
Range("B" & Target.Row).Value = "" '将当前输入内容变为空,并提示如下内容
MsgBox "请先输入A" & Target.Row & "单元格内容。"
Else
'判断B列内容
If Range("B" & Target.Row).Value <> "男" And Range("B" & Target.Row).Value <> "女" Then
MsgBox "B列只能输入别""男""或""女""。"
End If
End If
End If
Application.EnableEvents = True
Exit Sub
err:
Application.EnableEvents = True
MsgBox err.Description
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo err
Application.EnableEvents = False
If Target.Column = 2 Then '如果当前编辑的为B列
'判断对应的A列是否有内容
If Range("A" & Target.Row).Value = "" Then '对应的A列为空
Range("B" & Target.Row).Value = "" '将当前输入内容变为空,并提示如下内容
MsgBox "请先输入A" & Target.Row & "单元格内容。"
Else
'判断B列内容
If Range("B" & Target.Row).Value <> "男" And Range("B" & Target.Row).Value <> "女" Then
MsgBox "B列只能输入别""男""或""女""。"
End If
End If
End If
Application.EnableEvents = True
Exit Sub
err:
Application.EnableEvents = True
MsgBox err.Description
End Sub
展开全部
选中B1,数据,有效性,自定义,下面公式框中输入
=(A1<>"")*or(B1="男",B1="女")
确定,试试看。
=(A1<>"")*or(B1="男",B1="女")
确定,试试看。
追问
谢谢回答,可试验后,无论A1中是否为空,B1中均可输入任何值,没有起到限制作用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
=(A1<>"")*OR(B1="男",B1="女")
应该没问题你看设置有效性的时候上面有个忽略空值的勾不要勾上
应该没问题你看设置有效性的时候上面有个忽略空值的勾不要勾上
追问
去掉忽略控制后真的好使了。
可我发现,在C1应用这个数据有效性时,把“男”换成特殊符号“√”时,忽略空值去掉也不行,不知为什么?
而且应用自定义数据有效性后,没有了下拉箭头,不能直接选“男”“女”和“√”了。我提问时没考虑到,最好能有下拉箭头,这样便于输入。
追答
=(A1"")*OR(B1="男",B1="女",B1="√")
箭头要选择序列才可以的 要不你有效性直接用序列吧 里面输入 男,女,√ 就是不能在A列空的时候限制输入 或者帮你写个小代码 可以不?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
无论A1中是否为空,B1中均可输入任何值,没有起到限制作用
兄弟,设置有效性的时候,你把忽略人值点掉
兄弟,设置有效性的时候,你把忽略人值点掉
追问
去掉忽略控制后真的好使了。
可我发现,在C1应用这个数据有效性时,把“男”换成特殊符号“√”时,忽略空值去掉也不行,不知为什么?
而且应用自定义数据有效性后,没有了下拉箭头,不能直接选“男”“女”和“√”了。我提问时没考虑到,最好能有下拉箭头,这样便于输入。
追答
在设置有效性的时候
允许里选择“序列” 会出现提供下拉选择勾选框
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询