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

  • Code Excel VBA pour transformer une ligne par un nombre variable de colonnes en lignes de longueur fixe
  • Insertion d'une image (jpg) dans une cellule dans Microsoft Excel 2007
  • Transformez plusieurs colonnes dans la table Excel en plusieurs lignes
  • Outlook: appliquer les règles au message actuel?
  • Comment empêchez-vous la corruption de fichiers Excel partagés?
  • Sucre Syntaxique VBA
  • Conversion de tous les liens texte simples vers des liens hypertexte
  • Comment réorganiser la base de données Excel à partir d'une longue rangée, en 3 lignes courtes et répéter automatiquement le processus?
  • Acces VBA code combinaison ne fonctionne pas, problème avec sortie sous?
  • Formule Excel pour comparer une valeur unique dans une cellule avec plusieurs valeurs dans une autre cellule
  • Puis-je exécuter cette macro plus rapidement?
  • Soyons le génie de l'ordinateur et du réseau.