Daten aus geschlossener Excel-Datei auslesen
Schritt-für-Schritt-Anleitung
- Artikelnummer eingeben: Öffne die Auswertungsdatei und gib die gesuchte Artikelnummer in Zelle A1 ein.
- Array-Formel eingeben: Trage in Zelle A2 die folgende Array-Formel ein:
{=WENN(ZEILE($A1)>SUMME(N('C:\[Artikeldaten2.xls]Tabelle1'!$A$1:$A$84=$A$1));"";INDEX('C:\[Artikeldaten2.xls]Tabelle1'!B:B;KKLEINSTE(WENN('C:\[Artikeldaten2.xls]Tabelle1'!$A$1:$A$84=$A$1;ZEILE($1:$84));ZEILE($A1))))}
Hinweis: Schließe die Eingabe mit Strg+Shift+Enter ab, um die geschweiften Klammern automatisch zu erzeugen.
- Formel kopieren: Kopiere die Formel nach rechts bis D2 und nach unten, um alle möglichen Treffer anzuzeigen.
- Daten überprüfen: Stelle sicher, dass die Quelldatei (Artikeldaten2.xls) korrekt angegeben ist und die Artikelnummern im richtigen Format vorliegen.
Häufige Fehler und Lösungen
-
Leere Zellen: Wenn leere Zellen angezeigt werden, überprüfe, ob die Artikelnummer im richtigen Format (Zahl) vorliegt. Möglicherweise sind die Artikelnummern als Text formatiert. Verwende die Methode „Inhalte einfügen“ mit „Addieren“, um sie in Zahlen umzuwandeln.
-
Formel funktioniert nicht: Achte darauf, dass der Pfad zur geschlossenen Datei korrekt ist und dass du die Array-Formel richtig eingegeben hast (mit Strg+Shift+Enter).
-
Leistungseinbußen: Wenn die Performance leidet, reduziere die Größe des Suchbereichs in der Formel, um die Berechnungen zu optimieren.
Alternative Methoden
Falls du die Formel nicht verwenden möchtest, gibt es auch die Möglichkeit, VBA zu nutzen, um Daten aus einer geschlossenen Datei auszulesen. Hier ist ein einfacher VBA-Code:
Option Explicit
Sub Artikel_auflisten()
Dim C As Range, rngArtikel As Range, lRow As Long
Dim wbArtikel As Workbook, firstAddr As String
Application.ScreenUpdating = False
Set wbArtikel = GetObject("C:\Artikeldaten2.xls") ' Pfad anpassen!
Set rngArtikel = [A1] ' Suchbegriff = Artikelnummer
lRow = 2 ' Startzeile für die Ausgabe
With wbArtikel.Worksheets("Tabelle1").Range("A:A")
Set C = .Find(rngArtikel, lookat:=xlWhole)
Rows("2:65536").Clear ' Ausgabebereich leeren
If Not C Is Nothing Then
firstAddr = C.Address
Do
Cells(lRow, 1) = C.Offset(0, 1)
lRow = lRow + 1
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddr
Else
MsgBox "Artikelnummer " & rngArtikel & " nicht gefunden.", , "Fehlanzeige..."
End If
End With
wbArtikel.Close
Set wbArtikel = Nothing
Application.ScreenUpdating = True
End Sub
Dieser Code sucht nach der Artikelnummer und gibt die entsprechenden Daten aus.
Praktische Beispiele
-
Beispiel 1: Nehmen wir an, du hast eine Liste von Artikelnummern in einer Datei und möchtest die dazugehörigen Preise in einer anderen Datei anzeigen. Verwende die oben genannte Array-Formel, um alle Preise zu extrahieren, wenn die Artikelnummer in A1 eingegeben wurde.
-
Beispiel 2: Mit VBA kannst du die Suche automatisieren, indem du die Artikelnummer in Zelle A1 eingibst und der Code die Daten in der Zielarbeitsmappe anzeigt. Dies ist besonders nützlich, wenn du häufig auf große Datenmengen zugreifen musst.
Tipps für Profis
-
Datenformatierung: Achte darauf, dass die Artikelnummern in beiden Dateien im gleichen Format vorliegen. Dies kann durch Kopieren und Einfügen in eine leere Zelle erreicht werden, wie bereits erwähnt.
-
Effizienz: Verwende nur die benötigten Datenbereiche in deinen Formeln. Das reduziert die Rechenzeit erheblich und verbessert die Leistung.
-
Automatisierung: Wenn du regelmäßig Daten aus einer geschlossenen Datei auslesen musst, ziehe in Betracht, ein VBA-Skript zu erstellen, das diese Aufgabe für dich automatisiert.
FAQ: Häufige Fragen
1. Frage
Kann ich Daten aus mehreren geschlossenen Dateien auslesen?
Antwort: Ja, du kannst mehrere Formeln erstellen oder ein VBA-Skript anpassen, um Daten aus verschiedenen Dateien zu extrahieren.
2. Frage
Was ist der Unterschied zwischen Array-Formeln und normalen Formeln?
Antwort: Array-Formeln können mehrere Werte gleichzeitig berechnen und sind nützlich, um Daten aus geschlossenen Dateien effizient auszulesen. Sie benötigen jedoch eine andere Eingabemethode (Strg+Shift+Enter).