Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1064to1068
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

Geänderte Filterzeilen zurückschreiben

Geänderte Filterzeilen zurückschreiben
31.03.2009 21:27:21
Klaus
Hallo Forum,
über den Advanced Filter erhalte ich aus der Datenbank eines Archivs einen 6-spaltigen Datenauszug.
Die Filterdaten werden nun zum Teil geändert und mit einem X vor der Zeile gekennzeichnet.
Jetzt möchte ich die veränderten Daten wieder zurück schreiben.
Die Schwierigkeit dabei ist, dass die Zeilen durch die Advanced Filterung nicht als ganze Archiv-Zeile vorliegen
(also nach dem jeweiligen Spaltenkopf aufgeteilt werden müssen) und die Spaltenköpfe der Filterdaten über
Dropdownfelder frei wählbar sind, also keine Festwerte darstellen …
Hat da jemand von euch eine Idee zu? War das überhaupt verständlich? Beispielmappe anbei.
Für Antworten ein Dankeschön im voraus.
https://www.herber.de/bbs/user/60889.xls
Klaus

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

Betreff
Datum
Anwender
Anzeige
AW: Geänderte Filterzeilen zurückschreiben
01.04.2009 11:28:16
fcs
Hallo Klaus,
über die Leitzahl und die Spaltentitel im Blatt Daten kann man mit der Suchfunktion (Find) die entsprechende Zeile und Spalte im Blatt "Archiv" ermitteln in die geänderte Werte eingetragen werden müssen.
Gruß
Franz
Entsprechendes Makro schaut wie folgt aus:

Sub DatenZurueckschreiben()
Dim wksDaten As Worksheet, wksArchiv As Worksheet
Dim ZeiDaten As Long
Dim SpalteDaten As Long
Dim rngSpalte As Range, rngZeile As Range
Dim varLeitzahl, varSpalte
'Objektvariablen die Tabellenblätter zuweisen
Set wksDaten = Worksheets("Daten")
Set wksArchiv = Worksheets("Archiv")
With wksDaten
'Zeilen im Blatt Daten in Spalte 10(J) abarbeiten
For ZeiDaten = 11 To .Cells(.Rows.Count, 10).End(xlUp).Row
If UCase(.Cells(ZeiDaten, 10)) = "X" Then
'Leitzahl aus Spalte 11 (K) auslesen
varLeitzahl = .Cells(ZeiDaten, 11).Text '.Text muss wegen Zahlenformat!!
'Leitzahl in Spalte 12 (L) ab Zeile 11 im Archiv suchen
With wksArchiv
Set rngZeile = Range(.Cells(11, 12), .Cells(.Rows.Count, 12).End(xlUp)).Find( _
What:=varLeitzahl, LookIn:=xlValues, lookat:=xlWhole)
End With
If rngZeile Is Nothing Then
MsgBox "Leitzahl " & varLeitzahl & " im Archiv nicht gefunden!"
Else
'Spaltentitel in Daten abarbeiten
For SpalteDaten = 12 To 16 'Spalten L bis P
'Spaltentitel in Variable einlesen
varSpalte = .Cells(10, SpalteDaten)
'Spaltentitel in Zeile 10 ab Spalte 13 (M) im Archiv suchen
With wksArchiv
Set rngSpalte = Range(.Cells(10, 13), .Cells(10, .Columns.Count).End(xlToLeft)) _
.Find(What:=varSpalte, LookIn:=xlValues, lookat:=xlWhole)
End With
If rngSpalte Is Nothing Then
MsgBox "Spaltentitel " & varSpalte & " im Archiv Zeile 10 nicht gefunden!"
Else
'Eintrag überschreiben, wenn geändert
If wksArchiv.Cells(rngZeile.Row, rngSpalte.Column).Value  _
.Cells(ZeiDaten, SpalteDaten).Value Then
wksArchiv.Cells(rngZeile.Row, rngSpalte.Column).Value = _
.Cells(ZeiDaten, SpalteDaten).Value
End If
End If
Next
End If
End If
Next
End With
End Sub


Anzeige
AW: Geänderte Filterzeilen zurückschreiben
01.04.2009 13:35:38
Klaus
Hallo Franz,
ich bin sprachlos – ganz herzlichen Dank für Deine Mühe.
Das hatte ich alleine nicht hinbekommen …
Funktioniert einwandfrei.
Dankeschön
Klaus

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige