Seite 1 von 1
Liste erstellen nach Kriterien
Verfasst: Do, 30.04.2009 03:28
von ulliwitt
Hallo,
ich habe zwar schon gesucht, aber leider noch nicht das richtige für mich gefunden.
Mein Problem: Ich möchte aus einer Tabelle heraus mehrere gefilterte Listen erstellen.
Ich stelle mir das so vor: Ich habe eine Tabelle mit vielen Namen (Spalte A). Daneben sind mehrere Spalten mit unterschiedlichen Kriterien, sagen wir "Apfel", "Birne", "Banane" und "Kiwi" (Spalten B-E). In diesen Spalten ist angeben, wer Birnen, Äpfel usw. hat, z.B. durch ein "x" gekennzeichnet.
Ich würde nun gerne in einer anderen Tabelle in verschiedenen Spalten durch ein Gültigkeitsfeld, das die verschiedenen Obstsorten als Kriterium zur Auswahl anbietet, automatisch eine gefilterte Liste von Namen auswerfen, die dem oben genannten Kriterium entsprechen, ohne dass ich den Filter dafür jedesmal aufrufen muss.
Wenn ich die Kriterien verändere, sollte die alte Liste überschrieben werden. Also wenn ich in Tabelle2 in Spalte A "Apfel" durch "Birne" (s.u.) ersetze, dürfen nur die drei Namen für "Birne" aufgelistet werden und die untersten vom vorigen Kriterium "Apfel" (Name8+9) müssten gelöscht sein.
Also:
TABELLE1.......................................................TABELLE2
.............Apfel..Birne..Banane..Kiwi ........................Apfel......Kiwi.......Birne
Name1 _____x____________________......................_Name1___Name2___Name3
Name2 _____x_________________x__......................_Name2___Name4___Name5
Name3 _____x_____x______________......................_Name7___Name6___Name7
Name4 _______________________x__......................_Name8___Name9_________
Name5 ___________x______________......................_Name9__________________
Name6 _________________x_____x__
Name7 _____x_____x______________
Name8 _____x____________________
Name9 _____x___________x_____x__
usw.
Wie kann ich das bewerkstelligen? Lässt sich das machen? Gibt es eine Funktion, eine Formel, ein Makro dafür?
Mir geht es dabei um eine einfache Erstellung dieser Listen.
Danke schon mal im Voraus.
Ulli
Re: Liste erstellen nach Kriterien
Verfasst: Do, 30.04.2009 12:18
von Gert Seler
Hallo ulliwit,
die einfachste Lösung sieht meinerseits so aus :
erste Tabelle umbennen in "Daten" und zweite Tabelle in "Berechnung".
In "Berechnung" Zelle B1 "Apfel" in C1 "Birne" in D1 "Banane" usw .
Titel in "Daten" Spalte "A"=Nr. ;Spalte "B"=Namen; Zelle "C1" markieren und = eingeben; mit Maus "Reiter" von"Berechnung" anklicken, Zelle"B1" markieren
und "ENTER" betätigen. In "Daten_C1" sollte nun die Formel :
stehen. Die Formel nach rechts kopieren und die "Spalten_Buchstaben" entsprechend anpassen.
Die Titelzeile in "Daten" passt sich den geänderten Einträgen in "Berechnung" an.
Formel in der Tabelle "Berechnung" Zelle "B2" :
Code: Alles auswählen
=WENN(UND($Daten.$C$1=$B$1;$Daten.$C2="x");$Daten.$B2;"")
und nach unten kopieren.
Bitte die vollen und gemischten Bezüge beachten ( $ ), sonst werden die Werte nicht gefunden (siehe Ooo_Hilfe ).In Zelle "C2"
wird die angepaßte Formel so erscheinen :
Code: Alles auswählen
=WENN(UND($Daten.$D$1=$C$1;$Daten.$D2="x");$Daten.$B2;"")
Formel anpassen und kopieren.
Ich hoffe das hilft Dir weiter.
mfg
Gert
Re: Liste erstellen nach Kriterien
Verfasst: Do, 30.04.2009 14:35
von ulliwitt
Gert,
vielen Dank für deine Antwort und deine Mühe.
Lieder entspricht es meinen Vorstellungen nicht.
Folgende Gründe:
1. in der "Daten"-Tabelle habe ich 5 Obstsorten, in der Liste will ich aber immer nur jeweils 3 Sorten abfragen. Wenn ich die Spaltentitel in der Datentabelle von der Berechnungstabelle abhängig mache, stimmen die Daten sehr schnell nicht mehr: wenn ich in der Berechnungstabelle Apfel und Birne als Spaltentitel austausche, dann stehen die "x" an der falschen Stelle, d.h. anstatt der Apfelbesitzer werden dann eigentlich die Besitzer der Birnen aufgelistet. Die Datentabelle muss unabhängig bleiben.
2. die Auflistung weist Lücken auf und ist nichts anderes als ein Spiegelbild der Kreuze in der Datentabelle. Dann könnte ich auch gleich die Namen in der Datentabelle eingeben, oder versuchen mit SVERWEIS zu arbeiten. Ich möchte allerdings kompakte Listen erstellen (ohne leere Zellen dazwischen), die ich ggf. erneuern kann, indem ich eine andere Obstsorte als Kriterium eingebe.
Wenn ich mit dem Standardfilter arbeite, kann er mir eine kompakte (weil gefilterte) Auflistung in einen anderen Bereich hinein erstellen, wobei ich noch nicht verstanden habe, wie ich die Auflistung auf die Namensspalte begrenzen kann. Im Moment wird immer nur die gesamte Tabelle mit allen Obstsorten gefiltert ausgegeben. Wenn das auf die eine Spalte (Namen) reduziert werden könnte, wär das schon mal toll.
Ich vermute, dass ich hier mit einem Makro arbeiten müsste, das bei neuen Bedingungen, sprich: neuem Kriterium (z.B. Kiwi inder 1. Spalte) neu ausgeführt wird. Aber geht das?
Grüße, Ulli
Re: Liste erstellen nach Kriterien
Verfasst: Do, 30.04.2009 15:35
von Charly
Hallo Ulliwitt!
Ich habe mal versucht auf die Schnelle eine Makrolösung zu schreiben.
Ich habe zwei Tabellen Daten und Ausgabe.
Ich kann in der 1. Zeile des Tabellenblattes "Ausgabe" die zu selektierenden Obstsorten (bis zu vier) eingeben und dann auf den Button "Aktualisieren" drücken.
Gruß
Charly
Re: Liste erstellen nach Kriterien
Verfasst: Do, 30.04.2009 22:22
von ulliwitt
Charly, Danke!
Dein Ansatz scheint mir sehr vielversprechend. Leider ist aber scheinbar das Makro selbst nicht vollständig, bzw. nicht mit der eingestellten Tabellendatei abgespeichert. Kann das sein?
Bei mir funktioniert jedenfalls das Aktualisieren nicht. Und bei den Makros ist zwar ein Makro "Main" zu finden, allerdings ohne jegliche Funktionen.
Herzliche Grüße,
Ulli
Re: Liste erstellen nach Kriterien
Verfasst: Fr, 01.05.2009 08:43
von Charly
Hallo Ulliwitt!
Ich habe jetzt selbst auf einem anderen Computer meine Datei heruntergeladen. Sie funktioniert bei mir einwandfrei. Allerdings musste ich die Datei erst an einem anderen Ort abspeichern, da sie beim herunterladen schreibgeschützt war. Der Button "Aktualisieren" war im Entwurfmodus (warum weiß ich nicht). Den musste ich erst umschalten. Dann funktionierte alles.
Das Makro mit dem Namen "Auswahlliste" ist vollständig vorhanden. Ein Makro Namens "Main" ist nicht vorhanden.
Hast du schon deine Makrosicherheitseinstellung überprüft, ob bei dir Makros überhaupt laufen können? (Menü-Extra-Optionen-OpenOfficeOrg-Sicherheit)
Ansonsten weiß ich die Ursache nicht.
Gruß
Charly
Re: Liste erstellen nach Kriterien
Verfasst: Fr, 01.05.2009 08:58
von Charly
Hallo!
Ich kopiere dir mal zur Sicherheit noch den Code ohne Datei hier herein.
Code: Alles auswählen
Sub Auswahlliste()
Dok = ThisComponent
Quelle = Dok.sheets.getByName("Daten")
Ziel = Dok.Sheets.getByName("Ausgabe")
'Löschen Altdaten
Cursor = Ziel.createCursor()
Cursor.gotoEndofusedArea(0)
Endzeile = cursor.RangeAddress.endrow
Endspalte = cursor.RangeAddress.endColumn
If Endzeile > 0 then
Bereich = Ziel.getCellRangeByPosition(0,1,Endspalte,Endzeile)
Bereich.clearContents(255)
End if
Cursor = Quelle.createCursor()
Cursor.gotoEndofusedArea(0)
Endzeile = cursor.RangeAddress.endrow
Endspalte = cursor.RangeAddress.endColumn
For I = 0 to 4
Filter = Ziel.getCellByPosition(I,0).string
If Filter = "" then
exit For
end if
Kenn = 0
For Sp = 1 to Endspalte
SpName = Quelle.getCellByPosition(Sp,0).string
If SpName = Filter then
Kenn = 1
exit For
end if
next
If Kenn < 1 then
MSGBOX("Spalte für Filter nicht gefunden")
end if
Zeile = 1
For I1 = 1 to Endzeile
Such = Quelle.getCellByPosition(Sp,I1).string
If Such = "x" or Such = "X" then
Ziel.getCellByPosition(I,Zeile).string = Quelle.getCellByPosition(0,I1).string
Zeile = Zeile+1
end if
next
next
End Sub
Gruß
Charly
Re: Liste erstellen nach Kriterien
Verfasst: Fr, 01.05.2009 12:08
von ulliwitt
Grandios. Vielen Dank, Charly.
(Ich hatte tatsächlich die Sicherheitseinstellung nicht geändert.)
Das Makro tut genau das, was ich mir vorgestellt habe.
Was muss ich am Makro ändern, wenn die Namen in der Datentabelle in der 2. Spalte stehen und die Obstsorten in der 4. Zeile?
Gruß,
Ulli
Re: Liste erstellen nach Kriterien
Verfasst: Fr, 01.05.2009 16:16
von Charly
Hallo Ulliwitt!
ulliwitt hat geschrieben:
Was muss ich am Makro ändern, wenn die Namen in der Datentabelle in der 2. Spalte stehen und die Obstsorten in der 4. Zeile?
Das Auslesen der Namen in der Datentabelle erfolgt mit dem folgendem Befehl nach dem Istgleich-Zeichen:
Code: Alles auswählen
Ziel.getCellByPosition(I,Zeile).string = Quelle.getCellByPosition(0,I1).string
Die Null steht hier für Spalte A. Gib hier eine 1 ein und das Programm liest den Namen aus Spalte B.
also gib ein:
Code: Alles auswählen
Ziel.getCellByPosition(I,Zeile).string = Quelle.getCellByPosition(1,I1).string
Die auszulesende Zeile steht in der Variablen I1. Der Anfangswert der Variablen wird durch folgenden Befehl bestimmt:
Die 1 steht dabe für die Zeile 2. Soll also das Auslesen erst ab Zeile 4 beginnen, musst du hier eine 3; also: I1 =3; schreiben. Also immer 1 weniger als die tatsächlich Zeile, da Starbasic ab Null zu zählen beginnt.
also gib ein:
Gruß
Charly
Re: Liste erstellen nach Kriterien
Verfasst: Fr, 01.05.2009 17:25
von Charly
Hallo Ulliwitt!
Jetzt habe ich doch noch eine Änderung übersehen. Mit Zeile 4 meintest du doch die Überschrift, ich habe das mit dem Beginn der der Datenfelder verwechselt.
Du musst daher nocher noch folgende Zeile ändern:
Code: Alles auswählen
For Sp = 1 to Endspalte
SpName = Quelle.getCellByPosition(Sp,0).string
Hier sucht das Programm welche Spalte er durchsuchen, soll. Wenn die Namen also in Spalte B, und die Überschrift mit den Obstsorten ab Spalte C und Zeile 4 beginnt musst du schreiben:
Code: Alles auswählen
For Sp = 2 to Endspalte
SpName = Quelle.getCellByPosition(Sp,3).string
Die Daten beginnen also erst eine Zeile später. also muss hier stehen:
Wenn man Änderung nicht testet, ist es immer schwierig an alle Punkte zu denken. Ich hoffe ich habe sie jetzt alle.
Gruß
Charly
Re: Liste erstellen nach Kriterien
Verfasst: Sa, 02.05.2009 00:03
von ulliwitt
Super!! Klappt hervorragend! Danke!
Ulli