EXCEL根据某列的单元格内容,判断另外一列内容

有一个excel表B列中只要有填写内容为“SO04”的,P列对应的单元格就必填,并且必须包含“ZYC”字符串,这个怎么实现?
就是业务流程列,只要是填写的SO04,在仓库那一列中就必须是zyc开头的。
这个表不一定是填写,内容可能是从别的地方复制过来的。
我是想他们复制过来填写完后,保存的时候对上述条件进行检查,如果有不满足条件的行,就无法进行保存。
应该是需要vba来实现的,主要是需要保存的时候检查。

数字有效性吧 

有效性中的公式 ,谢谢楼上的指正,修改下

=IF(B1="S004",AND($B1="S004",ISNUMBER(FIND("ZYC",$P1))),TRUE)


追问

数据有效性我必须要一行一行的定义,格式刷都没用啊

追答

不是,可以直接复制,或者采取选择p1:p1000这样的方式,但注意的是,公式的单元格应和你开始选择的单元格一致。。多试几次吧。不难的


如果是保存进来的,需要用代码来做。对保存前对该表进行检查。。

参考

表1改为你的实际表名

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim arr, r&
With Worksheets("表1")
arr = .Range("a1:p" & .Range("b" & .Rows.Count).End(3).Row)
End With
For r = 1 To UBound(arr)
If LCase(arr(r, 2)) = "s004" And len(arr(r,16))>0 and LCase(Left(arr(r, 16), 3)) <> "zyc" Then
   MsgBox Sheets("表1").Name & "第" & r & "行不符合规则,不能保存", 48, "提示框"
   Cancel = true
   Exit Sub
End If
Next r
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-10
选择P列 数据 有效性
设置 选择 自定义
公式
=AND(B1="SO04",ISNUMBER(FIND("ZYC",P1)))

=AND(ISNUMBER(FIND("SO04",B1)),ISNUMBER(FIND("ZYC",P1)))
确定
第2个回答  2013-07-10
假设你包含SO04的列在A列。
选中B1,点“数据”选项卡上面的“数据有效性”,“允许”选中“自定义”,“公式”填:
=OR(ISERROR(FIND("SO04",A2)),AND(NOT(ISERROR(FIND("SO04",A2))),NOT(ISERROR(FIND("ZYC",B2)))))

同一个对话框上面”出错警告“里面填”必须包含ZYC“。

然后B列向下填充格式即可。

P.S. 青水蛙鸣的公式是错的。
第3个回答  2013-07-10
在p列中输入“=IF(B2="SO04","ZYC","")”,其他的应该不用一一说明了吧
第4个回答  2013-07-10
不太明白你的意思,不知道这样可否解决你的问题:
在P列单元格(如P5,对应B列为B5)中填写=IF(B5="SO04","ZYC"&您还要显示的内容,其他您需要显示的内容)追问

如果B5的内容是SO04,那么就要判断P5是否为空,不为空的话判断是否包含ZYC字符串,都满足的话可以保存,有一个不满足就无法保存。

第5个回答  2013-07-10
楼上的回答很全面
相似回答