Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Daten übertragen wenn X

VBA Daten übertragen wenn X
16.02.2021 17:08:23
Mone
Hallo Zusammen,
ich benötige euere Hilfe.
In der Beispieldatei gibt es einen Reiter Quelle und und einen MA A.
Wenn in dem Reiter Quelle in Spalte G ein "x" eingetragen ist, soll er Spalte B, C, D und G übernehmen.
Wenn kein "x" dann nichts machen.
Davor sollte er prüfen ob es die Nr. (Spalte B) schon gibt, heißt die Daten sind schon im Reiter MA A vorhanden, wenn ja soll er nichts machen, wenn nicht soll er sie übernehmen.
Andersrum wenn es im MA A Reiter Daten gibt die es in der Quelle nicht gibt, bzw. nicht mit "x" gekennzeichnet sind soll er die Zeile löschen.
Versteht ihr was ich meine? Entschuldigt, ich weiß ich drücke mich oft etwas kompliziert aus :)
https://www.herber.de/bbs/user/143972.xlsx
Vielen lieben Dank im Voraus ihr Lieben!

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Daten übertragen wenn X
16.02.2021 17:22:19
Mone
Hallo Hajo_Zi,
vielen Dank für deinen Betrag, leider hilft mir eine Formel nicht weil die echte Datei über 2000 Zeilen beinhaltet und da wird es mit einer Formel schwierig weil dann excel zu langsam wird, habe noch 25 weitere Reiter die das selbe abrufen sollen.
Trotzdem lieben Dank!
AW: VBA Daten übertragen wenn X
16.02.2021 18:34:28
Dieter
Hallo Mone,
wenn ich dein Problem richtig verstanden habe, dann könntest du das mit dem folgenden Programm amchen:
Sub Abgleichen()
Dim letzteZeileM As Long
Dim letzteZeileQ As Long
Dim nr As Long
Dim wsM As Worksheet
Dim wsQ As Worksheet
Dim zeileM As Long
Dim zeileQ As Long
Set wsM = ThisWorkbook.Worksheets("MA A")
Set wsQ = ThisWorkbook.Worksheets("Quelle")
letzteZeileM = wsM.Cells(wsM.Rows.Count, "B").End(xlUp).Row
If letzteZeileM  "x" Then
wsM.Rows(zeileM).Delete
End If
End If
Next zeileM
' Sätze von "Quelle" nach "MA A"
letzteZeileM = wsM.Cells(wsM.Rows.Count, "B").End(xlUp).Row
If letzteZeileM 
Viele Grüße
Dieter
Anzeige
AW: VBA Daten übertragen wenn X
16.02.2021 18:40:55
Nepumuk
Hallo Mone,
teste mal:
Option Explicit

Public Sub UpdateData()
    
    Dim lngRow As Long, lngEmptyRow As Long
    Dim objCell As Range
    
    With Worksheets("Quelle")
        
        For lngRow = 7 To .Cells(.Rows.Count, 2).End(xlUp).Row
            
            If .Cells(lngRow, 7).Value = "x" Then
                
                Set objCell = Worksheets("MA A").Columns(2).Find( _
                    What:=.Cells(lngRow, 2).Value, LookIn:=xlValues, LookAt:=xlWhole)
                
                If objCell Is Nothing Then
                    
                    With Worksheets("MA A")
                        
                        lngEmptyRow = .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0).Row
                        
                    End With
                    
                    Worksheets("MA A").Cells(lngEmptyRow, 2).Value = .Cells(lngRow, 2).Value
                    Worksheets("MA A").Cells(lngEmptyRow, 3).Value = .Cells(lngRow, 3).Value
                    Worksheets("MA A").Cells(lngEmptyRow, 4).Value = .Cells(lngRow, 4).Value
                    Worksheets("MA A").Cells(lngEmptyRow, 5).Value = .Cells(lngRow, 7).Value
                    
                Else
                    Set objCell = Nothing
                End If
            End If
        Next
    End With
    
    With Worksheets("MA A")
        
        For lngRow = 7 To .Cells(.Rows.Count, 2).End(xlUp).Row
            
            Set objCell = Worksheets("Quelle").Columns(2).Find( _
                What:=.Cells(lngRow, 2).Value, LookIn:=xlValues, LookAt:=xlWhole)
            
            If objCell Is Nothing Then
                
                Call .Rows(lngRow).Delete
                
            Else
                
                If IsEmpty(objCell.Offset(0, 5).Value) Then _
                    Call .Rows(lngRow).Delete
                
                Set objCell = Nothing
                
            End If
        Next
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Daten übertragen wenn X
16.02.2021 19:26:11
Mone
Super vielen lieben Dank! funktioniert einwandfrei so wie ich es wollte!!!!
AW: VBA Daten übertragen wenn X
16.02.2021 20:32:27
Mone
Hey Nepumuk,
kannst du mir noch verraten was die Zeile und was die Spalte anspricht? Da in diesem Beispiel beides "7" ist tu ich mir schwer das entsprechend zu ändern wenn ich es erweitern möchte
Liebe Grüße
Stets Zeile vor Spalte wie bei ADRESSE - owT
17.02.2021 02:10:13
Luc:-?
:-?
AW: VBA Daten übertragen wenn X
17.02.2021 08:51:26
Nepumuk
Hallo Mone,
die 7 ist die 7. Spalte = G
Gruß
Nepumuk
AW: VBA Daten übertragen wenn X
18.02.2021 08:56:19
Mone
Ok Danke :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige