Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
05.07.16, 11:03
|
#1
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Excel Hilfe bei einem Makro
Hallo,
ein Marko würde mir die Arbeit erleichten, aber leider habe ich nicht wirklich Ahnung von der Materie. Ich habe eine Tabelle mit folgenden Spalten: Kundennummer, Meldedatum, Status, Klasse, Geschäftsart, Marke, Modell, Herstellnummer, Erstellungsdatum, Rechnungsdatum, Rechnungsbetrag brutto, Einkaufspreis, Rechnungsbetrag erstmalig, Rechnungsbetrag aktuell)
Die Liste kommt täglich in unterschiedlicher Größe.
Mein Wunsch wäre es, wenn man mit dem Makro zu jeder Kundennummer die Anzahl der Herstellnummern und die Höhe Rechnungsbetrag aktuell heraus bekommt. Die Zusammenfassung hätte ich gerne auf einer neuen Mappe.
Wäre cool, wenn ihr mir da helfen könntet.
greetz
Cunster
|
|
|
05.07.16, 14:04
|
#2
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
Das könnte man doch gleich mit Formeln in einem neuen Tabellenblatt in der Originaldatei erledigen...
Und du musst präziser sein. Sind Herstellnummern ein gewisse Anzahl die addiert werden oder wird pro Rechnung eine Herstellnummer addiert? Woher soll man wissen, was das ist?
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
Folgendes Mitglied bedankte sich bei eitch100:
|
|
05.07.16, 14:46
|
#3
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Pro Rechnung(also pro Zeile) gibt es eine neue Herstellernummer.
Davon die Anzahl soll am Ende ausgespuckt werden.
Sorry für meine Ungenauigkeit.
|
|
|
05.07.16, 15:02
|
#4
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
Zitat:
Zitat von eitch100
Das könnte man doch gleich mit Formeln in einem neuen Tabellenblatt in der Originaldatei erledigen...
|
Und was ist damit? Wenn diejenigen, die die Tabelle erstellen, eine neue Datei bekämen, mit der sie arbeiten sollen.
Zitat:
Zitat von cunster
Pro Rechnung(also pro Zeile) gibt es eine neue Herstellernummer.
Davon die Anzahl soll am Ende ausgespuckt werden.
|
Und warum soll ich die dann zählen? Ist doch dann dieselbe Anzahl wie Rechnungen (bzw. Rechnungsbeträge), die ich eh addiere...
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
Folgendes Mitglied bedankte sich bei eitch100:
|
|
05.07.16, 15:16
|
#5
|
Erfahrenes Mitglied
Registriert seit: Apr 2010
Beiträge: 361
Bedankt: 1.743
|
Eine Beispieldatei würde wahrscheinlich helfen...
Du willst ein Tabellenblatt das so aussieht?
Code:
| A | B | C |
--|-----------|----------------------|-------------------------------------|
1 | Kundennr. | Anzahl Herstellernr. | Rechnungsbetrag für diese Kundennr. |
2 | | | |
Dann wäre VBA nicht notwendig, wie ja auch eitch schon geschrieben hat.
|
|
|
Die folgenden 2 Mitglieder haben sich bei tomcrswer bedankt:
|
|
05.07.16, 15:45
|
#6
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
Also... angenommen deine Daten stehen in Tabelle1 (Beschriftung:Kundennummer Zelle A1, Rechnungsbetrag aktuell Zelle N1). Die Werte beginnen ab Zeile 2.
Auswertung ist dann auf Tabelle2 (Beschriftung: Kundennummer Zelle A1, Herstellungsnummer Zelle B1, Rechnungsbetrag Zelle C1)
Code:
Formeln in Tabelle2:
A2
=MIN(Tabelle1!A2:A1000)
A3 und herunterkopieren
=WENN(MAX(Tabelle1!A$2:A$1000)=MAX(A$2:A2);"";KGRÖSSTE(Tabelle1!A$2:A$1000;ZÄHLENWENN(Tabelle1!A$2:A$1000;">"&A2)))
B2 und herunterkopieren
=WENN(ISTZAHL(A2);ZÄHLENWENN(Tabelle1!A$2:A$1000;A2);"")
C2 und herunterkopieren
=WENN(ISTZAHL(A2);SUMMEWENN(Tabelle1!A$2:A$1000;A2;Tabelle1!N$2:N$1000);"")
Edit: So ginge es auch, weil die Formeln Text sowieso ignorieren.
Aber man muss sich da sicher sein. Vorteil: die komplette Spalte wird berücksichtigt...
A2
=MIN(Tabelle1!A:A)
A3 und herunterkopieren
=WENN(MAX(Tabelle1!A:A)=MAX(A$2:A2);"";KGRÖSSTE(Tabelle1!A:A;ZÄHLENWENN(Tabelle1!A:A;">"&A2)))
B2 und herunterkopieren
=WENN(ISTZAHL(A2);ZÄHLENWENN(Tabelle1!A:A;A2);"")
C2 und herunterkopieren
=WENN(ISTZAHL(A2);SUMMEWENN(Tabelle1!A:A;A2;Tabelle1!N:N);"")
Die Kundennummer muss hierbei aber eine Zahl sein. Ist ausgelegt für Zeile 2 bis 1000. Für die Herstellungsnummer habe ich die Häufigkeit der Kundennummer genommen; sollte ja dasselbe ergeben.
P.S. als kleinen Test könntest du auf Tabelle2 noch irgendwo zwei Summen berechnen. Die sollten "günstigstenfalls" identisch sein...
Code:
alco z.B. in D2
=SUMME(C:C)
D3
=SUMME(Tabelle1!N:N)
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
Die folgenden 2 Mitglieder haben sich bei eitch100 bedankt:
|
|
05.07.16, 21:04
|
#7
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Die Tabelle sollte am besten im Ursprungszustand bleiben.
Und ein Makro wär deswegen besser, weil es Personen erstellen sollen, die nicht immer firm in Formeln sind.
Schonmal Danke für eure Mühe! ��
E: hier habe ich die Datei mal hochgeladen: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Auf Mappe 1 ist ein Auszug der Tabelle und auf Mappe 2 soll das Ergebnis in dieser Form raus kommen.
|
|
|
06.07.16, 10:50
|
#8
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
Also doch in derselben Mappe (Datei) auf einem neuen Tabellenblatt. Ich dachte, es soll in einer neuen Datei gemacht werden? Ein Makro macht aber doch keinen Sinn, wenn es mit Formel genauso geht. Oder verstehe ich etwas falsch?
Warum wurde ab Zeile 3 fixiert? sind da nicht normalereweise nochmal die Überschriften?
Edit: hier habe ich es dir mal in deiner hochgeladenen Datei angepasst...
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
Folgendes Mitglied bedankte sich bei eitch100:
|
|
06.07.16, 12:11
|
#9
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Ja das Ergebnis sollte auf einem neuen Tabellenplatz angezeigt werden, sorry wegen des falschen Ausdrucks.
Die Fixierung kann man momentan vernachlässigen, aber da hast du natürlich Recht.
Ich habe so eine ähnliche Liste bereits in Verwendung mit einem Makro aber ich kriege das nicht auf die neue Tabelle abgebildet.
Ein Makro finde ich besser da mit einem Klick bzw einer Tastenkombination alles erledigt ist und somit keine Fehler entstehen können.
|
|
|
06.07.16, 12:44
|
#10
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
E:
Sorry Doppelpost
|
|
|
06.07.16, 13:02
|
#11
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
Zitat:
Zitat von cunster
Ein Makro finde ich besser da mit einem Klick bzw einer Tastenkombination alles erledigt ist und somit keine Fehler entstehen können.
|
ein Makro ist mit Sicherheit fehleranfälliger als die Formellösung. Formeln sind nämlich dynamisch; soll heißen, wenn du z.B. in Tabelle 1 etwas änderst, wie z.B. eine neue Spalte einfügst, macht das der Formel nichts. Makros sind in der Regel nicht so programmiert (was nicht heißt, dass es nicht geht)...  Das kannst du ja mal testen, in dem du in deiner Datei mit Makro auf dem Tabellenblatt mit den Quelldaten vor Spalte A eine neue Spalte einfügst. Ich könnte wetten, dass das Makro dann nicht mehr das gewünschte Ergebnis liefert...
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
06.07.16, 13:19
|
#12
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Das glaube ich dir 
Die ausgangstabelle ist immer gleich vom Layout.
Mein Problem ist, dass ich mir dies Makro nicht bauen kann.
|
|
|
06.07.16, 15:06
|
#13
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
dafür brauchst du VBA. Ich könnte dir das in VBA lösen, aber es bringt dir keinen Vorteil und man müsste die Originaldatei auch ändern. Möglicherweise ist ein Makro "cooler", aber ansonsten ist es unnötig...
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
Folgendes Mitglied bedankte sich bei eitch100:
|
|
06.07.16, 15:46
|
#14
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Zitat:
Zitat von eitch100
dafür brauchst du VBA. Ich könnte dir das in VBA lösen, aber es bringt dir keinen Vorteil und man müsste die Originaldatei auch ändern. Möglicherweise ist ein Makro "cooler", aber ansonsten ist es unnötig... 
|
E:
Wieso müsste man die Originaldatei ändern?
Wenn die Datei so bleiben könnte und man das Ergebnis mittels Makro so bekommt wie es in der Tabelle angegeben, wäre es ein Traum
Kannst du den Traum wahr werden lassen?
|
|
|
06.07.16, 17:24
|
#15
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
Naja der Code für das Makro muss ja nun irgendwo gespeichert werden. Man könnte ihn natürlich auch in einer neuen Mappe speichern und von dort ausführen. Aber dann muss ich per Code auf das Dateisystem zugreifen und da muss ich mich erst wieder reinfinden, weil ich sowas auch nimmer so oft mache. Oder man müsste immer den richtigen Dateinamen angeben, auf den man zugreift... Habt ihr echt noch Office 2003 laufen oder früher?
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
Folgendes Mitglied bedankte sich bei eitch100:
|
|
06.07.16, 19:06
|
#16
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Der Code für das Makro wird doch in die persönliche Arbeitsmappe (persnl) abgelegt und gespeichert. Den Personen die das machen sollen, wird das ebenfalls so eingespielt; so hatte ich mir das vorgestellt.
Ja Office 2003 ist unser System :-/
|
|
|
07.07.16, 09:59
|
#17
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
Nun gut, ich habe ja die Testdatei und werde es dort mal umsetzen. Ich habe heute allerdings (vermutlich) wenig Zeit. Von daher kann es etwas dauern. Möchtest du es per Tastenkombination (wenn ja welche, also STRG+?) oder per Button auf dem Tabellenblatt?
Soll der Code die Werte selbst berechnen oder soll der Code einfach die Formeln einfügen?
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
Folgendes Mitglied bedankte sich bei eitch100:
|
|
07.07.16, 10:16
|
#18
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Danke dir!
Mach dir kein Stress.
STRG + h wäre gut.
Ich hatte mich gestern vertan. Excel 2007 ist hier vorhanden.
|
|
|
07.07.16, 10:17
|
#19
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Danke dir!
Mach dir kein Stress.
STRG + h wäre gut.
Ich hatte mich gestern vertan. Excel 2007 ist hier vorhanden.
|
|
|
07.07.16, 11:01
|
#20
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
Zitat:
Zitat von eitch100
Soll der Code die Werte selbst berechnen oder soll der Code einfach die Formeln einfügen?
|
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
07.07.16, 12:59
|
#21
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Zitat:
Zitat von eitch100
|
Oh selbst berechnen bitte.
|
|
|
08.07.16, 14:18
|
#22
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
mit Strg+h wird auf Blatt 2 die Tabelle erzeugt. Das ist so gemacht, dass die Kundennummern immer in Zeile 3 starten, der Rechnungsbetrag in Spalte N steht, die Tabellenblätter heißen 1 und 2 und am Ende quasi nochmal Text in Form der Überschriften ist. Im Code in den oberen Zeilen kann man die jeweiligen Startzeilen, Spalten oder Balttnamen anpassen.
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Und... ich übernehme für die Richtigkeit keinerlei Gewähr...
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
Folgendes Mitglied bedankte sich bei eitch100:
|
|
08.07.16, 19:53
|
#23
|
Newbie
Registriert seit: Feb 2013
Beiträge: 83
Bedankt: 3
|
Danke dir!
Ich kann mir das erst nächste Woche angucken. Ich gucke mir das denn an. Danke für deine Mühe!
Könntest du mir den VBA Code auch hier posten?
Würde den denn in meine persönliche Mappe importieren.
|
|
|
12.07.16, 14:47
|
#24
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.407
Bedankt: 4.793
|
Ich habe dir doch die Datei hochgeladen. Der Code ist in Modul1...
Und bedenke, ich bin bei weitem kein Profi und mein Programmierstil ist vielleicht zweifelhaft, aber es funktioniert...  Beim "Kundennumern aussortieren" habe ich gar einen fremden Code genommen und nur angepasst.
Code:
Sub Makro1()
'
' Makro1 Makro
'
' Tastenkombination: Strg+h
'
Set quelle = Sheets("1") 'name des blattes mit quelldaten
Set ziel = Sheets("2") 'name des blattes der ausgabe
sz = 3 'erste zeile der kundennummern auf blatt 1
ss = 1 'spalte der kundennummern blatt 1
k = quelle.Cells(65000, ss).End(xlUp).Row - 1 'letzte zeile der kundennummern auf blatt 1 (-1 weil die letzte zelle text ist und keine kundennummer)
r = 14 'spalte des rechnungsbetrages auf blatt 1
z = 9 'erste zeile ausgabe kundennummer auf blatt 2
s = 3 'erste spalte ausgabe kundennummer auf blatt 2
'eventuell alte daten auf blatt 2 löschen
ziel.Range("A1:Z65000").ClearContents
'kundennummern aussortieren
Dim werte As New Collection
For Each c In quelle.Range("A" & sz & ":A" & k).Cells
schondrin = False
For Each v In werte
If v = c.Value Then schondrin = True
Next
If Not schondrin Then werte.Add c.Value
Next
For i = 1 To werte.Count
ziel.Cells(z - 1 + i, s) = werte(i)
Next
'herstellnummern und beträge
m = ziel.Cells(65000, 3).End(xlUp).Row 'letzte zeile der kundennummern auf blatt 2
For l = z To m
For i = sz To k
If quelle.Cells(i, 1).Value = ziel.Cells(l, s).Value Then
hsnr = hsnr + 1
betr = betr + quelle.Cells(i, r).Value
End If
Next i
ziel.Cells(l, s + 1).Value = hsnr
ziel.Cells(l, s + 2).Value = betr
hsnr = 0
betr = 0
Next l
End Sub
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr.
().
|