Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Hilfe für Formulierung von WENN-Funktion
#1
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


Angehängte Dateien
.xlsx   Frage_Excelforum.xlsx (Größe: 10,61 KB / Downloads: 5)
Antworten Top
#2
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
Antworten Top
#3
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
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Sofortmassnahme
Antworten Top
#4
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
Antworten Top
#5
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
Antworten Top
#6
Hola,

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

Gruß,
steve1da
Antworten Top
#7
Hallo BoskoBiati,

ich habe deine Formel für C2 ausprobiert, aber da wird nur eine Fehlermeldung angezeigt???
Antworten Top
#8
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
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#9
Hallo Edgar,

es erscheint der Fehler #Wert!

Gruß,
Yadi
Antworten Top
#10
Hallo,

dann zeige mal Deine Formel und die Tabelle, denn der Fehler dürfte nicht vorkommen.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste