2017-04-06 1 views
0

J'essaie donc de trouver un moyen de faire le tour suivant en utilisant VBA:VBA sur Excel pour supprimer les cellules sans cellules de couleur et voisin

En supposant que nous avons eu un énorme fichier Excel.

C500 a du texte. M500 a une valeur et il peut soit avoir un remplissage de couleur, soit être simplement une cellule blanche par défaut avec un nombre. Ce que je veux réaliser, c'est de supprimer C500 et M500 quand M500 n'a pas de remplissage de couleur.

Je sais que c'est une tâche simple, au moins ça ressemble à ça et je sais que ça peut probablement être résolu par quelques lignes de code. Je n'arrive toujours pas à trouver ce dont j'ai besoin sur Google ou le débordement de pile en le recherchant, probablement à cause de mes faibles compétences de recherche ou parce que ce que je veux faire est très spécifique.

Toute aide sera grandement appréciée et j'adorerai voir des sites Web de macro similaires que je peux utiliser comme référence. Désolé si cette question a déjà répondu.

+1

Macro qui supprime une cellule en fonction de la couleur de remplissage? – Alfabravo

+0

Oui, en effet, c'est le problème majeur que j'ai eu. –

+0

Mais! Je veux qu'il supprime disons M500 et C500 en même temps, selon la couleur M500 –

Répondre

1

Je suis en train de réécrire cette réponse car l'exigence doit parcourir toute condition de format définie pour chaque cellule de la plage ainsi que d'autres valeurs de cellule. Une méthode soignée pourrait être trouvée, par exemple, here. Fondamentalement, il se compose de:

For X = 1 To Cell.FormatConditions.Count 
    With Cell.FormatConditions(X) 
     If .Type = xlCellValue Then 
     ... 
     If CellInterior Then 
      DisplayedColor = IIf(ReturnColorIndex, Cell.Interior.ColorIndex, Cell.Interior.Color) 
     Else 
      DisplayedColor = IIf(ReturnColorIndex, Cell.Font.ColorIndex, Cell.Font.Color) 

Qui explore la cellule pour différentes façons de définir la couleur de remplissage.

Vous devez donc parcourir la gamme

Dim rng As Range, cell As Range 
Set rng = Range("M500:M550") 
For Each cell In rng 
    rem check the filling with the method in the link 
    rem if it's the colorindex you want 
    rem cell.Value = '' 
    rem Also, get the row number and delete content of range ("C5XX") 
Next cell 
+0

D'accord, merci beaucoup. Pouvez-vous commenter cela (documenter) un peu pour que je puisse le comprendre un peu mieux? (Parce que je vais l'utiliser beaucoup je suppose) plus précisément je voudrais savoir ce que Item (1) se réfère à. Ce que je veux est de vérifier la colonne M pour les valeurs, 500 à 550 par exemple qui contiennent la couleur d'arrière-plan et si elles ne les suppriment pas et toutes les données dans C500 C500 par exemple. Comment puis-je faire cela en utilisant cette commande? –

+0

Merci beaucoup! –