Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1632to1636
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

Daten übertragen via Makro

Daten übertragen via Makro
06.07.2018 17:19:09
Mike
Hallo Zusammen,
ich muss täglich eine Datenbankliste aktualisieren, Die geänderten Daten stehen in einer Zeile in einem anderen Blatt, müssen aber in der Liste innerhalb einer Zeile, an verschiedenen Positionen (Zellen) eingefügt werden.
In einer zweiten Variante müssen diese Werte, wenn bestimmte Merkmale in zwei Spalten zutreffen, auch in anderen Zeilen eingefügt werden.
Das Ganze ist sehr zeitraubend und vor allem sehr fehleranfällig.
Mangels Kenntnissen kann ich leider keine funktionierende VBA-Lösung erstellen.
Hier ist eine vereinfachte Beispieldatei mit Beschreibung: https://www.herber.de/bbs/user/122515.zip
Über eine Lösung würde ich mich sehr freuen.
Vorab vielen Dank
Gruß Mike

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten übertragen via Makro
06.07.2018 21:15:33
Barbaraa
Hallo Mike,
Probier mal das:
Kopiere diesen Code in ein neues Modul:
Option Explicit
Public wErf            As Range
Public wDat            As Range
Public lDatZei         As Long
Sub Mike_Makro1_0706()
' Daten übertragen und am der Ende der Tabelle anfügen. [von A10 bis I10]
Dim lErfSp          As Long
Set wErf = Worksheets("Erfassung").Cells
Set wDat = Worksheets("Daten").Cells
lDatZei = wDat(1, 1).End(xlDown).Row + 1
KundensatzSchreiben
DatensatzSchreiben
End Sub
Sub Mike_Makro2_0706()
' Daten übertragen und vorhandenen Datensatz mit identischer Nr. oder
' Kundennummer überschreiben. [von A10 bis I10] Die Kundennummer hat Vorrang.
' Falls nicht vorhanden, die Nr. verwenden.
Dim lErfSp          As Long
Dim Fund
Set wErf = Worksheets("Erfassung").Cells
Set wDat = Worksheets("Daten").Cells
Fund = Application.Match(wErf(10, 2), wDat.Columns(2), 0)
If IsError(Fund) Then
Fund = Application.Match(wErf(10, 1), wDat.Columns(1), 0)
If IsError(Fund) Then
MsgBox "Weder Nr. noch Kundennummer vorhanden."
Exit Sub
End If
End If
lDatZei = Fund
KundensatzSchreiben
DatensatzSchreiben
End Sub
Sub Mike_Makro3_0706()
' Daten übertragen und alle Datensätze mit identischen Vertrag und Kategorie
' überschreiben. [nur von G10 bis I10]
Dim lErfSp          As Long
Set wErf = Worksheets("Erfassung").Cells
Set wDat = Worksheets("Daten").Cells
For lDatZei = 2 To wDat(1, 1).End(xlDown).Row
If wErf(10, 3) = wDat(lDatZei, 3) And wErf(10, 6) = wDat(lDatZei, 6) Then
DatensatzSchreiben
End If
Next lDatZei
End Sub
Private Sub DatensatzSchreiben()
Dim lErfSp          As Long
For lErfSp = 7 To 9
wDat(lDatZei, Application.Match(wErf(9, lErfSp), wDat.Rows(1), 0)) _
= wErf(10, lErfSp)
Next lErfSp
End Sub
Private Sub KundensatzSchreiben()
Dim lErfSp          As Long
For lErfSp = 1 To 6
wDat(lDatZei, lErfSp) = wErf(10, lErfSp)
Next lErfSp
End Sub
Zu Makro 2:
Falls eine Kundennummer gefunden wurde, wird nicht auch noch die Nr. verglichen.
Es wird nur die erste gefundene Zeile befüllt.
Weitere gleiche Kundennummern oder Nr. werden NICHT befüllt.
Aufruf der Makros:
Menü Ansicht, dann ganz rechts "Makros". Bitte recherchiere selbst, wie man einen Button erstellt, der ein Makro aufruft.
Achtung: Mir ist aufgefallen, dass manche Zeilen in Daten KEINE Formeln hinterlegt haben.
Du schreibst: "Vorab vielen Dank".
Ich antworte: Bitte gern geschehen.
LGB
Anzeige
Prima
06.07.2018 22:09:05
Mike
Hallo Barbaraa,
Deine Makros funktionieren 100% und sind sehr schnell! Mich beeindruckt der sehr effiziente Code. Ich hoffe, ich kann den Code auf die reale Datenbank übertragen?! Falls ich doch ein kleines Problem treffe, darf ich mich nochmals melden?
Die Makroschalter hatte ich schon als Textfeld hinterlegt. Die Zeilen ohne Formel sind hier sicherlich in dieser Liste sinnlos, in der Originalliste aber nötig. Es war etwas mühsam, die große und recht komplexe Liste, auf eine so kleine Liste zu reduzieren.
Nochmals 1000 Dank und Gruß Mike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige