2017-09-20 3 views
-1

Ich habe derzeit ein Blatt mit zwei Spalten - "From" und "To". Ich versuche, eine Tabelle zu erstellen, in der jede Zeile ein individueller Wert ist, der innerhalb der Bereiche liegt, die sich derzeit in jeder Zeile befinden.Erstellen neuer Zeilen in Excel mit From und To-Werten

Ein Beispiel (sorry ich kann keine Bilder noch einbetten) -

Was ich habe:

enter image description here

Was ich will:

enter image description here

+0

Ich sehe Sie die Funktion Tag hinzugefügt, können Sie den Code für Ihre Funktion posten? – Michael

+0

Sie benötigen dazu möglicherweise vba. Mit nur Formeln wird es schwierig –

Antwort

1

Kopieren Sie & fügen Sie FROM- und TO-Spalten untereinander ein und wenden Sie die Funktion zum Entfernen von Duplikaten im Datenblock der Menüleiste an.

+0

Problem ist, wenn ich von A0001 zu A0022 habe. Ich brauche A0002, A0003, ..., A0022. Versuchen, zu sehen, ob es eine Möglichkeit gibt, es mit einer Excel-Funktion anstelle von manuell zu tun – zcaad9

+0

@ zcaad9 Sie missbrauchen das Wort "Funktion". Was Sie dafür brauchen, ist ein ** Makro **. – dwirony

2

Versuchen Sie, diese VBA-Code,

Sub splitToCodes() 
Dim i As Long, j As Long, k As Long 
j = 2 
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row 
    If IsNumeric(Cells(i, 1)) Then 
     For k = Cells(i, 1) To Cells(i, 2) 
      Cells(j, 4) = k 
      j = j + 1 
     Next k 
    Else 
     For k = Right(Cells(i, 1), Len(Cells(i, 1)) - 1) To Right(Cells(i, 2), Len(Cells(i, 2)) - 1) 
      Cells(j, 4) = k 
      Cells(j, 4) = Left(Cells(i, 1), Len(Cells(i, 1)) - Len(Cells(j, 4))) & k 
      j = j + 1 
     Next k 
    End If 
Next i 
End Sub 

enter image description here

Dieser Code Schleifen durch die Spalten A und B und druckt die Ausgabe in Spalte D. Ändern nach Ihren Bedürfnissen.

Hinweis: - Dieser Code funktioniert nur für ähnliche Daten wie im Bild, da Sie kein anderes Format erwähnt haben.

+1

Beat mich dazu. Ich werde immer noch meine Lösung posten, weil ich ehrlich gesagt eine Art herausfordernde gefunden habe. – dwirony

+0

Hallo Gowtham, ich war wirklich verwirrt darüber, wie man die Werte für 'A0082' darin bekommt, usw., wird dein Code für jede Variation von' A0000 funktionieren 'zu' A9999'? Ich musste eine Art Arbeit machen, wo ich eine Reihe von Nullen nahm und so viele davon nahm, wie ich brauchte. – dwirony

+0

@dwirony Ich habe den 'A' -Teil vom Text abgezogen und geschleift. Also sollte es funktionieren –

1

Hier ist meine Super mühsame Lösung:

Option Explicit 
Sub Test() 
Dim i As Integer, j As Integer, k As Long, sht As Worksheet, lastrow As Long, missingzeroes As Integer, zeroesholder As String, myzeroes As String 
Set sht = ThisWorkbook.Worksheets("Sheet1") 
lastrow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 

For i = 2 To lastrow 
    If IsNumeric(Range("B" & i).Value) = True And IsNumeric(Range("A" & i).Value) = True Then 
     j = Range("B" & i).Value - Range("A" & i).Value 
     lastrow = sht.Cells(sht.Rows.Count, "D").End(xlUp).Row 
      For k = 0 To j 
       Range("D" & lastrow + 1 + k).Value = Range("A" & i).Value + k 
      Next k 
    Else 
     j = Right(Range("B" & i).Value, 4) - Right(Range("A" & i).Value, 4) 
      lastrow = sht.Cells(sht.Rows.Count, "D").End(xlUp).Row 
      For k = 0 To j 
       Range("D" & lastrow + 1 + k).Value = Left(Range("B" & i).Value, 1) & Right(Range("A" & i).Value, 4) + k 
       If Len(Range("B" & i).Value) <> Len(Range("D" & lastrow + 1 + k).Value) Then 
        missingzeroes = Len(Range("B" & i).Value) - Len(Range("D" & lastrow + 1 + k).Value) 
        zeroesholder = "000000000000000000000000000000000000000000000000000000000000000000" 
        myzeroes = Left(zeroesholder, missingzeroes) 
        Range("D" & lastrow + 1 + k).Value = Left(Range("A" & i).Value, 1) & myzeroes & Right(Range("A" & i).Value, Len(Range("D" & lastrow + 1 + k).Value) - 1) + k 
       End If 
      Next k 
    End If 
Next i 
End Sub 

enter image description here

Verwandte Themen