Aus 1 mach viele ;)

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Uatschitchun
*
Beiträge: 10
Registriert: Di, 06.11.2007 20:33

Aus 1 mach viele ;)

Beitrag von Uatschitchun »

Hi! Hoffe jemand hier hat eine Idee für folgendes (wahrscheinlich eher triviales) Problem ;)

Als Selbständiger erfasse ich meine Arbeitszeiten in verschiedenen Projekten mittels eines Tools (TimeTTracker - sehr zu empfehlen!) auf dem PDA. Am Ende des Monats ziehe ich mir die Daten per Export als CSV nach Calc ... vorsortiert nach Auftraggeber, Projekt, Datum ... aber alles in einer Tabelle.
Nun würde ich mir gerne für die einzelnen Kunden separate Tabellen erstellen und diese automatisch befüllen lassen, um daraus meine Abrechnungen zu erstellen.

Problem: Ich habe nie die selbe Anzahl an Einträgen für die jeweiligen Kunden ... ansonsten würde ich mit Wenn-Dann arbeiten ...

Also:
Tabelle1:
Kunde1 - Projekt1 - Datum ...
Kunde1 - Projekt1 - Datum ...
Kunde1 - Projekt1 - Datum ...
Kunde1 - Projekt2 - Datum ...
Kunde1 - Projekt2 - Datum ...
Kunde1 - Projekt2 - Datum ...
Kunde1 - Projekt2 - Datum ...
Kunde2 - Projekt1 - Datum ...
Kunde2 - Projekt1 - Datum ...
Kunde2 - Projekt1 - Datum ...
Kunde2 - Projekt2 - Datum ...
Kunde3 - Projekt1 - Datum ...
...

Nun hätte ich daraus gerne jeweils eine Tabelle Kunde1, Kunde2 und Kunde3 ;)
Das klappt für Kunde1 auch prima, da ich ja weiß, das in A1 Kunde1 anfängt (Wenn(Tabelle1.A1="Kunde1";A1;"") ... aber für Kunde2 wirds schon schwer (Wenn(Tabelle1.A?="Kunde2"..) , da jeden Monat die Anzahl der Einträge variieren ...

Am liebsten noch, wenn dann innerhalb der Kundentabelle Unterscheidungen nach Projekt möglich sind. Bedingte Formatierungen laufen ja doch nur auf eine Zelle oder kann man die auch auf eine Zeile anwenden? Z.B.: Falls Zelle="Projekt1" dann formatiere die ganze Zeile mit "Zeilen-format" ?!

Sowas, wie 'elif' läßt sich nur über verschachtelte Wenn-Dann's erzielen, oder? Also:
Wenn Kunde1, dann, sonst Wenn Kunde2, dann sonst Wenn Kunde3
richtig?

Versteht mich jemand? :shock:

Lg
Roman
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Aus 1 mach viele ;)

Beitrag von Karolus »

Hallo Roman

Befasse dich mal mit den Möglichkeiten des Datenpiloten, (-->Daten-->Datenpilot--Aufrufen)
Der ist zwar zunächst mal schwer durchschaubar, müsste aber ideal für deine Aufgabestellung passen, und die Strukturierung deiner Quelltabelle stimmt auch schon.
hier gibts eine ausfühliche Anleitung: http://www.ooowiki.de/DatentabellenAusw ... votTabelle

wenn du es erstmal etwas einfacher angehen möchtest, versuchs mit -->Daten-->Filter--Standardfilter mit der Ausgabeoption in jeweils ein neues Tabellenblatt.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Uatschitchun
*
Beiträge: 10
Registriert: Di, 06.11.2007 20:33

Re: Aus 1 mach viele ;)

Beitrag von Uatschitchun »

Nur zur Info, da soll erstmal nix addiert werden oder so ... nur aufteilen ...

Werde mir den Filter mal ansehen ... Für den Datenpilot bräuchte ich ja dann Ergebnisse im Datenfeld?!
Uatschitchun
*
Beiträge: 10
Registriert: Di, 06.11.2007 20:33

Re: Aus 1 mach viele ;)

Beitrag von Uatschitchun »

Ok, Standardfilter ist schonmal eine Option ... Allerdings muß ich das dann für jede Tabelle, die ich haben will neu machen ...?!

