+ Antworten
Ergebnis 1 bis 14 von 14
Like Tree7x Danke

Excel-Problem

Eine Diskussion über Excel-Problem im Forum Hausaufgaben. Teil des Reallife-Bereichs; Habe da ein Problem mit Excel und denke, dass ich es am besten hierher packe. Vorneweg: Mir ist bewusst, dass ...

  1. #1
    Braunbär
    Avatar von James
    Registriert seit
    09.03.2007
    Ort
    Rhoihesse
    Beiträge
    18.635

    Excel-Problem

    Habe da ein Problem mit Excel und denke, dass ich es am besten hierher packe.
    Vorneweg: Mir ist bewusst, dass das wohl nicht alles in eine Formel zu packen ist. Googlen fiel quasi flach, weil das etwas komplizierter ist.

    Jetzt das eigentliche Problem:

    Ich habe eine Tabelle mit fast 6000 Zellen und über 20 Spalten.
    Ich möchte alle Werte der Spalte M summieren, wenn von 2 oder meherern Zeilen die Spalten B und I identisch sind. (Nicht, wenn B = I ist, sondern wenn z.b B2 = B3 UND I2 = I3 ist)
    Optimalerweise hätte ich es quasi so, dass aus mehreren Zellen, deren Spalten B und I identisch sind, eine Zelle wird, aber in der Spalte M soll die Summe aller vorherigen Werte von M stehen.

    Ein Beispiel:

    B .... I .... M

    3 .... 2 .... 6
    3 .... 1 .... 2
    4 .... 3 .... 8
    3 .... 1 .... 7
    3 .... 2 .... 11
    3 .... 2 .... 9

    Am Ende sollten dann da stehen:

    3 .... 2 ..... 26
    3 .... 1 ..... 9
    4 .... 3 ..... 8

    (Alle anderen Spalten sind da irrelevant und sollten einfach übernommen werden)

    Wäre toll, wenn mir da jemand weiterhelfen könnte. Bin da zur Zeit recht aufgeschmissen.

  2. #2
    Oberfeldwebel
    Avatar von ElDonoX
    Registriert seit
    01.09.2005
    Ort
    München
    Alter
    28
    Beiträge
    2.449
    Name
    Alex
    Nick
    ElDonoX
    Clans
    +BDG+ -TSS-
    welche Ansätze hast du denn schon versucht?

    Ich glaube du musst hier mit einer WENN DANN funktion arbeiten, die aber länger ist als alles bekannte
    old school

  3. #3
    Seil
    Avatar von Anker
    Registriert seit
    23.07.2008
    Alter
    31
    Beiträge
    1.787
    Ich würde doch eher den Querverweis nehmen.

  4. #4
    Braunbär
    Avatar von James
    Registriert seit
    09.03.2007
    Ort
    Rhoihesse
    Beiträge
    18.635
    Versucht habe ich bisher eigentlich noch gar nichts, da ich mich mit Excel-Formeln überhaupt nicht auskenne.

    Werde mir dann mal später morgen "WENN DANN" und "VERWEIS" ansehen. Danke schon einmal!

  5. #5
    Feldwebel
    Avatar von Golan
    Registriert seit
    03.12.2007
    Alter
    30
    Beiträge
    1.339
    Jesass Junge, mach dich nicht unglücklich! Nimm ein ordentliches Framework für Datenverarbeitung! Und wenn's nur ist, dass du's als csv in Python einliest, als string parst und dann wieder als csv speicherst.

    Was verstehst du eigentlich darunter, dass die anderen Spalten irrelevant sind? Wenn du die nicht verarbeitest wirst du deren Content wohl oder übel löschen, nicht übernehmen.
    Geändert von Golan (12.09.2012 um 20:04 Uhr)

  6. #6
    Tiefschneekamerad
    Avatar von Ares
    Registriert seit
    11.08.2002
    Alter
    31
    Beiträge
    14.998
    Nick
    [A-o-H]Ares
    Clans
    A-o-H
    Also für dein verwendetes Beispiel hätte ich eine Lösung die allerdings gewisse Voraussetzungen hat:

    - Die Zahlen in B und I sind jeweils einstellig
    - Es ist manueller Aufwand erlaubt, d.h. bei Änderung der Daten müssen die Schritte wiederholt werden
    - Die Struktur der Datei kann vorrübergehend verändert werden (Ergänzen von Spalten etc.)
    - Die Auswertung ersetzt nicht automatisch die vorhandenen Daten sondern wird an anderer Stelle durchgeführt

    Wenn das bei dir erfüllt ist, kann ich meinen Ansatz mal erläutern.

    Edit: Mir ist noch eine andere Möglichkeit eingefallen bei der auch mehrstellige Zahlen erlaubt sind. Letztendlich hängt es davon ab wie flexibel du bei der Umsetzung bist.
    Geändert von Ares (12.09.2012 um 23:18 Uhr)
    Und plötzlich ein Schlag und du kriechst auf allen Vieren
    Und eine Stimme in deinem Ohr sagt, du sollst nicht lamentieren

  7. #7
    Braunbär
    Avatar von James
    Registriert seit
    09.03.2007
    Ort
    Rhoihesse
    Beiträge
    18.635
    Also nach deinem Edit sind wohl alle Voraussetzung erfüllt (ich habe mehrstellige Zahlen und Wörter in Spalte B), wenn der manuelle Aufwand nicht zu groß ist. Ich habe alleine in Spalte B schon 353 verschiedene Werte; in I habe ich noch nicht "gezählt", aber ich denke, dass ich im Endeffekt auf locker 1500 verschiedene Zeilen kommen würde. Einen Vorgang 1500 mal zu wiederholen war da eigentlich nicht mein Ziel.
    Wäre dir dankbar, wenn du deinen Ansatz erläutern könntest.

    Zitat Zitat von Golan
    Was verstehst du eigentlich darunter, dass die anderen Spalten irrelevant sind? Wenn du die nicht verarbeitest wirst du deren Content wohl oder übel löschen, nicht übernehmen.
    War schlecht ausgedrückt. Natürlich sollen sie in meiner Endtabelle dabei sein, aber an diesen Spalten soll rein gar nichts geändert werden.

  8. #8
    Feldwebel
    Avatar von Golan
    Registriert seit
    03.12.2007
    Alter
    30
    Beiträge
    1.339
    Ich meine, wie soll das gehen? Sagen wir du hast in Zeile D extra:
    3 ..2.. 2 .... 11
    3 ..6.. 2 .... 9
    3 ..1.. 2 .... 9

    Ist dann das Ergebnis
    3 ..2.. 2 .... 20
    oder
    3 ..9.. 2 .... 20
    oder
    3 .."2,6,1".. 2 .... 20
    ?

    Mit Python ist es übrigens in etwa 30 Zeilen Code machbar.

  9. #9
    Oberfeldwebel
    Avatar von Time
    Registriert seit
    18.11.2003
    Ort
    HH
    Beiträge
    2.578
    Clans
    R
    Aha da haben wir es ja.
    Der James wertet wohl nun woanders die Sport-Ergebnisse aus nur jetzt im grossen stil

  10. #10
    Braunbär
    Avatar von James
    Registriert seit
    09.03.2007
    Ort
    Rhoihesse
    Beiträge
    18.635
    Zitat Zitat von Golan Beitrag anzeigen
    Ich meine, wie soll das gehen? Sagen wir du hast in Zeile D extra:
    3 ..2.. 2 .... 11
    3 ..6.. 2 .... 9
    3 ..1.. 2 .... 9

    Ist dann das Ergebnis
    3 ..2.. 2 .... 20
    oder
    3 ..9.. 2 .... 20
    oder
    3 .."2,6,1".. 2 .... 20
    ?

    Mit Python ist es übrigens in etwa 30 Zeilen Code machbar.
    Ich habe etwas überlegt und mich festgelegt, dass es wirklich am besten wäre, wenn in der Ergebnis-Tabelle wirklich nur die Spalten B, I und M wären und die anderen darin gar nicht mehr auftauchen.
    (Das Problem war, dass fast alle Spaltenwerte dem Wert in B zugeordnet waren. Aber eben nur fast alle ... wären es alle gewesen, wäre das von dir zuerst genannte Ergebnis das "richtige" gewesen)

    Mit Python kenne ich mich rein gar nicht aus, hoffe also mal, dass das nicht zu kompliziert ist.

  11. #11
    Tiefschneekamerad
    Avatar von Ares
    Registriert seit
    11.08.2002
    Alter
    31
    Beiträge
    14.998
    Nick
    [A-o-H]Ares
    Clans
    A-o-H
    Ich habe zwei Vorschläge zur Lösung. Beide finden sich in der angehängten Datei dargestellt.

    Variante 1 (nur einstellige Zahlen erlaubt)

    1) Verketten der beiden Spalten B und C in A
    2) Kopieren der Zahlen aus A in einen anderen Bereich (Spalte F)
    3) Aus diesem Bereich Duplikate entfernen (Daten/Duplikate entfernen)
    4) Über summewenn() in G die entsprechenden Werte addieren lassen
    5) In F stehen die Zahlen jetzt noch verkettet. Um die Ursprungsform zu bekommen kann man entweder die Option Text in Spalten verwenden oder sich über einen sverweis() die Zahlen aus B und C holen

    Variante 2 (nur möglich mit Excel 2010)

    1) Verwendung von summewenns() in Spalte E
    2) Spalte E als Wertekopie einfügen
    3) Markierung von B2:E7 ; Duplikate entfernen (Datei/Duplikate entfernen ; Spalten B und C in der Auswahl anklicken)

    Beispiel.xlsx
    Und plötzlich ein Schlag und du kriechst auf allen Vieren
    Und eine Stimme in deinem Ohr sagt, du sollst nicht lamentieren

  12. #12
    Braunbär
    Avatar von James
    Registriert seit
    09.03.2007
    Ort
    Rhoihesse
    Beiträge
    18.635
    Wunderbar! Das sollte jetzt eigentlich klappen.

  13. #13
    Feldwebel
    Avatar von Golan
    Registriert seit
    03.12.2007
    Alter
    30
    Beiträge
    1.339
    Mit Python hast du leider erst mal einiges an Verwaltungsaufwand, die normale Shell von Windows ist leider nicht so der Bringer. Das ist jetzt für dich die Entscheidung, ob es dir der Aufwand wert ist - machst du sowas nur bei jedem dritten Vollmond wenn der große Wagen den Polarstern überfährt, lohnt es sich nicht; Python ist eine vollständige Scriptingsprache und entsprechend anspruchsvoll. Dafür ist Python schnell zu lernen und sowohl mächtig als auch schnell in der Verarbeitung von Textdateien (wie csv).
    Du müsstest erst einmal Python installieren. Exportiere deine Excel-Datei als CSV (Trennzeichen Komma ","). Dann die Datei aus dem Zipanhang bzw. den Sourcecode im Verzeichnis, wohin du die CSV gelegt hast, speichern.
    Spoiler:
    Code:
    # -*- coding: utf-8 -*-
    import sys
    
    # Hilfsfunktion - entweder tatsächlichen Zahlenwert oder 0 zurückgeben
    def tointeger(string):
    	try:
    		return float(string)
    	except:
    		return 0
    
    try:
    	# input zum lesen öffnen, output zum schreiben öffnen
    	data = open(sys.argv[1],'r')
    	outfile = open("out"+sys.argv[1],'w')
    	# dictionary für zwischenspeichern von ergebnissen anlegen
    	store={}
    	# input zeilenweise durchgehen
    	for line in data:
    		# auskommentieren um ursprüngliche daten im output neu zu speichern
    		#outfile.write(line)
    		# zeile aufspalten an kommas (standard für CSV)
    		linecontent = line.split(",")
    		# input von zeilen mit gleichem B und I in der gleichen variable aufaddieren
    		try:
    			store[linecontent[1],linecontent[8]] += tointeger(linecontent[12])
    		except KeyError:
    			store[linecontent[1],linecontent[8]] = tointeger(linecontent[12])
    	# dummy für zeilenlänge
    	temp = ['']*13
    	# kondensierte ergebnisliste durchgehen, jeweils doppelindex (B,I) und wert M auslesen
    	for BIKey, MSum in store.items():
    		# B, I und M in den dummy speichern
    		temp[1],temp[8],temp[12] = str(BIKey[0]), str(BIKey[1]), str(MSum)+'\n'
    		# die dummy-zeile in die output-datei speichern
    		outfile.write(",".join([str(item) for item in temp ]))
    except:
    	# falls etwas schief läuft, fehler ausgeben und stoppen
    	input("Fehler. Wahrscheinlich wurde eine falsche Datei angegeben. Enter drücken...")
    	raise

    Jetzt die Windows-Konsole öffnen mit Ausführen->'cmd' + [Enter]. Mit cd kannst du jetzt das Verzeichnis auswählen, in dem dein Script/CSV ist. Dort rufst du jetzt Python auf und übergibst den Namen deines Scripts sowie den Namen deiner CSV Datei. Bei mir sieht das z.B. so aus:
    Code:
    cd C:\Users\MaxFischer\Documents\Test\excelpy
    C:\Python32\python.exe tablepy.py table1.csv
    Mann, wie Hardcore so ein paar Zeilen Code und Kommandos wirken koennen. oO
    Angehängte Dateien Angehängte Dateien

  14. #14
    Braunbär
    Avatar von James
    Registriert seit
    09.03.2007
    Ort
    Rhoihesse
    Beiträge
    18.635
    Diese spezielle Aufgabe mache ich nur bei jedem dritten Vollmond wenn der große Wagen den Polarstern überfährt, aber dieses Programm scheint sehr interessant zu sein.
    Von daher werde ich mich damit mal beschäftigen. Wer weiß, wann ich das nochmal brauche?
    Daher nochmals ein dickes

+ Antworten

Ähnliche Themen

  1. problem mit cs
    Von ast126 im Forum Shooter
    Antworten: 3
    Letzter Beitrag: 16.08.2001, 01:46
  2. BIG PROBLEM :(
    Von DaChJuReL im Forum United Talk
    Antworten: 8
    Letzter Beitrag: 14.08.2001, 08:39
  3. PC-Problem
    Von aklvirus im Forum Kuba Libre
    Antworten: 20
    Letzter Beitrag: 10.08.2001, 00:05
  4. Problem bei counter-strike!WICHTIG!
    Von CybaYoda im Forum Shooter
    Antworten: 7
    Letzter Beitrag: 01.08.2001, 08:59
  5. Ich hab ein explodierendes Problem!
    Von huxl im Forum Häufig gestellte Fragen
    Antworten: 11
    Letzter Beitrag: 01.08.2001, 08:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •