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

Quasi statische Kreuztabelle, Spalten in Zeilen jedoch berechnet

Frage Microsoft Microsoft Office

Mitglied: samalson

samalson (Level 1) - Jetzt verbinden

09.08.2010 um 09:59 Uhr, 4451 Aufrufe, 19 Kommentare

Hallo Leute
bin neu hier im Forum, sehr informativ, habe bisher viele Anregungen gefunden. Nun hab ich ein Problem, bei dem ich einfach nicht weiterkomme.

Aus einer recht umfangreichen csv-Datei habe ich die relevanten Daten importiert und aufbereitet. Enthalten sind Artikel mit ihren verschiedenen Lieferdaten. Nun interessiert mich aber nicht die Stückzahl pro Datum, sondern die gesamte Menge pro Lieferwoche. Gut, KW aus Datum ist klar, auch die Begrenzung auf die interessierenden KW (heutige KW plus 8). Ich muss nun aber die Mengen aus den Spalten mit den korrelierenden KW in die erste Zeile des zugehörigen Artikels schreiben. Nicht mehr, einfach statisch. RS ist quasi auch eine KW, nur aufsummiert.
Vielleicht sieht man es besser hier: 42d7c1706605da63ed1c22f40d26cf82 - Klicke auf das Bild, um es zu vergrößern

Also im Moment fehlt mir ein venünftiger Plan, vielleicht bin ich einfach zu dumm. Bin über jeden Ansatz froh.

Grüsse @all
Sam
Mitglied: mathe172
09.08.2010 um 10:24 Uhr
Hallo samalson!

Also wenn ich dich richtig verstehe müssen alle Liefermengen von KW 31-38 in ein Feld kommen?
Was heisst es wenn keine KW dasteht? Einfach ignorieren?
Bei der Sache mit RS blick ich noch nicht ganz durch... Was käme in das Feld E5? Kommt etwas rein was und wieso? Wieso nicht?

Wäre über Erklärung dankbar (vielleicht versteh ich es dann gut genug um dir zu helfen)

Mathe172
Bitte warten ..
Mitglied: bastla
09.08.2010 um 10:35 Uhr
Hallo samalson und willkommen im Forum!

Eigentlich ja eine typische Anwendung für "SUMMEWENN()" - also etwa für F5:
=SUMMEWENN($C$5:$C$19;F$1;$B$5:$B$19)
Für die weiteren KW lässt sich die Formel kopiren, für die Artikel natürlich nicht ohne Anpassung der Bereiche ...

Grüße
bastla
Bitte warten ..
Mitglied: samalson
09.08.2010 um 10:58 Uhr
Hallo Mathe172

die jeweiligen Artikel enthalten das Lieferdatum. Jetzt können aber mehrere Lieferungen trotz unterschiedlichem Datum trotzdem in eine Lieferwoche fallen. Mein macro rechnet das auch aus und weist dann eben 2 mal die KW 31 aus. Die Liefermengen müssen dann addiert und in die Spalte 31 in Höhe der ersten Zeile des jeweiligen Artikels eingetragen werden. Diese Vorgehensweise gilt für alle nichtleeren KW. Der Eintrag RS wird gesetzt, wenn das Lieferdatum vor dem heutigen liegt, daher können das also nur R.ückS.tände sein. Trotzdem werden sie ja mit den KW gleichbehandelt. Nur aus Platzgründen hab ich die KW32-37 ausgeblendet.
In das Feld E5 käme also der RS des Artikels 2126548, wenn es denn einen gäbe. Dieser Artikel ist aber nicht mit einem RS versehen.
Die Artikel-Datum-Kombinationen, die nicht in das KW-RS-Raster fallen, dienen im weiteren für längerfristige Planungen und werden in einem gesonderten AB verdichtet, verbleiben also als Zeile.
Bitte warten ..
Mitglied: samalson
09.08.2010 um 11:02 Uhr
Hallo bastla

Ersteinmal Danke euch beiden (mathe172) für die schnelle Reaktion.
Nun zu SUMMEWENN: Schön wäre es ja, aber keiner weiss genau, wieviele Lieferdaten in eine KW fallen, noch ob überhaupt in der nächsten oder doch erst in der übernächsten Woche relevante Daten anliegen.

Gruss
Samalson
Bitte warten ..
Mitglied: bastla
09.08.2010 um 11:14 Uhr
Hllo samsalon!

Ich hatte schon befürchtet, dass "SUMMEWENN()" zuviel "Handarbeit" erfordern würde - daher eine (eher schütter kommentierte ) Alternative in VBA:
01.
Sub SummeWenn() 
02.
AbZeile = 2 'Daten ab Zeile 2 
03.
AbSpalte = 6 'Wochensummen ab Spalte F 
04.
 
05.
Dim KWSumme() 
06.
ReDim KWSumme(53) 
07.
Z = AbZeile 
08.
ArtAkt = Cells(Z, "D").Value 
09.
ArtZuletzt = ArtAkt 
10.
ArtStart = AbZeile 'Beginn der Artikelbruppe (für Eintragung der Summen) merken 
11.
Do While ArtAkt <> "" 
12.
    If ArtAkt <> ArtZuletzt Then 'neuer Artikelbereich 
13.
        'Summen eintragen 
14.
        Cells(ArtStart, "E") = KWSumme(0) 
15.
        S = AbSpalte 
16.
        i = Cells(1, S) 
17.
        Do While i <> "" 
18.
            Cells(ArtStart, S) = KWSumme(i) 
19.
            S = S + 1 
20.
            i = Cells(1, S) 
21.
        Loop 
22.
        ReDim KWSumme(53) 'Summen löschen 
23.
        ArtStart = Z 
24.
    End If 
25.
     
26.
    KW = Cells(Z, "C").Value 
27.
    If KW = "" Then KW = -1 
28.
    If KW = "RS" Then KW = 0 
29.
    Menge = Cells(Z, "B").Value 
30.
    If KW >= 0 And KW <= UBound(KWSumme) Then KWSumme(KW) = KWSumme(KW) + Menge 
31.
     
32.
    Z = Z + 1 
33.
    ArtZuletzt = ArtAkt 
34.
    ArtAkt = Cells(Z, "D").Value 
35.
Loop 
36.
 
37.
'Summen eintragen 
38.
Cells(ArtStart, "E") = KWSumme(0) 
39.
S = AbSpalte 
40.
i = Cells(1, S) 
41.
Do While i <> "" 
42.
    Cells(ArtStart, S) = KWSumme(i) 
43.
    S = S + 1 
44.
    i = Cells(1, S) 
45.
Loop 
46.
 
47.
End Sub
[Edit] Eintrag für "RS" erfolgte in falscher Zeile und Summen des letzten Artikel wurden nicht eingetragen - ist korrigiert [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: mathe172
09.08.2010 um 11:55 Uhr
Hallo zusammen!

Wie wärs mit:
01.
=WENN($C4<>$C5;SUMMEWENN($C:$C;"=" & F$1;$B:$B);)
für F5? Liesse sich af alle Felder kopieren(ziehen), auch auf die wo nichts stehen darf.
Vielleicht weiss einer von euch wie man die "0" raus bekommt wenn das "wenn" nicht erfüllt wird.

Mathe172

//Edit: Sollte auch für das mit RS also Spalte E gehen
Bitte warten ..
Mitglied: bastla
09.08.2010 um 12:02 Uhr
@mathe172
Vielleicht weiss einer von euch wie man die "0" raus bekommt wenn das "wenn" nicht erfüllt wird.
Wenn's nur das wäre:
=WENN($C4<>$C5;SUMMEWENN($C:$C;"=" & F$1;$B:$B);"")
BTW: Da eine Abfrage auf "=" Default ist, kannst Du das Gleichheitszeichen auch weglassen:
=WENN($C4<>$C5;SUMMEWENN($C:$C;F$1;$B:$B);"")
Grüße
bastla
Bitte warten ..
Mitglied: mathe172
09.08.2010 um 12:05 Uhr
Zitat von bastla:
@bastla
=WENN($C4<>$C5;SUMMEWENN($C:$C;"=" & F$1;$B:$B);"") 
> 
Danke

Mathe172
Bitte warten ..
Mitglied: samalson
09.08.2010 um 13:06 Uhr
Hallo Bastla,

vielen Dank für die Hilfe, war schon bisschen geknickt. Jetzt ist Freude gross, wieder was gelernt.
Danke nochmals.

Gruss
samalson
Bitte warten ..
Mitglied: samalson
09.08.2010 um 13:08 Uhr
Hallo Mathe117

Dir auch vielen Dank, werde Deine Lösung ebenfalls probieren.

Gruss
samalson
Bitte warten ..
Mitglied: bastla
09.08.2010 um 14:27 Uhr
Hallo samalson!
Jetzt ist Freude gross, wieder was gelernt.
So soll's ja auch sein ...

Grüße
bastla
Bitte warten ..
Mitglied: samalson
18.08.2010 um 12:59 Uhr
Hallo Bastla
Darf ich vielleicht noch mal nachfragen?
Habe die Kalenderwochen zuordnen können, das klappt auch alles. Jetzt müsste ich Deine Routine nur noch anpassen können, damit ich auch die Mengen bezüglich des Lieferdatums monatsweise ausgeben kann. Dazu habe ich das Lieferdatum auf den ersten eines Monats normiert und will nun, beginnend mit dem aktuellen Monat, die Liefermenge aufsummiert ausgeben. Also alles wie beim ersten Problem, nur sinds jetzt nicht errechnete Kalenderwochen, sondern eben Datumsangaben. Kann ich deine Routine überhaupt dazu verwenden?

Gruss Sam
Bitte warten ..
Mitglied: bastla
18.08.2010 um 13:09 Uhr
Hallo samalson!

Wenn Du analog zur "KW" einfach "Monat" (nicht als Datum, sondern als Monatszahl) verwendest, sollte der Code im Prinzip unverändert weiter funktionieren ...

Grüße
bastla
Bitte warten ..
Mitglied: samalson
18.08.2010 um 13:26 Uhr
Hallo Bastla!

Meinst Du so?

01.
 
02.
Sub SummeWennMonat() 
03.
04.
05.
Dim MO 
06.
Dim i 
07.
Dim fertigTeilSpalte As Integer 
08.
Dim rueckStandSpalte As Integer 
09.
Dim normLieferDatum As Integer 
10.
Dim liefMengeSpalte As Integer 
11.
Dim MoJahrSumme() 
12.
ReDim MoJahrSumme(1112) 
13.
14.
fertigTeilSpalte = 8    '1 gleich "A", 2 gleich "B" usw. 
15.
rueckStandSpalte = 11 
16.
normLieferDatum = 6 
17.
liefMengeSpalte = 5 
18.
AbZeile = 2 'Daten ab Zeile 2, in der ersten steht ja die Überschrift 
19.
AbSpalte = 12 'Monatssummen ab Spalte Nr., also Spalte mit zb "Aug 2010" 
20.
21.
Z = AbZeile 
22.
ArtAkt = Cells(Z, fertigTeilSpalte).Value ' der erste aktuelle Artikel zum unterscheiden also Spalt mit zB. "Fertigteile" 
23.
ArtZuletzt = ArtAkt 
24.
ArtStart = AbZeile 'Beginn der Artikelgruppe (für Eintragung der Summen) merken 
25.
26.
' Artikel für Artikel dursuchen 
27.
28.
Do While ArtAkt <> "" 
29.
    If ArtAkt <> ArtZuletzt Then 'neuer Artikelbereich 
30.
        'Summen eintragen 
31.
32.
'        Cells(ArtStart, rueckStandSpalte) = MoJahrSumme(0)   'Spalte steht für "Rückstand" 
33.
'        ===== WIRD JA NICHT GEBRAUCHT 
34.
35.
        S = AbSpalte 
36.
        i = Cells(1, S) 
37.
38.
        ' solange die Tabelle reicht, also die mitlaufende Zelle (hier die erste) nicht leer ist, 
39.
40.
        Do While i <> "" 
41.
            Cells(ArtStart, S) = MoJahrSumme(i) 
42.
            S = S + 1 
43.
            i = Cells(1, S) 
44.
        Loop 
45.
46.
        ' wirf die Monats-Daten in das Monats-Feld 
47.
48.
        ReDim MoJahrSumme(1112) 'Summen löschen 
49.
        ArtStart = Z 
50.
    End If 
51.
    MO = Cells(Z, normLieferDatum).Value        ' Einträge in Spalte "Monat/Jahr" werden geholt 
52.
    If MO = "" Then MO = -1 
53.
54.
'    If MO = "RS" Then MO = 0 ===== WIRD JA NICHT GEBRAUCHT 
55.
56.
    Menge = Cells(Z, liefMengeSpalte).Value     ' Spalte mit "Liefermenge" 
57.
    If MO >= 0 And MO <= UBound(MoJahrSumme) Then MoJahrSumme(MO) = MoJahrSumme(MO) + Menge 
58.
    Z = Z + 1 
59.
    ArtZuletzt = ArtAkt 
60.
    ArtAkt = Cells(Z, fertigTeilSpalte).Value    ' Spalte mit der Artikelkennzeichnung - aktuellen Wert holen 
61.
Loop 
62.
  
63.
'Summen eintragen 
64.
Cells(ArtStart, rueckStandSpalte) = MoJahrSumme(0)   ' eintragen in Spalte "RS" 
65.
S = AbSpalte 
66.
i = Cells(1, S) 
67.
Do While i <> "" 
68.
    Cells(ArtStart, S) = MoJahrSumme(i) ' Monatseinträge  erledigen 
69.
    S = S + 1 
70.
    i = Cells(1, S) 
71.
Loop 
72.
  
73.
End Sub
Bitte warten ..
Mitglied: bastla
18.08.2010 um 13:44 Uhr
Hallo samalson!

Nicht ganz - als MO wird eine Zahl benötigt, genauso für die Spaltenüberschriften ab L12; allerdings könntest Du MO auch aus dem Datum bekommen, indem Du
MO = Month(Cells(Z, "A").Value)
verwendest ...

Das Array für die Monatssummen muss übrigens nicht ganz so groß werden -
ReDim MoJahrSumme(12)
würde es auch tun.
Meine Idee von oben wäre gewesen, einfach die Spalte C auf "Monat" (sowie die Spaltenüberschriften ab F1 auf 1 bis 12) zu ändern und ansonsten den Code völlilg unverändert zu lassen - Du willst ja aber eine Erweiterung der bestehenden Tabelle ...
Bitte warten ..
Mitglied: samalson
18.08.2010 um 14:10 Uhr
Hallo Bastla!

nein, ich muss das in ein neues Tabellenblatt bringen, wäre also keine Erweiterung. Und 1 bis 12 geht nicht so ganz, wäre heute zum Beispiel August bis Juli. Ich könnte also durchaus statt KW die Monatsspalte nehmen, hab ich ja auch schon mit dem normierten Datum gefüllt...
Bitte warten ..
Mitglied: bastla
18.08.2010 um 14:17 Uhr
Hallo samalson!
Und 1 bis 12 geht nicht so ganz, wäre heute zum Beispiel August bis Juli
Na dann eben 8 bis 12 und weiter mit 1 bis 7 - die Monatssumme wird anhand der Zahl in der Überschrift zugeordnet, wobei die Reihenfolge egal ist ...

Versuch es einfach mit der ursprünglichen Datei (samt unverändertem Code) und der zu kopierenden Formel
=MONAT(A2)
in der Spalte C ...

Grüße
bastla
Bitte warten ..
Mitglied: samalson
18.08.2010 um 14:30 Uhr
Hallo bastla!

Mach ich, sag Dir Bescheid.
Herzlichen Dank erstmal.

Gruss
Samalson
Bitte warten ..
Mitglied: samalson
18.08.2010 um 14:54 Uhr
Hallo Bastla!

Klappt soweit prima, ist auch logisch. Nur - habe leider manchmal 2x denselben Monat in untersch. Jahren, muss also das Jahr dazunehmen. Kann ich aus dem formatierten Datum (yymm) einen String machen? So ala Str(cells(...,...).format="yymm") ?

Grüsse
Samalson


PS. Entschuldigung, natürlich einen auswertbaren Integer-Wert, keinen String, dumm von mir ... Also zb. 1008 für August 2010, dann klappts auch mit dem Sortieren...

PS, das zweite: Gelöst, und zwar mit = Right(Year(Cells(zeilenNummerEDI, spalteLieferdatum)), 2) & Format(Cells(zeilenNummerEDI, spalteLieferdatum), "mm")

Nochmals herzlichen Dank an Dich, bastla

Samalson
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Microsoft Office
Excel 2016 anzeige der markierten Spalten (1)

Frage von endurance zum Thema Microsoft Office ...

SAN, NAS, DAS
QNAP Installationsproblem wenn der Client mehre statische IP-Adressen hat (6)

Erfahrungsbericht von StefanKittel zum Thema SAN, NAS, DAS ...

Datenbanken
MySQL: Zwei Spalten in einer View zählen (11)

Frage von Memo66 zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...