2009-03-11 16 views
1

zu schaffen habe ich eine Reihe von Zahlen:Wie eine Liste von Anfang Nummer und Endnummer

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

Spalte A ist die Anfangsnummer und Spalte B die Endnummer sind. Wir müssen eine Liste (in einer separaten Zelle) von Nummern unter Verwendung der Anfangsnummer und der Endnummer unter Verwendung der Spalte A & B. erstellen. basierend auf dem ersten Satz von Daten von Zeile 1 (A1 & B1) wird der erste Satz von Zahlen: 100, 101, 102, dann wird er zu Zeile 2 gehen, 103 nach 102 setzen und weiter zu Zeile 3, expandiert die Liste und Anzeige 104 und 105, dann zur letzten Reihe, wo es 105,106,107,108,109,110 auflisten sollte.

Wir sollten in der Lage sein, den Anfang der Nummer für die Liste zu markieren, so dass wir den Anfang jeder Liste kennen. d.h. alle in Spalte A aufgeführten Nummern sollten markiert sein.

Antwort

3

nicht sicher, ob ich verstehe Ihre Frage vollständig, aber ich glaube, Sie wollen, dass diese drehen:

 
100 102 
103 103 
104 105 
106 110 

in das?

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

Wenn ja, wird der folgende Code dieses Ziel zu erreichen:

 
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 

Wenn ich Ihre Anfrage falsch verstanden haben, lassen Sie es mich wissen.

Edit: Probieren Sie dies nur für echte und mit größeren Datensätzen wäre es so langsam wie man es vorhersagen könnte. Wenn Ihre Daten 100s/1000s von Zeilen haben und/oder der Unterschied zwischen den Zahlen in den Spalten A & B wesentlich größer als das Beispiel ist, dann sollten Sie wahrscheinlich versuchen, die Verzögerung zu minimieren, indem Sie die Berechnung und ScreenUpdating im Beginn der Prozedur und Wiederherstellung nach Abschluss.

Die Excel-Hilfe enthält die Syntax und Beispiele, die Ihnen bei der Implementierung helfen.