Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zellen summieren und Ergebnis übergeben

Frage Microsoft Microsoft Office

Mitglied: Shaggy84

Shaggy84 (Level 1) - Jetzt verbinden

11.03.2008, aktualisiert 12.03.2008, 5589 Aufrufe, 7 Kommentare

Hallo Forum Team, bastla, und alle anderen

noch eine weitere Frage...

Ich möchte mehrere Zellen summieren und das Ergebnis übergeben.

Folgender Sachverhalt:

Ich habe eine Spalte DR, in der ein Typ steht. Es stehen aber oft mehrere gleiche Typen untereinander.

In Spalten CL bis CQ stehen die Jahresumsätze der einzelnen Jahre.

Das Ergebnis soll nur noch eine Zeile des Typs mit der Summe aller Zeilen und Spaltenabschnitte der Umsätze ergeben. (Der Rest wird später gelöscht)

1. addiere Zellen der gleichen Zeile CL bis CQ in Zwischenablage
2. schau in der nächsten Zeile in Spalte DR ob der Typ gleich ist
3a. wenn ja, springe zur nächsten Zeile und addiere Zeilen CL bis CQ zur Zwischenablage hinzu
3b. wenn nein, lösche soeben dursuchte Zeilen bis auf aktuelle und setze Ergebnis bei aktueller Zeile in DV ein.
4. wenn nein, springe eine Zeile weiter und beginne von vorne (natürlich ohne die schon fertigen Ergebnisse zu löschen)

Grüße, Gregor

P.S. Mein Excel VBA Buch kommt bald
Mitglied: bastla
11.03.2008 um 13:18 Uhr
Hallo Shaggy84!

Eigentlich lässt sich diese Aufgabe relativ einfach auch ohne VBA lösen (hier gezeigt für Excel 2003):

Falls Du noch keine Liste der verschiedenen Typen hast, kannst Du diese erzeugen, indem Du die Spalte DR markierst, "Daten / Filter / Spezialfilter"und dort die Optionen "An eine andere Stelle kopieren" und "Keine Duplikate" wählst sowie für "Kopieren nach:" die erste Zelle einer freien Spalte (im selben Blatt) - für das Beispiel unten etwa EE2 - angibst. Die Eingabe eines Kriteriums entfällt, da Du ja alle "Typ"-Einträge benötigst.

Sobald es diese Liste gibt, kannst Du mit SUMMEWENN() die Werte jeweils einer Spalte und mit einer einfachen Summenformel diese Spaltensummen zusammenfassen.

Beispiel: Wenn Deine Typen ab EE2 aufgelistet wären (und die Daten in CL2:CQ999 stünden), könntest Du folgende Formel in EG2 eingeben und entsprechend nach unten und nach rechts kopieren:
01.
=SUMMEWENN($DR$2:$DR$999;$EE2;CL$2:CL$999)
Damit hättest du schon einmal die Zeilen zusammengefasst. Dann noch in EF2 (und per AutoAusfüllen in den Zellen darunter) eine einfache Summenformel
01.
=SUMME(EG2:EL2)
und die Spalten EE und EF enthielten die von Dir gewünschte Zuordnung "Typ / Gesamtsumme für Typ".

