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

Formel-Problem / Indirekt? Hilfsspalte?

Formel-Problem / Indirekt? Hilfsspalte?
06.05.2009 07:26:36
Oliver
Hallo zusammen
Ich möchte voraus erwähnen, das ich das Problem vorhin mit Makro versucht habe zu lösen, da ich dort aber nicht das nötige Wissen verfüge, habe ich es mit Formeln versucht. Hier der Thread von der Makro-Lösung: https://www.herber.de/forum/messages/1073063.html
Ich bin jedem dankbar, der mir irgendwie hilft dieses Problem zu bewältigen, ob mit Makro oder Formel...
Ich habe bis jetzt folgende Formel:.
=WENN('C:\Dokumente und Einstellungen\o.steiner\Desktop\Meine Dateien\SA\Backup\[at200711.csv]at200711'!A1""; 'C:\Dokumente und Einstellungen\o.steiner\Desktop\Meine Dateien\SA\Backup\[at200711.csv]at200711'!A1; WENN('C:\Dokumente und Einstellungen\o.steiner\Desktop\Meine Dateien\SA\Backup\[at200712.csv]at200712'!A1""; 'C:\Dokumente und Einstellungen\o.steiner\Desktop\Meine Dateien\SA\Backup\[at200712.csv]at200712'!A1; WENN('C:\Dokumente und Einstellungen\o.steiner\Desktop\Meine Dateien\SA\Backup\[at200801.csv]at200801'!A1""; 'C:\Dokumente und Einstellungen\o.steiner\Desktop\Meine Dateien\SA\Backup\[at200801.csv]at200801'!A1; ....)))
Diese könnte man so weiterschreiben mit wenn-funktionen und würde prächtig funktionieren. Da Excel aber nicht so auf Romane abfährt, habe ich dazu eine Frage, und zwar wie man diese vereinfachen könnte.
In einer Datei sollen mehrere Dateine zusammengefasst werden. sobald bei einer Datei die unterste Zeile leer ist, soll auf die nächste Datei gewechselt werden. Dies geht so mit wenn-Funktionen, aber irgendwann ist da ja bekanntlich finito. Wie ginge das mit indirekt oder sonst einer Lösung? bin für jeden Vorschlag dankbar!
Die Dateine auf welche zugegriffen werden soll heissen:
at200711.csv
at200712.csv
at200801.csv
at200802.csv
at200803.csv
at200804.csv
....
at200904.csv
Wie gesagt, wenn die unterste gefüllte Zeile erreicht wurde, dann soll auf die nächste Datei gewechselt werden...Die Spalten sind lückenlos und alle gleich lang, d.h. man kann sich vollkommen auf die Spalte A abstützen, so wie ich es mit der wenn-Funktionenverschachtelung probiert habe. Jedoch sollte das nur für euch als Hilfe dienen, um das Problem ein wenig zu verständlichen..Es darf gekniffelt werden!
Vielen Dank für eure Hilfe und einen schönen Nachmittag!
Mit freundlich Grüssen
Oli

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

Betreff
Datum
Anwender
Anzeige
AW: Formel-Problem / Indirekt? Hilfsspalte?
06.05.2009 19:03:26
fcs
Hallo Oli,
per Formel wird das schwierig.
INDIREKT funktioniert nur wenn die angesprochenen Dateien geöffnet sind.
Deine WENN konstruktion scheitert nicht nur an der Formel-Länge sondern auch daran, dass nur max. 7 WENN-Bedingungen geschachtelt werden.
Ich hab mal eine etwas andere Art gewählt, die CSV-Daten zu laden.
1. Eine Liste der Dateien wird in einem temporären Blatt erstellt und sortiert.
2. Die Dateien in der Liste werden
- nacheinander göffnet,
- die Daten kopiert,
- der Dateiname in der 8. Spalte eingetragen,
- und die Datei wieder geschlossen.
3. Die Spaltenbreiten werden optimiert.
4. Die Dateiliste wird wieder gelöscht.
Die Kommentare sollten helfen den Funktionen zu verstehen.
Gruß
Franz

