Kontrola dwóch danych w jednej komórce

0

Pytanie

Muszę wykonać sprawdzanie poprawności danych, aby użytkownik nie wprowadzał nieprawdziwe informacje napływające do banku danych. Informacje w komórce musi być wypełniony dwoma kryteriami: pierwsza część-status pracownika, a druga informacja od razu po w tej samej komórce-kod kontraktu, nad którym pracuje. Jak mogę wykonać sprawdzanie poprawności danych za pomocą tych dwóch informacji, znajdujących się w dwóch różnych tabelach? Próbowałem coś takiego jak =I(z LEWEJ(K3:Q999;4)=S3:S13;po PRAWEJ stronie(K3:Q999;2)=S15:S49)

wprowadź opis zdjęcia tutaj

database datatable excel formula
2021-11-23 14:14:08
1

Najlepsza odpowiedź

-1

Wszystko zależy od tego, jak chcesz zastosować kontrolę.

Jeśli chcesz, aby był on w komórce z listy rozwijanej, to standardowa kontrola będzie działać tylko wtedy, gdy masz wszystkie możliwe kombinacje w swoim własnym zakresie, na przykład ...

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

Jeśli chcesz, zawsze możesz zrobić to za pomocą języka VBA. Należy jednak ostrzec, że to doprowadzi do unieważnienia stosu cofania i prawdopodobnie trzeba będzie modyfikować, aby upewnić się, że jest on odpowiedni dla wszystkich scenariuszy. Chociaż jest to bardzo dobra opcja.

Trzeba zmienić ten kod, aby zbliżył się do ciebie. To gołe kości i działa głównie sensie.

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

Aby to zadziałało, należy utworzyć nazwany zakres dla obu kolumn w tabelach wyszukiwania. Liczby (tj. 19, 33, 43, itp.) nazwałem "Zakres 1 i 4 znakowych słowa (na przykład, Exec, Folg, Disp, itp.). Nazwałem "Gama 2".

Do zakresu komórek, dla których chcesz wykonać test, ja nazwałem to "Zakres kontroli".

Umieść makro na arkusz z zakresu, który chcesz sprawdzić, i zobaczyć, jak to działa.

2021-11-23 23:24:43

Dziękuję!! Myślałem o czymś podobnym. Ja spróbuję. Jeszcze raz dziękuję!
Henrique Monteiro

@HenriqueMonteiro, u ciebie to zadziałało?
Skin

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................