[Edit] Als Ergänzung: Wenn Du mit den Ergebnissen zufrieden bist, kannst du diese kopieren und über "Inhalte einfügen... / Werte" von den ursprünglichen Daten unabhängig machen, sodass diese dann tatsächlich gelöscht werden könnten. [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: Shaggy84
11.03.2008 um 13:29 Uhr
Hallo bastla,

mein Problem an der Sache ist, das dies ein Teil meines VBA Codes werden soll, den ich quasi in der Mitte einfüge (Hatte ich aber auch net erwähnt muss ich hinzu fügen)

Die Zellen die ich hier miteinander addiere existieren hinterher garnicht mehr, es sollen quasi hier nur noch der Typ und der Gesamtumsatz stehen, zusammen mit weiteren Sachen die ich schon fertig habe.

Aber ich tüftel mal ein wenig rum, danke erstmal für deine Hinweise

P.S. Ich hole heute auch mein VBA Buch ab damit ich net dauernd was posten (und deine Zeit in Anspruch nehmen) muss
Bitte warten ..
Mitglied: bastla
11.03.2008 um 14:35 Uhr
Hallo Shaggy!

Die Umsetzung Deines Pseudocodes sähe etwa so aus:
01.
Sub Zusammenfassen() 
02.
 
03.
Const ZeileVon = 2 
04.
Const TypSpalte = "DR" 
05.
Const SummenSpalte = "DV" 
06.
Const DatenSpalteVon = "CL" 
07.
Const DatenSpalteBis = "CQ" 
08.
 
09.
Zeile = ZeileVon 
10.
DatenSpalteVonNr = Columns(DatenSpalteVon).Column 'Spaltennummer ermitteln (für Schleife) 
11.
DatenSpalteBisNr = Columns(DatenSpalteBis).Column 'Spaltennummer ermitteln (für Schleife 
12.
 
13.
Do While Cells(Zeile, TypSpalte).Value <> "" 
14.
    For i = DatenSpalteVonNr To DatenSpalteBisNr 
15.
        Summe = Summe + Cells(Zeile, i).Value 
16.
    Next 
17.
        
18.
    If Cells(Zeile, TypSpalte).Value <> Cells(Zeile + 1, TypSpalte).Value Then 
19.
        Cells(Zeile, SummenSpalte).Value = Summe 
20.
        Summe = 0 
21.
        Zeile = Zeile + 1 
22.
    Else 
23.
        Rows(Zeile).Delete 
24.
    End If 
25.
Loop 
26.
End Sub
... damit ich net dauernd was posten (und deine Zeit in Anspruch nehmen) muss ...
Solange Du Zeit hast, auf eine Antwort zu warten ...

Grüße
bastla
Bitte warten ..
Mitglied: Shaggy84
12.03.2008 um 09:43 Uhr
Guten Morgen bastla,

wie so oft (oder quasi immer) ist dein Code perfekt und läuft sehr gut

Gut, ich sollte schon auch die Spaltennummern direkt vergeben und nicht zu bequem sein, aber vielleicht bleibt es so ja auch übersichtlicher

Eine Frage hätte ich aber noch (auch wenn mein neues Buch jetzt neben mir liegt und ich mich damit ausführlich beschäftige...)

In der Ergebnisansicht stehen nun immer noch vereinzelt gleiche Typen, da es u.A. dazwischen wieder einen anderen Typen gegeben hat. Meine Idee wäre nun zuvor die Spalte der Typen alphabetisch zu sortieren (natürlich die ganze Zeile gleich mitnehmen) und deinen Code dann durchlaufen zu lassen...

Mal schaun ob ich selber drauf komme, bin aber auch für jegliche Hilfe dankbar
Bitte warten ..
Mitglied: bastla
12.03.2008 um 11:50 Uhr
Hallo Shaggy84!

Wie schon an anderer Stelle (in Deinem anderen Thread) empfohlen wurde: einfach ein Makro dafür aufzeichnen und analysieren ...

Grüße
bastla
Bitte warten ..
Mitglied: Shaggy84
12.03.2008 um 14:10 Uhr
Hallo bastla,

ja des stimmt schon, mach ich auch z.T., aber an manche Funktionen wie diese doppelte Sortierung klappt dann doch nicht so einfach damit

01.
'Datenstruktur alphabetisch in Spalte I und DR sortieren 
02.
Range _ 
03.
(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 
04.
Selection.Sort Key1:=Range("I1"), _ 
05.
Order1:=xlAscending, Key2:=Range("DR1"), _ 
06.
Order2:=xlAscending, Header:=xlGuess, _ 
07.
OrderCustom:=1, MatchCase:=False, _ 
08.
Orientation:=xlTopToBottom
Müsst dir so langsam mal nen Bier für die Hilfe ausgeben, hier schon einmal ein virtuelles als Vorschuss c(_)

Grüße, Gregor
Bitte warten ..
Mitglied: bastla
12.03.2008 um 14:49 Uhr
Hallo Shaggy84!

Müsst dir so langsam mal nen Bier für die Hilfe ausgeben ...
Lieb von Dir, aber an Wochentagen mit einem "t" im Namen trinke ich kein Bier ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

PHP
gelöst HTML Dropdownmenü auslesen und in PHP als Variable übergeben (35)

Frage von ITFlori zum Thema PHP ...

Microsoft Office
gelöst Excel 2010 Zellen mit bestimmten Inhalt mit Makro formartierten (5)

Frage von packmann2016 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (10)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...