'Erstellt mit Excel 2003
Sub lesen()
Dim wksListe As Worksheet, wksZiel As Worksheet
Dim wbQuelle As Workbook, wksQuelle As Worksheet, rngDaten As Range
Dim lngZeileZiel As Long
Dim strDatei As String, lCounter As Long
Const strPfad As String = _
"C:\Dokumente und Einstellungen\o.steiner\Desktop\Meine Dateien\SA\Backup\"
'  Const strPfad As String = _
"C:\Lokale Daten\Test\Daten\"
'Liste der Dateinamen in Tabellenblatt erstellen
ActiveWorkbook.Worksheets.Add
Set wksListe = ActiveSheet
'Dateien suchen
strDatei = Dir(strPfad & "at*.csv")
wksListe.Columns(1).NumberFormat = "@" 'Spalte 1 als Text formatieren
lngZeileZiel = 0
'Dateinamen in Liste eintragen
Do While strDatei  ""
lngZeileZiel = lngZeileZiel + 1
wksListe.Cells(lngZeileZiel, 1) = strDatei
strDatei = Dir
Loop
'Dateinamen aufsteigend sortieren
With wksListe.Columns(1)
.Sort Key1:=.Range("a1"), order1:=xlAscending, header:=xlNo
End With
'Tabellenblatt für Daten aus CSV-Dateien erstellen
ActiveWorkbook.Worksheets.Add
Set wksZiel = ActiveSheet
lngZeileZiel = 1
'CSV-Dateien einlesen
'Bildschirmaktualisierung und automatische Berechnung deaktivieren
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For lCounter = 1 To wksListe.Cells(wksListe.Rows.Count, 1).End(xlUp).Row
'CSV-Dateinamen einlesen
strDatei = strPfad & wksListe.Cells(lCounter, 1).Text
'CSV-Datei öffnen
'Der Parameter Local:=True sorgt dafür, dass Dezimalzeichen und Datum entsprechend _
den Einstellungen in der Systemsteuerung interpretiert werden
Workbooks.Open Filename:=strDatei, ReadOnly:=True, _
Delimiter:=";", Local:=True
'Quellobjekte setzen
Set wbQuelle = ActiveWorkbook
Set wksQuelle = wbQuelle.Worksheets(1)
'Zeilen mit Daten in Quelle erfassen
With wksQuelle
Set rngDaten = .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 7))
End With
With wksZiel
'Quelldaten in Zieltabelle kopieren
rngDaten.Copy Destination:=.Cells(lngZeileZiel, 1)
'Dateinamen in Spalte 8 eintragen
.Range(.Cells(lngZeileZiel, 8), .Cells(lngZeileZiel + rngDaten.Rows.Count - 1, 8)) _
= wbQuelle.Name
'nächste Einfügezeile ermitteln
lngZeileZiel = lngZeileZiel + rngDaten.Rows.Count
End With
'Quelldatei wieder schliessen
wbQuelle.Close savechanges:=False
Next
wksZiel.Columns.AutoFit
'Tabelle mit Dateiliste wierder löschen
Application.DisplayAlerts = False
wksListe.Delete
Application.DisplayAlerts = True
'Bildschirmaktualisierung und Berechnung wieder aktivieren
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
End Sub


Anzeige
AW: Formel-Problem / Indirekt? Hilfsspalte?
07.05.2009 06:19:43
Oliver
Hallo Franz
wow, das ist ja noch viel besser als die Idee mit indirekt..Genau sowas habe ich mir vorgestellt, aber leider keine Ahnung wie man so was programmieren muss... Funktioniert bisher fehlerfrei und ich bin dir sehr dankbar für deine Zeit, die die in Anspruch genommen hast für das Ganze.
Nochmals vielen Dank!
Gruss Oli

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige