2017-10-03 5 views
0

J'essaie de créer une plage nommée dynamique que je peux utiliser pour une liste de validation de données. Je les utilise tous les temps mais dans ce cas j'ai des informations qui se trouvent en dessous de la gamme qui ne peut pas être comptée dans la gamme. De plus, j'ai une macro qui insère des lignes dans cette plage qui doivent être comptées.Plage dynamique nommée avec des données de déplacement inférieures à

Je normalement utiliser quelque chose comme ça si rien d'autre était dans la colonne: = OFFSET ($ A $ 1,0,0, COUNTA ($ A: $ A), 1)

Je dois commencer cette un en bas de la page un peu de façons donc j'ai utilisé: = OFFSET ($ A $ 24,0,0, COUNTA ($ A $ 24: $ A24), 1)

Avis J'ai supprimé le "$" avant le dernier "24" dans la formule en espérant que cela s'élargirait en conséquence, mais cela ne semble pas être cohérent. Fondamentalement, j'ai besoin de la gamme COUNTA pour inclure uniquement une gamme de cellules qui vont toujours croître et se rétrécir. Je ne suis pas mauvais dans VBA et je suis ouvert à une solution qui pourrait inclure une boucle dans une plage de cellules et s'arrêter une fois qu'il atteint une cellule dont la valeur est égale à une certaine chaîne de texte (dans le cas où .Value = "Demande 1"). Mais je suis un peu inquiet au sujet de l'alimentation d'un formulaire ou d'un contrôle ActiveX, car cela m'a causé des problèmes dans le passé avec la visualisation et l'impression des fonctionnalités.

Répondre

0

J'ai utilisé un code ci-dessous pour créer une gamme ailleurs dans le classeur que je pourrais alors utiliser facilement pour créer une plage nommée dynamique:

Sub UpdateEntities() 

Dim i As Long, x As Long 

i = 24 
x = 1 

Sheets("Values").Range("AH:AH").ClearContents 

Do While Cells(i, 1).Value <> "REQUEST 1" 

Cells(i, 1).Select 

If ActiveCell.Value <> "" Then 
Sheets("Values").Cells(x, 34).Value = ActiveCell.Value 
i = i + 1 
x = x + 1 
Else 
i = i + 1 
End If 

Loop 

End Sub