2009-03-11 11 views
1

J'ai un ensemble de nombres:Comment créer une liste de numéro commençant et le numéro de fin

| A  B 
-------------- 
1| 100 102 
2| 103 103 
3| 104 105 
4| 106 110 

colonne A est le numéro de début et de la colonne B est le numéro final. Nous devons créer une liste (sur une cellule séparée) de nombres en utilisant le numéro de début et le numéro de fin en utilisant la colonne A & B. E.g. basé sur le 1er ensemble de données de la rangée 1 (A1 & B1) le premier ensemble de nombres sera: 100.101.102, puis il ira à la rangée 2, mettrea 103 après 102 et passera à la rangée 3, élargira la liste et affichera 104 et 105, puis à la dernière rangée où il devrait figurer 105,106,107,108,109,110.

Nous devrions être en mesure de marquer le début du numéro de la liste afin que nous connaissions le début de chaque liste. c'est-à-dire que tous les numéros énumérés dans la colonne A doivent être marqués.

Répondre

3

Pas sûr que je comprends parfaitement votre question, mais je pense que vous voulez transformer ceci:

 
100 102 
103 103 
104 105 
106 110 

dans tout cela?

 
100 102  100, 101, 102 
103 103  103 
104 105  104, 105 
106 110  106, 107, 108, 109, 110 

Si oui, le code suivant atteindra cet objectif:

 
Private Sub getListsOfNumbers() 
    Dim inputRange As String 
    Dim x As Long 
    Dim y As Long 

    'Get input range of data 
    inputRange = InputBox("Enter input range", "Start", "A1:A4") 

    'Clear output range (two column offset) 
    Range(inputRange).Offset(0, 2).ClearContents 

    With Range(inputRange) 

     'Loop through input range 
     For x = 1 To .Cells.Count 

      'Loop through difference between second column and first column 
      For y = 0 To (.Cells(x, 2) - .Cells(x, 1)) 

       'Add value to output column 
       .Cells(x, 3) = .Cells(x, 3) & (.Cells(x, 1) + y) & ", " 
      Next y 

      'Tidy up output by removing trailling comma 
      .Cells(x, 3) = CStr(Left(.Cells(x, 3), Len(.Cells(x, 3)) - 2)) 
     Next x 
    End With 
End Sub 

Si j'ai mal lu votre demande, s'il vous plaît laissez-moi savoir. Edit: J'ai juste essayé ceci pour de vrai et, avec de plus grands ensembles de données, ce serait aussi lent qu'on pourrait le prévoir. Si vos données ont 100s/1000s de lignes, et/ou la différence entre les nombres dans les colonnes A & B est significativement plus grand que l'exemple, alors vous voudrez probablement chercher à minimiser le retard en désactivant le calcul et screenUpdating au début de la procédure et restauration une fois complète.

L'aide Excel a la syntaxe et des exemples pour vous aider si vous devez implémenter cela.

Questions connexes