2016-05-08 1 views

Répondre

1

En utilisation C1:

=IFERROR(AGGREGATE(15,6,(ROW($B$1:$B$10)-ROW($B$1)+1)/($B$1:$B$10<>0),ROWS($A$1:$A1)),"") 

Il retourne la liste des numéros de ligne où il n'y a pas de zéro en B pour la plage désignée. Recopiez-le. Il affichera "" quand il manquera de nombre à afficher.

Lors de l'utilisation de D2:

=IFERROR(INDEX($B$1:$B$10,C1),"") 

Il permet d'afficher la valeur correspondante de B au nombre de lignes inscrites dans la formule C. Copie vers le bas. Comme la première formule, l'IFERROR affichera "" quand il manquera de nombre à rechercher.

+0

C'est vraiment réconfortant de voir cette solution. Merci en profondeur. Plus loin dans la formule C1, puis-je remplacer G $ 9: G9 à la fin avec A $ 9: A9 ??? –

+0

oui, en fait, vous devriez le changer à $ A $ 1: A1, je vais modifier ma réponse pour refléter cela. ce morceau particulier de la formule est essentiellement un compteur qui augmente d'un rang chaque fois copié vers le bas. –

0

Formule C:

=IF($B1>0;A1;"") 

Formule D:

=IF($B1>0;B1;"") 

solution VBA:

Sub values() 

    linea = 1 

    For Each cell In Range("b1:b10") 

    If cell > 0 Then 
    Cells(linea, 3) = cell 
    Cells(linea, 4) = Cells(cell.Row, cell.Column - 1) 
    linea = linea + 1 
    End If 

Next cell 

End Sub 
+1

Votre méthode de formule affiche des espaces ou des lignes "" lorsque la valeur est zéro. Il ne fait rien pour compresser la liste selon l'exemple de sortie souhaité. –