2017-09-27 4 views
0

J'ai une formule Excel qui renvoie correctement true. Mais quand j'ai utilisé la même formule au format conditionnel, je ne suis pas capable d'obtenir le format conditionnel. S'il vous plaît aider.Formule Excel vs Formule utilisée au format conditionnel

=AND(FIND("MyText",INDIRECT(ADDRESS(1,COLUMN()))),INDIRECT(ADDRESS(ROW()+2,COLUMN()))=1) 

Si la première cellule de la colonne est « Mon texte » et la valeur est 1 (dans la ligne 2, même colonne) la formule renvoie correctement vrai. Si je l'ai utilisé dans un format conditionnel pour peindre une couleur de fond, cela ne fonctionne pas. J'ai aussi essayé la recherche et la recherche. Mais n'a pas fonctionné. Le format de la cellule (row() +2, colonne) qui peut avoir la valeur 1 est "General"

Répondre

0

J'ai modifié le AND en suivant et cela a fonctionné. Mais ne sais pas quel est le problème avec ET en format conditionnel

= NON (ESTERREUR (SEARCH ("MonTexte", INDIRECT (ADRESSE (1, colonne()))))) * INDIRECT (ADRESSE (ROW() + 2, COLUMN()))

Ajouté la réponse ci-dessus à titre de référence.

1

Si vous passez à R1C1 reference style, vous pouvez entrer dans la formule =AND(R1C="MyText", R[2]C=1)

R1 signifie la ligne 1, C signifie même colonne, et R[2] 2 rangées en dessous de la cellule courante.

Dans A1 style de référence, la formule dépendra de la cellule active, donc si par exemple la cellule active est A1, la formule sera =AND(A$1="MyText", A3=1)

+0

Merci. Malheureusement, je génère mon fichier Excel par programme et j'ai dû utiliser l'adresse (row(), column()). Mais le vôtre est toujours une solution valable pour les excels créés manuellement. – NSN

+0

@NSN cela ne fait aucune différence (sauf si vous utilisez Excel non anglais https://stackoverflow.com/questions/23649293/excel-vba-use-localized-rc-formula-for-conditional-formatting). Les fonctions volatiles comme INDIRECT sont inefficaces, car elles doivent être recalculées beaucoup plus que nécessaire https://msdn.microsoft.com/en-us/library/office/bb687891#sectionSection2. Vous pouvez utiliser par exemple 'INDEX (1: 1, 1, COLUMN())' au lieu de 'INDIRECT (ADDRESS (1, COLUMN()))' – Slai

1

Je ne sais pas pourquoi cela ne fonctionnerait pas. Mais vous pouvez simplement remplacer la fonction AND par *. Voici ce que vous pouvez essayer:

=FIND("MyText",INDIRECT(ADDRESS(1,COLUMN())))*INDIRECT(ADDRESS(ROW()+2,COLUMN()))=1 
+0

J'ai juste révisé ma formule pour la raccourcir. – ian0411