Habe mal eine Beipieltabelle angehangen. Im Prinzip möchte ich für jeden "Klienten" eine eigene solche Tabelle haben, die sich automatisch aus der Gesamttabelle ergibt ;)
Dateianhänge
Beispieltabelle.zip
Beispieltabelle (einfach nach .ods umbenennen)
(13.53 KiB) 37-mal heruntergeladen
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Aus 1 mach viele ;)

Beitrag von Karolus »

Hallo Uatschitchun
Uatschitchun hat geschrieben:Ok, Standardfilter ist schonmal eine Option ... Allerdings muß ich das dann für jede Tabelle, die ich haben will neu machen ...?!

Habe mal eine Beipieltabelle angehangen. Im Prinzip möchte ich für jeden "Klienten" eine eigene solche Tabelle haben, die sich automatisch aus der Gesamttabelle ergibt ;)
Nun, die eigentliche Arbeit nimmt dir keiner ab, Aber ich hab deine Beispieldatei mal mit einer Datenpilotausgabe versehen nebst eingefügtem Snapshot des Datenpilotdialogs.

Gruß Karo
Dateianhänge
aus_1_mach_viele.ods.zip
Wirklich gezipt, zuerst entpacken
(59.88 KiB) 41-mal heruntergeladen
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Uatschitchun
*
Beiträge: 10
Registriert: Di, 06.11.2007 20:33

Re: Aus 1 mach viele ;)

Beitrag von Uatschitchun »

Danke für die Mühe, Karo ... aber ich brauche die einzelnen Tabellen in der Form, wie die "Original-Tabelle" ;(

Sinn der Sache ist, daß ich für jeden "Klienten" eine Abrechnung erstellen muß, in der Datum, Start- und Endzeit, sowie die Notiz erscheint ...
Demnach eigentlich nur ein "copy&paste", welches ich gerne automatisieren würde, aber nicht automatisieren kann, da die Anzahl der Einträge/Klient jeden Monat variiert.

Lg
Roman
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Aus 1 mach viele ;)

Beitrag von Karolus »

Hallo

selektiere mal eine Zelle in der Kopfzeile deiner Tabelle und gehe zum Menüpunkt -->Daten-->Filter-->Autofilter.
jetzt hast du u.a. in der Spalte 'Klient' ein Drop-down-Feld mit dem du alle Klienten filterst.
Hilft dir das ?

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Uatschitchun
*
Beiträge: 10
Registriert: Di, 06.11.2007 20:33

Re: Aus 1 mach viele ;)

Beitrag von Uatschitchun »

Ja, das hilft schonmal weiter ;)

Um daraus dann einzelne Tabellen zu machen, muß ich aber immer noch manuell kopieren&einfügen ... nur das selber "filtern" fällt raus :D

Sprich, genau das Ergebnis, was mir das Autofiltern liefert, möchte ich automatisch in je eigene Tabellen bekommen

Tabelle_komplett
a
a
a
b
b
a
c
c

=>
Tabelle a:
a
a
a
a

Tabelle b:
b
b

Tabelle c:
c
c

Wohl im Wesentlichen sowas wie das hier:
http://www.ms-office-forum.net/forum/sh ... p?t=184604
Allerdings ist das VBA und nicht so ohne weiteres einsetzbar ?!

Lg
Roman
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Aus 1 mach viele ;)

Beitrag von Karolus »

Hallo

....Mit anderen Worten:
Du suchst einen Dummen, der dir mal schnell ein Makro für genau diese Aufgabe und angepasst auf deine Datei schreibt. ;-))
Versuchs mal mit folgendem:

Code: Alles auswählen

Sub filtern_in_neue_blaetter
odoc = thiscomponent
insheet = odoc.sheets(0)                                                             'Das 1. Blatt mit den Quelldaten
                                                                                                  'Zuerstmal sortieren, vereinfacht den Rest
Dim SortProps(2) As new com.sun.star.beans.PropertyValue
Dim SortFeld(2) As new com.sun.star.table.TableSortField
oBereich = inSheet.getCellRangeByName("A4:J1000")        'Sortierbereich ggf anpassen !!
	SortFeld(0).Field = 0                                                         'Sortiere nach SpalteA..
    SortFeld(0).IsAscending = false                                            'absteigend...
    SortFeld(0).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
    SortFeld(1).Field = 2                                                           '...dann nach Sp.C....
    SortFeld(1).IsAscending = True
    SortFeld(1).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
    SortFeld(2).Field = 3                                                          '...und dann nach Datum in D
    SortFeld(2).IsAscending = True
    SortFeld(2).FieldType = com.sun.star.util.SortFieldType.NUMERIC
    
    SortProps(0).Name = "SortFields"
    SortProps(0).Value = SortFeld()
    SortProps(1).Name = "SortColumns"
    SortProps(1).Value = False
    SortProps(2).Name = "ContainsHeader"
    SortProps(2).Value = false
    oBereich.Sort(SortProps())
                                                                                                             'sortieren abgeschlossen
