VBA Macro pour trier et appliquer le formatage conditionnel à une gamme de cellules avec un nombre de lignes dynamiques

J'ai une gamme (l'image ci-dessous).

Capture d'écran d'Excel

Veuillez noter que:

  • La portée est générée par une autre application, donc le nombre de lignes change toujours et n'est pas formaté comme une table Excel '
  • Le nombre de colonnes, cependant, est corrigé.
  • Il y a toujours une ligne de Totals , qui est toujours la dernière ligne (les cellules au-delà de cela, cependant, contiennent une formule évaluant '')

Je veux de l'aide avec une macro VBA qui va trier la gamme à l'aide de l'en-tête D tant que clé (ascendante):

[Voir le lien vers le tableau trié ci-dessous]

Veuillez noter que:

  • La ligne Totals (qui est toujours la dernière ligne) doit être ignorée et non triée.

Après ce type, je veux que la même Macro VBA applique le formatage conditionnel à la plage en utilisant le même en-tête D que la touche – le formatage applique une bordure autour de la plage où D est identique:

Le tableau final est ici: http://goo.gl/H118Lx

Veuillez noter que:

  • Je ne veux pas de bordure autour de valeurs uniques dans l'en-tête D c'est-à-dire des lignes dans lesquelles le nombre de cellules-valeurs n'est pas supérieur à 1.

One Solution collect form web for “VBA Macro pour trier et appliquer le formatage conditionnel à une gamme de cellules avec un nombre de lignes dynamiques”

Vous n'avez pas besoin de VBA du tout. Vous avez juste besoin d'une meilleure compréhension de la souplesse derrière les formats conditionnels. Pour cette raison, je vais répondre à la question, même si elle est mauvaise.

Vous pouvez trier par colonne D tel qu'il est et la ligne des totaux sera en bas si c'est le seul avec un blanc. Appliquez vos formats conditionnels sur toute la colonne comme indiqué ci-dessous.

Format: bordures à gauche
Gamme: A:A
Formule: =AND($D1<>"",OR($D1=OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0)))

Format: bordure à droite
Gamme: E:E
Formule: =AND($D1<>"",OR($D1=OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0)))

Format: bordures en haut
Gamme: A:E
Formule: =AND($D1<>"",$D1<>OFFSET($D1,-1,0),$D1=OFFSET($D1,1,0))

Format: bordures en bas
Gamme: A:E
Formule: =AND($D1<>"",$D1=OFFSET($D1,-1,0),$D1<>OFFSET($D1,1,0))


Cette méthode va transformer cette fiche:

Avant

… dans cette fiche:

Après

  • Dans Excel 2013, où sont Visual Basic (VBA), Macros et les outils AddIn?
  • Puis-je exécuter une fonction VBA chaque fois que calculs Excel, même si je ne clique pas sur F9?
  • Lors de l'utilisation de plusieurs comptes, comment garantir que les courriels sont envoyés à partir du bon compte
  • Comment transposer les données en colonnes en lignes?
  • Extraire les données d'un fichier Excel défini
  • Excel vba: copier des lignes si les données correspondent aux valeurs en colonne dans une autre feuille
  • Sélection de la date de chaque lundi et mercredi à partir d'une date
  • Une manière intelligente de connecter plusieurs images à la macro en-clic - VAB Excel
  • Puis-je exécuter cette macro plus rapidement?
  • Comment puis-je utiliser Excel 2010 Personal Macro Workbook?
  • Comment stocker des Macros VBA pour Office 2007 pour les avoir toujours disponibles et les partager avec d'autres?
  • Soyons le génie de l'ordinateur et du réseau.