Jak ograniczyć wpis w zakresie komórek, aby był numeryczny (cała #) maksymalna długość 9 znaków, bez zer wiodących i bez duplikatów?

0

Jak ograniczyć wpis w zakresie komórek, aby był numeryczny (cała #) maksymalna długość 9 znaków, bez zer wiodących i bez duplikatów?

Chcę także ograniczyć inny zakres komórek do maksymalnie 24 alfa i „-”

Elizabeth
źródło

Odpowiedzi:

2

Pierwszą część pytania można uzyskać dzięki walidacji danych i niestandardowemu formatowi. W tym celu najpierw zaznacz cały zakres do sprawdzenia, a następnie kliknij przycisk Sprawdzanie poprawności danych na wstążce Dane. Następnie, aby ustawić format niestandardowy, na karcie Ustawienia okna dialogowego Walidacja danych zmień listę rozwijaną Zezwalaj na „Własne” i wklej lub wpisz formułę, w tym wiodącą = w polu Formula:

=AND(A1 > 0, A1 < 1000000000, A1 = INT(A1), COUNTIF(A:A, A1) <= 1)
  • The AND formuła zwraca prawdę, jeśli wszystkie jej argumenty są prawdziwe.
  • A1 > 0 potwierdza, że ​​liczba jest dodatnia.
  • A1 < 1000000000 sprawdza, czy liczba ma długość co najwyżej 9 znaków.
  • A1 = INT(A1) sprawdza, czy liczba nie jest dziesiętna.
  • COUNTIF(A:A, A1) <= 1 sprawdza, czy zakres zawiera tylko 1 instancję liczby.

Nie ma potrzeby sprawdzania, czy nie ma zer wiodących, chyba że zakres jest sformatowany jako tekst, ponieważ program Excel automatycznie usuwa wszystkie początkowe zera z liczb.

Ta formuła zakłada, że ​​zakres docelowy to kolumna A. Zmień wszystkie wystąpienia A1 w formule do pierwszej komórki w zakresie docelowym i $A:$A do całego zakresu. Upewnij się, że używasz względnego formularza odniesienia, gdy odnosisz się do pierwszej komórki i bezwzględnego formularza odniesienia, gdy odnosi się do całego zakresu (tj. B1 dla pierwszej komórki i $B$1:$B$20 dla całego zakresu.)

Zalety sprawdzania poprawności danych polegają na tym, że nie ma potrzeby używania makr i można określić niestandardowy komunikat wejściowy i niestandardowy komunikat o błędzie bezpośrednio w oknie dialogowym Walidacja danych.

Druga część twojego pytania nie może być łatwo wykonana bez VBA. Jeśli pracujesz z tabelą i stosujesz sprawdzanie poprawności danych do kolumny, można to łatwo osiągnąć za pomocą ukrytej kolumny i funkcji niestandardowej podobnej do następującej:

Function LimitAlpha24(str As String) As Boolean
    Dim rx As Object
    Set rx = CreateObject("VBScript.RegExp")
    rx.Pattern = "^[A-Za-z-]{0,24}$"
    LimitAlpha24 = rx.Test(str)
End Function
Jason Clement
źródło
0

Umieść następujące makro zdarzenia w obszarze kodu arkusza:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, v As Variant, L As Long, i As Long
    Dim wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    Set A = Range("A1:A10")
    If Intersect(Target, A) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    v = Target.Text
    L = Len(v)

    If L > 9 Then
        MsgBox "input too long"
        GoTo errOut
    End If

    For i = 1 To L
        If Mid(v, i, 1) Like "[0-9]" Then
        Else
            MsgBox "bad character"
            GoTo errOut
        End If
    Next i

    If Left(v, 1) = "0" Then
        MsgBox "leading zero"
        GoTo errOut
    End If

    If wf.CountIf(A, v) > 1 Then
        MsgBox "duplicate value"
        GoTo errOut
    End If
    Application.EnableEvents = True
    Exit Sub

errOut:
    Target.Clear
    Target.Select
    Application.EnableEvents = True
End Sub

Zakładany zakres komórek to A1: A10

Ponieważ jest to kod arkusza roboczego, jest bardzo łatwy w instalacji i automatycznym użyciu:

  1. kliknij prawym przyciskiem myszy nazwę karty w dolnej części okna programu Excel
  2. wybierz Pokaż kod - powoduje to wyświetlenie okna VBE
  3. wklej rzeczy i zamknij okno VBE

Jeśli masz jakiekolwiek wątpliwości, najpierw spróbuj w arkuszu próbnym.

Jeśli zapiszesz skoroszyt, makro zostanie zapisane wraz z nim. Jeśli używasz wersji programu Excel później niż w 2003 r., Musisz ją zapisać plik jako .xlsm, a nie .xlsx

Aby usunąć makro:

  1. wywołaj okna VBE jak powyżej
  2. usuń kod
  3. zamknij okno VBE

Aby dowiedzieć się więcej o makrach w ogóle, zobacz:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

i

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Aby dowiedzieć się więcej o makrach zdarzeń (kod arkusza), zobacz:

http://www.mvps.org/dmcritchie/excel/event.htm

Makra muszą być włączone, aby działało!

Gary's Student
źródło