-1
votes

Excel - Obtenez une gamme de données entre deux rangées

J'ai des données dans le modèle suivant:

 Entrez la description de l'image ici

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.


0 commentaires

3 Réponses :


1
votes
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

2 commentaires

Que cherchez-vous de faire avec les données? Ajouter, sélectionner, copier, multiplier, déplacer?


Dessiner une étincelle



1
votes

Probablement plusieurs façons de faire cela, mais si vous préférez le faire sans VBA, vous pouvez utiliser:

 Entrez la description de l'image ici

formule utilisée dans B1 (all un peu long): xxx

remarque C'est une formule de matrice entrée via Ctrl shift Entrez

glisser vers le bas ....


2 commentaires

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.



3
votes

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 {1; 2; 3; 4} code> p>

Les valeurs peuvent être numériques ou texte. P>

Comment tu veux Gérer ces valeurs est à vous. 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)))))


18 commentaires

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 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 , enveloppez-la dans un ifError de manière à produire #na () 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


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 (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 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) ou columms ($ A: a)


@ user5155835 = index (Formula_above ..., lignes (1: 1 $)) 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


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?