J'ai des données dans le modèle suivant: p>
Je veux une formule pour obtenir les données entre le début du contenu et la fin du contenu. La quantité de contenu entre le début et l'extrémité n'est pas simplement limitée à 4 et peut changer. P>
3 Réponses :
With Worksheets("Your Sheet").Range("A:A") Set c = .Find("Content Start", LookIn:=xlValues) Set d = .Find("Content End", LookIn:=xlValues) ActiveSheet.Range(Cells(c.Row + 1, c.Column), Cells(d.Row - 1, c.Column)).Select End With
Que cherchez-vous de faire avec les données? Ajouter, sélectionner, copier, multiplier, déplacer?
Dessiner une étincelle
Probablement plusieurs façons de faire cela, mais si vous préférez le faire sans VBA, vous pouvez utiliser:
formule utilisée dans remarque C'est une formule de matrice entrée via Ctrl kbd> shift kbd> Entrez kbd> p> glisser vers le bas .... p> p> B1 CODE> (all un peu long): p>
Quelle est l'utilisation de la ligne (A3) à la fin de la formule? Le contenu commence peut être dans n'importe quelle ligne
Parce que j'utilise petit, nous devons dire à la fonction d'obtenir la nième valeur la plus petite. Nous calculons la nième en résumé toutes les lignes plus petites ou plus grandes que les lignes avec début et fin. Nous avons besoin de cette quantité de lignes + trois rangées de plus (donc rangée (A3)) car nous devons également prendre en compte les deux lignes avec début et fin. Si vous évaluez la formule à travers Excel, cela commencera à devenir clair.
Vous ne dites pas ce que vous voulez faire avec ce résultat.
Je suppose que vous pouvez coder la colonne dans laquelle vos données sont situées. P>
La formule ci-dessous renvoie ces valeurs un tableau. par exemple. Avec vos données, la formule retournera Les valeurs peuvent être numériques ou texte. P> Comment tu veux Gérer ces valeurs est à vous. P> {1; 2; 3; 4} code> p>
=INDEX($A:$A,N(IF(1,ROW(INDEX($A:$A,MATCH("Content Start",$A:$A,0)+1,1):INDEX($A:$A,MATCH("Content End",$A:$A,0)-1,1)))))
Je veux dessiner un étincelle avec les données
@ user5155835 Il suffit de sortir les données dans une plage de cellules, à l'aide de la fonction Index Code> autour de la formule I vous a donné pour sélectionner chaque point de données individuellement ou en entrant la formule sous forme de tableau sur une gamme de cellules au moins grandes suffisamment grandes pour englober la sortie. Si vous utilisez la fonction
index code>, enveloppez-la dans un
ifError code> de manière à produire
#na () code> si vous l'avez trop grande . L'utilisation de la méthode de formule Array fera cela automatiquement, mais si vous souhaitez émettre le tableau dans un vecteur horizontal, vous devez
transpose code>
Si le contenu a un grand nombre d'éléments tels que 500?
@ user5155835 Quel était le problème quand vous l'avez essayé?
Je reçois la gamme de données. Juste le problème est que j'ai 500 éléments. Donc, je dois sélectionner toutes les 500 cellules où je souhaite obtenir les données, puis entrer la formule?
@ user5155835 Vous pouvez le faire, ou vous pouvez utiliser la fonction index code> (enroulée autour de la formule donnée) pour extraire chaque élément individuellement. Avec plus de 500 éléments, je serais tenté d'utiliser cette méthode au lieu d'essayer de sélectionner plus de 500 cellules à entrer une formule de matrice.
Vous voulez dire entrer dans la formule d'index 500 fois?
@ user5155835 Vous pourrait I> le faire de cette façon mais ne devrait pas. Utilisez une fonction pour la ligne ou le champ de colonne qui augmenterait lorsque vous remplissez la formule à droite ou à la baisse, par ex. quelque chose comme lignes ($ 1: 1) code> ou
columms ($ A: a) code>
@ user5155835 = index (Formula_above ..., lignes (1: 1 $)) code> et remplir
Je reçois #ref! Pour les lignes (1: 2 $) et au-delà
@ user5155835 Vous ne l'avez probablement pas entré en tant que formule de tableau avec ctrl-shift-entrer code>
La formule de tableau exige de sélectionner les 500 cellules où je souhaite les données. Et comme nous l'avons dit, nous ne voulons pas sélectionner toutes les cellules manuellement
@ user5155835 non si vous l'emballez dans la fonction d'index. Vous devriez probablement lire des formules de tableau afin de mieux comprendre ce qui se passe.
Je commence toujours #ref! de la deuxième cellule à partir. La formule est la suivante: = index ($ A: $ A, n (si (1, rangée (index ($ A: $ a, match ("Contenu start", $ A, 0) +1,1): Index ($ A: $ A, match ("Content fin", $ A: $ A, 0) -1,1)))), lignes (1: 1 $))
@ user5155835 La fonction fournie répond à la question que vous avez posée. Il renvoie les données que vous avez demandées dans un tableau. L'utilisation de ces données semble être un nouveau problème et sans plus d'informations, je ne peux pas dire où vous allez mal. Je vous suggère de travailler sur elle un peu, puis postez une nouvelle question avec les formules et les mises en page que vous avez essayées et où elles ont été courtes.
@ user5155835 Il n'a pas l'air que vous avez enveloppé la formule donnée, comme je l'ai suggéré. Plutôt, vous venez d'ajouter un compteur de ligne à la formule donnée.
= Index (index ($ A: a, n (si (1, ligne (index ($ A: $ A, match ("Contenu start", $ A, 0) +1,1): index ( $ A: $ a, match ("content fin", $ A: $ A, 0) -1,1)))), des lignes (1 $: 1))
Pouvez-vous m'aider à imprimer # N / A dans cette formule s'il y a une erreur?