同一单元格中的两个数据验证



我需要为用户做一个数据验证。不要错误输入进入数据库的信息。单元格中的信息必须填写两个标准,第一部分是工人状态,同一单元格中紧接着的第二部分是他正在处理的合同代码。如何将这两个信息放在两个不同的表中进行数据验证?我尝试了类似=AND(LEFT(K3:Q999;4(=S3:S13;RIGHT(K3:Q999;2(=S15:S49(

在此处输入图像描述

这一切都取决于您希望如何应用验证。

如果你希望它在下拉框中的单元格中,那么只有当你在它自己的范围内有所有可能的组合时,标准验证才会起作用,例如…

19Exec
19Folg
19Disp
...
33Exec
33Folg
33Disp
... 
etc.

如果需要,您可以随时使用VBA来执行此操作。不过,需要注意的是,这将使撤消堆栈无效,并且可能需要进行改进,以确保它适合所有场景。不过,这在很大程度上是一种选择。

您需要更改此代码以适合您。它是赤裸裸的,在基本意义上是有效的。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngIntersect As Range, objCell As Range, strPrefix As String, strSuffix As String
Dim lngIndexSuffix As Long, lngIndexPrefix As Long

' Safety net, remove if you think this won't be a problem.
If Target.Cells.Count > 1000 Then Exit Sub

For Each objCell In Target
Set rngIntersect = Application.Intersect(objCell, Range("ValidationRange"))

If Not rngIntersect Is Nothing Then
If Len(objCell.Text) = 0 Then
' Only continue if the cell isn't empty.
Target.Interior.ColorIndex = -4142
Else
strSuffix = Right(objCell.Text, 4)
strPrefix = Mid(objCell.Text, 1, Len(objCell.Text) - Len(strSuffix))
Err.Clear

On Error Resume Next

lngIndexPrefix = WorksheetFunction.Match(CInt(strPrefix), Range("Range1"), 0)
lngIndexSuffix = WorksheetFunction.Match(strSuffix, Range("Range2"), 0)

If Err.Description <> "" Then
Target.Interior.Color = 255
Else
Target.Interior.ColorIndex = -4142
End If

On Error GoTo 0
End If
End If
Next
End Sub

要做到这一点,请在查找表中的两个键列上创建一个命名区域。我命名的数字(即19、33、43等(Range1";以及我命名的4个字符单词(例如Exec、Folg、Disp等(">范围2";。

对于要运行验证检查的单元格范围,我称之为">验证范围";。

将该宏放入具有要验证的范围的工作表中,看看它的运行情况。

相关内容

  • 没有找到相关文章

最新更新