headercopyaddress = insheet.getCellRangeByPosition(0,2,9,2).getrangeaddress 'A1:J3
iz = 3                                                                                                 'Startindex inputZeile
do while lcase(insheet.getcellbyposition(0,iz).string) = "y"        'generelle Schleifenbedingung Spalte A 
	kcell = insheet.getcellbyposition(2,iz).string
		if kcell <> insheet.getcellbyposition(2,iz-1).string then       'Bedingung für neues Blatt
		oz = 3                                                                      'Startindex Outputzeile
			If oDoc.Sheets.hasByName(kcell) Then
			odoc.Sheets.removebyname(kcell)                        'bereits vorhandene entfernen
			end if
		oDoc.Sheets.insertNewByName(kcell, 1)                    'und neu und leer wieder einfügen
		outsheet = odoc.sheets().getbyname(kcell)
		outtiteladdress = outsheet.getcellbyposition(0,0).getcelladdress
		outSheet.copyRange(outtiteladdress,headercopyaddress)      'Kopfzeilen einfügen
		end if
	outsheet = odoc.sheets().getbyname(kcell)
	oQuelleRange = inSheet.getCellRangeByPosition(0,iz,9,iz)
	oQuellrangeaddress = oQuelleRange.getrangeaddress
	oZiel = outSheet.getCellByPosition(0,oz)
	oZieladdress = oZiel.getcelladdress
	outSheet.copyRange(oZieladdress,oQuellRangeaddress)        'Zeilen kopieren
	iz = iz +1 : oz = oz + 1                                                      'Zeilenindeces hochzählen
loop
End Sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Uatschitchun
*
Beiträge: 10
Registriert: Di, 06.11.2007 20:33

Re: Aus 1 mach viele ;)

Beitrag von Uatschitchun »

Karolus hat geschrieben:Du suchst einen Dummen, der dir mal schnell ein Makro für genau diese Aufgabe und angepasst auf deine Datei schreibt. ;-))
Ähm, nein ... eigentlich suchte ich nen Dummen, der schlauer ist als ich und mir ein paar Tipps gibt ;)

Boah! Super Duper!!!
Karo, du bist nen Schatz :P

Dat fluppt ja genau, wie ich's wollte ;)

Evtl. kannst du mir noch nen Tipp geben, wo ich nähere Infos oder eine gute Einführung zu OO-Basic bekomme? Problem bei neuen Sprachen ist immer das Vokabular und die OO-Hilfe schweigt sich doch reichlich aus. Alleine die 'insheet' Befehle etc. ...

Lg
Roman
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Aus 1 mach viele ;)

Beitrag von Karolus »

Hallo Roman
nebenan im Basic-forum findest du gleich im ersten Thread eine ganze Reihe von brauchbaren Links, für den Anfang kann ich dir insbesondere Michael Dannenhöfer empfehlen http://www.starbasicfaq.de/ (Der Sortierblock in obigen Makro ist im wesentlichen von dort kopiert)

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Uatschitchun
*
Beiträge: 10
Registriert: Di, 06.11.2007 20:33

Re: Aus 1 mach viele ;)

Beitrag von Uatschitchun »

Oki, Sorry, wer suchen kann ist klar im Vorteil!

Hatte das StarOffice Handbuch gerade gefunden ;)

Lieben Dank nochmal! Hast mir total weitergeholfen!
Uatschitchun
*
Beiträge: 10
Registriert: Di, 06.11.2007 20:33

Re: Aus 1 mach viele ;)

Beitrag von Uatschitchun »

Ah so ... eine kleine Frage habe ich noch:

Kann man auf ein bestimmtes Ergebnis einer Funktion hin eine Bild-Datei laden?

z.Bsp. Wenn(Wert>0;LadeBild:positiv.jpg;LadeBild:negativ.jpg)

Geht bestimmt nicht, da man ein Bild ja auch keiner Zelle zuordnen kann, richtig?
Antworten