Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Spalten kopieren per VBA
#1
Hallo zusammen,

ich möchte aus einer Quelldatei nur Spalten in eine Zieldatei per VBA kopieren. Dabei sollen nur die Daten kopiert werden wo sich ein "x" in der Zeile befindet.

Beispiel:

Quelldatei: A, B, D, Z in Zieldatei B, C, E, F

Ich habe mir momentan folgendes Makro aus dem Netz einzeln zusammen getragen.

Code:
Public Sub kopieren()
Dim i As Integer
Dim cell As Range
'Zeilen in Zieltabelle löschen '
Worksheets("Tabelle2").Range("A1:s20").Clear
i = 1
For Each cell In Tabelle1.Range("s2:s500")
If Not cell Is Nothing Then
   
    ' Groß und Kleinschreibung beachten '
    If cell.Value = LCase("X") Or cell.Value = UCase("x") Then
        ' Hier kopieren in die Zieltabelle'
        cell.EntireRow.Copy Destination:=Tabelle2.Rows(i)
        i = i + 1
    End If
End If
Next cell
End Sub
Dies funktioniert auch soweit ganz gut. Allerdings werden hier die ganzen Zeilen mit allen Spalten kopiert.
Nach dem ich kein VBA-Profi bin und schon Stunden Versuche starte, wollte ich fragen ob Ihr mir helfen könntet.
Schon mal vielen Dank

Sorry bin wahrscheinlich mit meinem Problem im falschen Bereich. Habe zu spät bemerkt.
Antworten Top
#2
Code:
Sub M_snb()
    sn = sheet1.Range("A1:Z20")
    sz = Evaluate("row(1:" & UBound(sn) & ")")
    sq = Application.Find("x", sn)
    
    For j = 1 To 4
      If Not IsError(Application.Match(1, Application.Index(sq, sz, Choose(j, 1, 2, 4, 26)))) Then c00 = c00 & "_" & j
    Next
    sp = Split(Mid(c00, 2), "_")
    
    Sheet2.Cells(1).Resize(UBound(sz), UBound(sp) + 1) = Application.Index(sn, sz, sp)
End Sub
Antworten Top
#3
Hallo snb,

danke für das script.

Wäre es möglich das Du das Kommentieren könntest damit ich das ganze verstehe?
Antworten Top
#4
Schau mal hier:

http://www.snb-vba.eu/VBA_Arrays_en.html#L_6.7
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste