Format de cellule personnalisé pour l'adresse IP afin de forcer les zéros au début?

4

J'ai une colonne d'adresses IP que je veux trier. Je ne veux pas utiliser des colonnes cachées comme cette réponse . Ce que je voudrais faire, c'est simplement formater les cellules pour qu'elles forcent les zéros non significatifs. Par exemple, si j'entre, 192.168.1.1cela se verra 192.168.001.001.

Je ne suis pas très bon avec les formats personnalisés, mais j'ai essayé ###.###.###.###sans succès .

Est-ce possible?

Scott Beeson
la source
1
Si vous ne souhaitez pas utiliser de colonnes auxiliaires, la seule option est vba pour le faire en place. Si vous voulez une colonne d'assistance, cela peut être fait en une formule, mais Excel est 192.168.1.1vu comme un texte et il ne pourra pas y mettre de masque.
Scott Craner
Les formats personnalisés n'affecteront pas les valeurs réelles des cellules, elles seront donc toujours triées de la même manière, même si quelqu'un peut trouver le format que vous recherchez
PeterH

Réponses:

4

Sélectionnez les cellules qui contiennent les adresses et exécutez cette courte macro:

Sub IPFixer()
    Dim r As Range, arr

    For Each r In Selection
        arr = Split(r.Value, ".")
        For i = 0 To 3
            arr(i) = Format(arr(i), "000")
        Next i
        r.Value = Join(arr, ".")
    Next r
End Sub

Avant:

entrez la description de l'image ici

et après:

entrez la description de l'image ici

EDIT # 1:

Disons que nous voulons que cette conversion à appliquer automatiquement les entrées dans la colonne A . Incluez la macro d'événement suivante dans la zone de code de la feuille de calcul:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range, rInt As Range
    Set rInt = Intersect(Range("A:A"), Target)
    If rInt Is Nothing Then Exit Sub
    Application.EnableEvents = False
        For Each r In rInt
                arr = Split(r.Value, ".")
                For i = 0 To 3
                    arr(i) = Format(arr(i), "000")
                Next i
                r.Value = Join(arr, ".")
        Next r
    Application.EnableEvents = True
End Sub

Comme il s’agit d’un code de feuille de travail, il est très facile à installer et à utiliser automatiquement:

  1. cliquez avec le bouton droit sur le nom de l'onglet situé au bas de la fenêtre Excel
  2. sélectionnez Afficher le code - une fenêtre VBE apparaît
  3. collez le contenu et fermez la fenêtre VBE

Si vous avez des inquiétudes, essayez d’abord sur une feuille de travail d’essai.

Si vous enregistrez le classeur, la macro sera enregistrée avec celui-ci. Si vous utilisez une version d'Excel ultérieure à 2003, vous devez enregistrer le fichier au format .xlsm au lieu de .xlsx.

Pour supprimer la macro:

  1. faire apparaître les fenêtres VBE comme ci-dessus
  2. effacer le code
  3. ferme la fenêtre VBE

Pour en savoir plus sur les macros en général, voir:

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

et

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

Pour en savoir plus sur les macros d'événements (code de feuille de calcul), voir:

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

Les macros doivent être activées pour que cela fonctionne!

Gary's Student
la source
Si cela incluait le code pour l'exécuter automatiquement sur tout changement de cellule dans la colonne spécifiée, ce serait une solution acceptable, à mon avis. Mais, dans l’état actuel des choses, toute personne qui saisit une nouvelle adresse IP de la feuille doit savoir comment l’exécuter.
Scott Beeson
1
@ScottBeeson See my EDIT # 1
Etudiant de Gary
Wow, vous êtes allé au-delà des attentes en matière de procédure pas à pas et d'informations sur les macros, merci!
Scott Beeson