Проверка двух данных в одной ячейке

0

Вопрос

Мне нужно выполнить проверку данных, чтобы пользователь не вводил неверно информацию, поступающую в банк данных. Информация в ячейке должна быть заполнена двумя критериями: первая часть-статус работника, а вторая информация сразу после в той же ячейке-код контракта, над которым он работает. Как я могу выполнить проверку данных с помощью этих двух сведений, расположенных в двух разных таблицах? Я попробовал что-то вроде =И(СЛЕВА(K3:Q999;4)=S3:S13;СПРАВА(K3:Q999;2)=S15:S49)

введите описание изображения здесь

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

Лучший ответ

-1

Все зависит от того, как вы хотите применить проверку.

Если вы хотите, чтобы он был в ячейке в раскрывающемся списке, то стандартная проверка будет работать только в том случае, если у вас есть все возможные комбинации в своем собственном диапазоне, например ...

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 и т.д.) Я назвал "Диапазон 1" и 4 символьных слова (например, Exec, Folg, Disp и т. Д.). Я назвал "Диапазон 2".

Для диапазона ячеек, для которых вы хотите выполнить проверку, я назвал это "Диапазон проверки".

Поместите этот макрос на рабочий лист с диапазоном, который вы хотите проверить, и посмотрите, как это работает.

2021-11-23 23:24:43

Спасибо!! Я думал о чем-то подобном. Я попробую. Еще раз спасибо вам!
Henrique Monteiro

@HenriqueMonteiro, у тебя это сработало?
Skin

На других языках

Эта страница на других языках

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