Clever-Excel-Forum

Normale Version: Hilfe für Formulierung von WENN-Funktion
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich möchte für eine Lagerverwaltungsoftware die Fachhöhe aller Lagerplätze unseres Lagers berechnen. Ich bin schon recht weit gekommen, jetzt hänge ich aber an der Formulierung der letzten Funktion fest.

In meinem Dokument stehen in Spalte A die Lagerplatznummern. In Spalte B die bisher errechneten Fachhöhen. Ich konnte allerdings immer nur für den letzten Lagerplatz einer Regalebene die Fachhöhe berechnen. Nun möchte ich diesen Wert für alle Lagerplätze derselben Regalebene angezeigt bekommen. Die Regalebene ist durch die letzten beiden Ziffern der Lagerplatznummer definiert.

Bisher habe ich folgende Formel, die aber nicht funktioniert:

=WENN(LINKS(A:A;5)&RECHTS(B:B;2)=LINKS(A:A;5)&RECHTS(B:B;2)B:B<>0; B:B<>0;" ")

Ich will damit sagen: Wenn die ersten fünf und die letzten 2 Ziffern einer beliebigen Lagerplatznummer identisch sind mit den ersten fünf und den letzten 2 Ziffern der Lagerplatznummer, bei der der Wert in Spalte B ungleich null ist, dann soll der entsprechende Wert aus Spalte B, der ungleich null ist, ausgegeben werden, sonst soll das Feld leer bleiben.

Ich will den Wert aus Spalte B auf alle Felder oberhalb dieses Wertes verteilen, in denen bisher noch Null steht.

Vielleicht habe ich mich auch verrannt und es gäbe eine ganz andere Lösung?

Danke und Gruß,
Yadi
Hola,

mach dir z.B. in D2 folgende Hilfsformel die du nach unten ziehst:


Code:
=LINKS(A2;5)&RECHTS(A2;2)


Dann:


Code:
{=MAX(WENN((LINKS(A2;5)&RECHTS(A2;2)=$D$2:$D$128)*($B$2:$B$128>0);$B$2:$B$128))}


Achtung: die {} nicht mit eingeben, sondern die Formel mit Strg-Shift-Enter abschließen.

Gruß,
steve1da
Hallo,

oder so:

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCD
1LagerplatznummerFachhöhe ZwischenschrittFachhöhe final 
202-03-01-010210210
302-03-02-010210210
402-03-03-010210210
502-03-04-010210210
602-03-05-010210210
702-03-06-010210210
802-03-07-010210210
902-03-08-010210210
1002-03-09-01210210210

ZelleFormel
C2=SUMMENPRODUKT((LINKS(A:A;5)=LINKS(A2;5))*(RECHTS(A:A;2)=RECHTS(A2;2))*(B:B<>0);B:B)
D2{=WENN(B2>0;B2;INDEX(B3:$B$400;VERGLEICH(WAHR;(B3:$B$400<>0);0)))}
Achtung, Matrixformel enthalten!
Die geschweiften Klammern{} werden nicht eingegeben.
Verlassen Sie den Zelleneditor mit Strg+Shift + Enter, statt Enter alleine.
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

oder mit einem Makro:


Code:
Option Explicit


Sub ausfuellen()
Dim loa As Long
Dim lob As Double
Dim loletzte As Long
lob = 0
loletzte = Cells(Rows.Count, 1).End(xlUp).Row
Application.EnableEvents = False
Application.ScreenUpdating = False
For loa = loletzte To 2 Step -1
    If Cells(loa, 2) <> 0 Then
        lob = Cells(loa, 2)
    Else
        Cells(loa, 2) = lob
    End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Hallo steve1da,

vielen Dank für deine Formel! Es hat gut geklappt! Jetzt wüsste ich nur gerne, ob ich die auch auf die richtige Datei mit ca. 25.000 Zeilen, zu denen noch einige dazukommen werden, übertragen kann? Ich kann dann ja schlecht das letzte Feld in Spalte D in die Formel eingeben, oder?

Gruß,
Yadi
Hallo BoskoBiati,

vielen Dank für das Makro!!! Ich kenne mich leider damit nicht wirklich aus. Kann ich das aus deinem Eintrag in meine Datei übernehmen und aktivieren? Wenn ja, wie? Auch, wenn die richtige Datei etwa 25.000 Zeilen enthält?

Gruß,
Yadi
Hola,

einfach den Bereich entsprechend anpassen. Wobei ich nicht weiß, ob bei 25000+x Zeilen das ganze nicht zu langsam wird.

Gruß,
steve1da
Hallo BoskoBiati,

ich habe deine Formel für C2 ausprobiert, aber da wird nur eine Fehlermeldung angezeigt???
Hallo,

bei 25000Zeilen werden alle Matrixformeln mit Sicherheit den Rechner mit Sicherheit sehr verlangsamen. Das Makro ist auch nicht besonders schnell. Evtl. eine Hilfssspalte.

Welcher Fehler kommt bei der Formel in C2????

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCD
1LagerplatznummerFachhöhe ZwischenschrittFachhöhe final 
202-03-01-010210 
302-03-02-010210 
402-03-03-010210 
502-03-04-010210 
602-03-05-010210 
702-03-06-010210 
802-03-07-010210 
902-03-08-010210 
1002-03-09-0121021010

ZelleFormel
C2=WENN(B2=0;INDEX(B:B;MIN(D3:$D$30000));B2)
D2=WENN(B2>0;ZEILE();"")
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Hallo Edgar,

es erscheint der Fehler #Wert!

Gruß,
Yadi
Hallo,

dann zeige mal Deine Formel und die Tabelle, denn der Fehler dürfte nicht vorkommen.
Seiten: 1 2