Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
988to992
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
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten kopieren nach Kriterium kopieren

Daten kopieren nach Kriterium kopieren
02.07.2008 18:02:00
Maris
Hi allerseits,
isch habe zwei excel dateien(exportdatei und importdatei) deren Spalten die gleichen Überschriften haben, jedoch und jetzt kommen die Probleme:
- die exportdatei enthält nich alle Spaltenüberschrift jedoch ist die Bezeichnung identisch
- In der exportdatei stehen die Werte in den Spalten AD:BD und den Zeilen 241:307 die müssen auch fix bleiben. in der Importdatei gehts bei A los und zeile 6
- in diesem Bereich ändere ich die Zeilenanzahl per Makro durch beim export sollen immer nur die eingeblendeten Werte (also nicht Formate oder Formeln) übertragen werden...
- das Makro soll nun die eingeblendeten Spalten vergleichen und in der Importdatei einfügen, die Datei speichern und schliessen.
Kann mir jemand bei diesem komplexen Problem helfen?
Anbei die entsprechenden Datei zur Veranschaulichung...
Export Datei!
https://www.herber.de/bbs/user/53539.xls
Import Datei!
https://www.herber.de/bbs/user/53540.xls
Thanks an alle scho mal
Gruß
Maris

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten kopieren nach Kriterium kopieren
02.07.2008 19:08:00
Chris
Servus Maris,
probier mal dieses Makro aus:
Option Explicit

Sub schreib()
Dim ArrayÜberschrift(1 To 27) As Variant, ArrayWerte() As Variant
Dim x As Long, z As Long
Dim i As Long, y As Long, lngSpalte As Long
Dim rSuche As Range, rFinde As Range
For i = 1 To 27
ArrayÜberschrift(i) = Cells(240, i + 29)
Next i
With Workbooks("Ziel.xls").Sheets("LedgerJournalTrans")
Set rFinde = .Range("A1:CM1")
For i = 1 To 27
Set rSuche = rFinde.Find(what:=ArrayÜberschrift(i), LookAt:=xlWhole, LookIn:=xlValues)
If Not rSuche Is Nothing Then
For x = 241 To 307
If Cells(x, i + 29).EntireRow.Hidden = False Then
ReDim Preserve ArrayWerte(y)
ArrayWerte(y) = Cells(x, i + 29)
y = y + 1
End If
Next x
lngSpalte = rSuche.Column
For z = LBound(ArrayWerte()) To UBound(ArrayWerte())
.Cells(6 + z, lngSpalte) = ArrayWerte(z)
Next z
End If
ReDim ArrayWerte(0)
y = 0
Next i
End With
Workbooks("Ziel.xls").Save
Workbooks("Ziel.xls").Close
Set rSuche = Nothing
Set rFinde = Nothing
End Sub


Das Makro kommt in ein allgemeines Modul in der Exportdatei. Die Importdatei muss hierbei bereits geöffnet sein. Sie ist im Makro als Ziel.xls benannt, das musst du eben anpassen.
Gruß
Chris

Anzeige
AW: Daten kopieren nach Kriterium kopieren
02.07.2008 20:36:14
Maris
Hi,
vielen Dank erstmal. Der Import funktioniert supi. Aber die Funktion das die Datei Ziel geöffnet sein muß ist net so praktisch, gibt es eine Möglichkeit wie diese Datei im Hintergrund geöffnet wird die DAten eingelesen werden?
Grüßle Maris

AW: Daten kopieren nach Kriterium kopieren
02.07.2008 21:31:00
Chris
Servus Maris,
wenn der Pfad immer gleich ist, dann so:
Option Explicit

Sub schreib()
Dim ArrayÜberschrift(1 To 27) As Variant, ArrayWerte() As Variant
Dim x As Long, z As Long
Dim i As Long, y As Long, lngSpalte As Long
Dim rSuche As Range, rFinde As Range
Application.ScreenUpdating = False
Workbooks.Open Filename:=ThisWorkbook.Path & "\Ziel.xls" ' Hier  Pfad anpassen z.B.Filename:="C: _
ThisWorkbook.Activate
For i = 1 To 27
ArrayÜberschrift(i) = ThisWorkbook.Sheets("bericht").Cells(240, i + 29)
Next i
With Workbooks("Ziel.xls").Sheets("LedgerJournalTrans")
Set rFinde = .Range("A1:CM1")
For i = 1 To 27
Set rSuche = rFinde.Find(what:=ArrayÜberschrift(i), LookAt:=xlWhole, LookIn:=xlValues)
If Not rSuche Is Nothing Then
For x = 241 To 307
If ThisWorkbook.Sheets("bericht").Cells(x, i + 29).EntireRow.Hidden = False  _
Then
ReDim Preserve ArrayWerte(y)
ArrayWerte(y) = ThisWorkbook.Sheets("bericht").Cells(x, i + 29)
y = y + 1
End If
Next x
lngSpalte = rSuche.Column
For z = LBound(ArrayWerte()) To UBound(ArrayWerte())
.Cells(6 + z, lngSpalte) = ArrayWerte(z)
Next z
End If
ReDim ArrayWerte(0)
y = 0
Next i
End With
Workbooks("Ziel.xls").Save
Workbooks("Ziel.xls").Close
Set rSuche = Nothing
Set rFinde = Nothing
Application.ScreenUpdating = True
End Sub


Gruß
Chris

Anzeige
AW: Daten kopieren nach Kriterium kopieren
02.07.2008 21:51:36
Maris
Perfect! Vielen Dank!!!

AW: bitte owT
02.07.2008 21:58:17
Chris
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige