Autor
|
Thema: excel funktion, nach kriterien suchen und summe bilden (5443 mal gelesen)
|
Viper.qt Mitglied Student
Beiträge: 4 Registriert: 29.11.2007
|
erstellt am: 29. Nov. 2007 11:51 <-- editieren / zitieren --> Unities abgeben:
Guten Tag, ich bin leider ein graußiger excel und vbs newbie, arbeite ansich nur mit php/asp, bräuchte aber nun ausnahmsweise eine kleine excel/vbs Funktion und kenn mich leider null damit aus. Ich hoffe und bitte das mir kurz einer Hilft der sich auf diesem Gebiet auskennt und für dem diese Lösung nur wenige Handgriffe sind. Zum Problem: 1 File (daten.xls) mit mehrern Tabellenblättern In einem Tabellenblatt stehen Daten in mehrern Spalten (ID, Datum, Gruppe, Anzahl, Kosten) und natürlich in vielen Zeilen die Daten. Diese Daten sollen anhand eines Kriteriums durchgegangen werden und eine Summe in ein anderes Tabellenblatt übergeben werden. Nochmals anhand einer schematischen programmierung:
Code: for(i=0; i<ende; i++) //alle zeilen des tabellenblattes durchgehen { //stimmt suchkriterium überein (welches auch von einem anderen Tabellenblatt übergeben wird, bilde mir eine Summe if(Datum=="$DatumÜbergabe" && Gruppe=="$GruppeÜbergabe" && Anzahl =="$AnzahlÜbergabe") { summe = summe+kosten; } } //die Summe wird zurückgeschrieben return summe Useability: Man gibt in Tabellenblatt 1 in jeweils in 1 Feld ein: Datum, Gruppe, Anzahl Und bekommt in einem Anderen Feld das Ergebnis zurückgeliefert. Herzlichen Dank, Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing.
Beiträge: 3728 Registriert: 29.09.2004 Excel 2010 128GB SSD Windows 7
|
erstellt am: 29. Nov. 2007 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für Viper.qt
|
Viper.qt Mitglied Student
Beiträge: 4 Registriert: 29.11.2007
|
erstellt am: 29. Nov. 2007 12:48 <-- editieren / zitieren --> Unities abgeben:
summewenn lässt sich nur auf 1 suchkriterium anwenden, abhilfe bildet das summenprodukt, das funktioniert jedoch nicht, da ich als summenergebnis ein ganzes array mit der anzahl der durchsuchten daten zurückbekomme, wo 0 oder eben der Kostenwert drinnen steht, bei richtigem Suchkriterium und von dort komme ich nicht weiter zu einer einzelnen summenzahl dieses arrays (vollautomatisch) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing.
Beiträge: 3728 Registriert: 29.09.2004 Excel 2010 128GB SSD Windows 7
|
erstellt am: 29. Nov. 2007 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für Viper.qt
Über VBA kann man sowas sicher lösen, wobei meine Lösung etwas sehr kompliziert ausfallen würde. Kannst du eine zusätzliche Spalte einfügen? Mit dieser Spalte kannst du mit geschachtelten Wenn Abfragen verschiedene Kriterien berücksichtigen, und dann 1 oder 0 ausgeben. Die Summer der Spalte kannst du dann sogar mit der normalen Summenfunktion bilden. z.B. =wenn(A1="Test1";wenn(A2="Test2";wenn(A3="Test3";1;0);0);0) Wenn ich mich richtig entsinne, kann man bis 8 wenn schachteln. Gruss Mike ------------------
The Power Of Dreams Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hajo_Zi Mitglied Projektant
Beiträge: 479 Registriert: 26.03.2003
|
erstellt am: 29. Nov. 2007 13:19 <-- editieren / zitieren --> Unities abgeben: Nur für Viper.qt
|
Viper.qt Mitglied Student
Beiträge: 4 Registriert: 29.11.2007
|
erstellt am: 29. Nov. 2007 13:23 <-- editieren / zitieren --> Unities abgeben:
ja ich kann =WENN(Tabelle1!T:T="B";WENN(Tabelle1!U:U=1;1);0) machen und danach summewenn, aber die =wenn... fuktion von oben, liefert mir ein array, das ich aber immer händisch "aufziehen" muss, damit ich den inhalt sehe, somit kann ich es nicht "vollautomatisch" verwenden das gleiche wie bereits beschrieben bei dem summenprodukt ich makiere die ganze spalte und gebe die formel ein, das ergebniss muss automatisch die ganze spalte füllen (die daten bekommt er ja auch von einer spalte, die von 1 bis max) dann würde es so funktionieren Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 29. Nov. 2007 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für Viper.qt
|
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing.
Beiträge: 3728 Registriert: 29.09.2004 Excel 2010 128GB SSD Windows 7
|
erstellt am: 29. Nov. 2007 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für Viper.qt
über VBA kannst du die Formel einfügen lassen. z.B. Worksheets("Tabelle1").Cells(1, 5).FormulaR1C1 = "=IF(RC[-4]=1,1,0)" ergibt auf dem Blatt Tabelle1 in der Zelle E1 den Eintrag =WENN(A1=1;1;0) über eine for i = 1 to N (wobei N die Anzahl Zeilen darstellt) kann man alle notwendigen Abfragen eintragen. Allerdings kann man es dann gleich im VBA programmieren. Summe = 0 for i = 1 to N (N wieder die Anzahl zeilen) if worksheets("Tabelle1").Cells(1,1) = "A" and worksheets("Tabelle1").Cells(1,2) = "B" then Summe = Summe + 1 next i
Anstelle von Summe = Summe + 1, kannst du natürlich auch z.B. Summe = Summe + worksheets("Tabelle1").Cells(3,1) Gruss Mike
------------------
The Power Of Dreams Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 29. Nov. 2007 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für Viper.qt
@Viper.qt: Herzlich willkommen bei cad.de. Füll bitte Deine sysinfo aus, sonst kommen Antworten, die Du u.U. nicht verwenden kannst. @hajo SUMMEWENNS() ist ne XL2007-Formel? Und könntest Du Dir bitte in Zukunft die IMHO provokante Anrede "Hallo Nick" sparen? Hier muß sich keiner mit seinem Real-Namen anmelden und Du wirst das auch nicht ändern. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Viper.qt Mitglied Student
Beiträge: 4 Registriert: 29.11.2007
|
erstellt am: 29. Nov. 2007 15:18 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke für die vielen Antworten und Beiträge konnte nun auf einen guten Ansatz kommen, wo es zu funktionieren scheint: =SUMMENPRODUKT((INDIREKT("Tabelle1!T2:T"&Global!B4)="B")*(INDIREKT("Tabelle1!U2:U"&Global!B4)=1)* (INDIREKT("Global!G1:G"&Global!B5)=B2)*(INDIREKT("Tabelle1!G2:G"&Global!B4))) Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DegraA Mitglied staatl. gepr. Techniker - Maschinenbau
Beiträge: 177 Registriert: 29.03.2005 Dell Latitude E5500 Core2Duo 2,53GHz 3,45 GB RAM Win XP Prof. SP3 Office 2003 Prof. Catia V4.2.4 Catia V5R19 i break together
|
erstellt am: 09. Jan. 2008 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für Viper.qt
moin moin ich habe so ein ähnliches Problem.... ich weiß nicht ob ihr dieses eine Spiel kennt wo in eine "Nagelpyramide" (keine Ahnung ob man das so nennt) ein Ball oder eine Kugel geworfen wird und diese/r dann nur nach rechts oder links fallen kann. meine Pyramide besteht aus 8 Ebenen und am ende warten insgesamt 9 Fächer auf die Kugel oder was auch immer. Ich habe mit der Funktion ZUFALLSZAHL() für alle 8 Ebenen die möglichkeit "Rechts" oder "Links" eingegeben und möchte jetzt ermitteln in welches Fach die Kugel reinfällt. Wenn die Kugel 8 mal nach Links fällt dann landet sie logischerweise im 1. Fach Fällt sie allerdings 8 mal nach Rechts, dann landet sie im 9. Fach Fällt sie 4 mal nach Links und 4 mal nach Rechts dann landet sie im 5. Fach usw. usw. ich habe versucht mit ineinander verschachtelten =WENN Funktionen zu arbeiten, aber bei 7 war schluss ich brauche aber mindestens 8 dann könnte ich das letzte Fach mit (...;SONST_WERT) erreichen. hat jemand eine idee wie ich das erreichen kann ?? wenn noch unklarheiten zur Aufgabenstellung sind, dann einfach fragen gr33zz David
------------------ Am lautesten werden Lehrer, wenn sie "Ruhe!" brüllen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADdog Ehrenmitglied V.I.P. h.c.
Beiträge: 2237 Registriert: 30.04.2004
|
erstellt am: 09. Jan. 2008 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für Viper.qt
Hallo, du musst nur die Anzahl der "Rechtsfaller" zählen, um 1 erhöhen und hast die Fachnummer. Da muss nix verschachtelt werden. ------------------ Gruß Thomas CADdog, the dog formerly known as TR AutoCAD spricht mit einem, aber viele hören nicht zu. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DegraA Mitglied staatl. gepr. Techniker - Maschinenbau
Beiträge: 177 Registriert: 29.03.2005 Dell Latitude E5500 Core2Duo 2,53GHz 3,45 GB RAM Win XP Prof. SP3 Office 2003 Prof. Catia V4.2.4 Catia V5R19 i break together
|
erstellt am: 09. Jan. 2008 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für Viper.qt
|