2016-07-27 9 views
-1

Dies ist meine Quelle Folie, die verschiedenen Spalten wie D_ID, Module hat, Funktion_Name usw.importieren mehrere Spalten von einem Blatt zum neuen Blatt

enter image description here

Ich mag würde einige Spalten wie „D_ID exportieren "," Function_Name "," Sub_Unit_Number "," Länge "von ActiveSheet zu neuem Arbeitsblatt.

sollte Mein Ausgangs Arbeitsblatt wie folgt aussehen:

enter image description here

Die Logik, die ich versucht zu verwenden ist zunächst ein neues Arbeitsblatt mit VBA-Code zu erstellen und die dann für eine Schleife durch Bereich gehen zu verwenden (“ A1: K1 "), um herauszufinden, ob jeder Zellenwert in diesem Bereich mit der Zeichenfolge" D_ID "," Function_Name "," Sub_Unit_Number "," length "übereinstimmt. Wenn ja, dann muss ich in ein neues Arbeitsblatt schreiben.

Aber meine Logik wird fehlgeschlagen.

Ich würde wirklich schätzen, wenn mir jemand mit anderer Logik oder Code helfen könnte, damit es funktioniert.

  Sub CreateNewSheet() 
     Dim rep As Integer 
     Dim sheet_name_to_create As String 

     sheet_name_to_create = "Test_Sheet" 

     'a statement to go through other worksheets 
     For rep = 1 To (Worksheets.Count) 

      'search the sheet wth the name if that exists 
     If LCase(Sheets(rep).Name) = LCase(sheet_name_to_create) Then 
      MsgBox "This sheet already exists" 
     Exit Sub 
     End If 

     Next 

      Sheets.Add After:=Sheets("Original_Sheet") 
      Sheets(ActiveSheet.Name).Name = sheet_name_to_create 

      End Sub 

      Sub Extract_data() 
      ' this sub routine extracts D_ID, Function_Name, Sub_Unit_Number     
      'and Length from the Original_Sheet 
      Dim LastColumn As Integer 
      Dim cell As Range 
      Dim sht As Worksheet 
      Dim data As String 


     Set sht = Worksheets("Original_Sheet") 
     LastColumn = sht.Cells(1, .Columns.Count).End(xlToLeft).Column 

     For Each cell In sht.Range("A1:K" & LastColumn).Cells 

     data = cell.Value 
      If data = "D_ID" Then 
      ' I need to import to the new worksheet 

      ElseIf data = "Function_Name" Then 
      ' I need to import to the new worksheet 

      ElseIf data = "Sub_Unit_Number" Then 
       ' I need to import to the new worksheet 

      ElseIf data = "Length" Then 
       ' I need to import to the new worksheet 

      End If 
      End Sub 


      Sub MyNewProcedure() 
      Call CreateNewSheet 
      Call Extract_data 
      End Sub 
+3

Reichen Sie den Code ein, den Sie bisher geschrieben haben. – nilsman

+0

@nilsman Ich habe Code hinzugefügt, aber es ist nicht vollständig korrekt, da ich vba jetzt für diese Aufgabe verwende und ich bin nicht vertraut mit Syntax und allem. – user28

Antwort

0

Ich weiß nicht genau, was das Problem ist, aber ich gebe es versuchen. Der Code funktioniert perfekt, nur ein oder zwei Fehler drin.

LastColumn = sht.Cells(1, ->here<-.Columns.Count).End(xlToLeft).Column 

Die .Columns brauchen ein Objekt, hier wäre es sht.Columns.count sein

Next cell 

unter dem letzten End fehlt Wenn so die for-Schleife eine nächste

bekam

Dann Sie müssen nur den Namen verschiedene Blätter schreiben an dieser Stelle:

Und dann müssen Sie eine Kopie legen Befehl in der If-Stelle, die die aktuelle Spalte wie folgt referenzieren:

data = cell.Value 
     If data = "D_ID" Then 
     MsgBox ("Got it") 
     Sheets("Table3").Columns(cell.Columns).Copy Destination:=Sheets("Table4").Columns(2) 
+0

danke. Ich habe ein paar kleine Änderungen vorgenommen und es hat funktioniert. – user28

Verwandte Themen