Ho bisogno di fare una convalida dei dati per l'utente non misstype le informazioni che va alla banca dati. Le informazioni in cella deve essere riempito con due criteri, la prima parte è l'operaio di stato, e la seconda informazione subito dopo nella stessa cella è de contratto di codice che sta lavorando su. Come posso fare una convalida dati con queste due informazioni disposte in due diverse tabelle? Ho provato qualcosa di simile =E(a SINISTRA(K3:Q999;4)=S3:S13;a DESTRA(K3:Q999;2)=S15:S49)
Tutto dipende da come si desidera applicare la convalida.
Se si desidera essere nella cella in un elenco a discesa, quindi standard di validazione funziona solo se si dispone di ogni combinazione possibile nella propria gamma, ad esempio ...
19Exec
19Folg
19Disp
...
33Exec
33Folg
33Disp
...
etc.
Se si desidera, è sempre possibile farlo utilizzando VBA. Una parola di cautela, però, questo non invalida la stack di annullamento e sarà probabilmente bisogno di essere perfezionati per garantire adatto per tutti gli scenari. È molto di più, un'opzione se.
È necessario modificare il codice per voi. Si tratta di ossa nude e lavora in un senso fondamentale.
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
Per fare questo lavoro, creare un intervallo denominato su entrambe le colonne chiave nelle vostre tabelle di ricerca. I numeri (cioè, 19, 33, 43, etc.) Ho denominato "Misura1" e il 4 personaggio di parole (ad esempio, Exec, Folg, Disp, etc.) Ho denominato "Intervallo2".
Per l'intervallo di celle che si desidera eseguire il controllo di convalida, ho chiamato il "ValidationRange".
Lanciare la macro nel foglio di lavoro che è l'intervallo che si desidera convalidare e vedere come va.