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.

Wennfehler hilft nicht?
#1
Hi,

Die Matrixformel
{=MIN(WENN((Rechnungen!$B$3:$B$13558=$B4);1;50000)*Rechnungen!$D$3:$D$13558)}
rechnet richtig, wenn der bereich 3:13558 mit Daten gefüllt ist. schon eine Leerzeile mehr (3:13559) bringt 00.01.1900

Bei der Max-Formel kann ich den Bereich zukunftssicher auf 20000 erweitern:
{=MAX((Rechnungen!$B$3:$B$20000=$B4)*(Rechnungen!$D$3:$D$20000))}

Wennfehler hilft nicht?
ist ja auch klar, weil Formel bringt dann 0 und das ist kein Fehler
Habs auch schon probiert mit einem Buchstaben anstelle von 50000

Was muss ich tun, oder geht das gar nicht zukunftssicher?
Danke im Voraus
Antworten Top
#2
Hola,


Code:
=MIN(WENN((Rechnungen!B3:B13358=B4)*(Rechnungen!D3:D13358>0);Rechnungen!D3:D13358))

Gruß,
steve1da
Antworten Top
#3
Hallo, es gibt auch DBMIN() oder und DBMAX() als Alternative zur Matrixformel...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#4
Hi

____|_A_|_B_|__C_|_D_|_E_|_F_|
   1|   |   |    |   |   |   |
   2|   |   |    |   |   |   |
   3|   |A  |  10|   |B  |  9|
   4|   |B  |   9|   |   |  3|
   5|   |C  |   8|   |   |   |
   6|   |A  |   7|   |   |   |
   7|   |B  |   6|   |   |   |
   8|   |C  |   5|   |   |   |
   9|   |A  |   4|   |   |   |
  10|   |B  |   3|   |   |   |
  11|   |C  |   2|   |   |   |

F3    {=MAX((B3:B11=E3)*C3:C11)}

F4    {=MIN(WENN((B3:B11=E3);C3:C11;"N"))}
Antworten Top
#5
Moin,

Vielen Dank für die Vorschläge, aber ich bekomme es nicht hin.
Excel rechnet sich einen Wolf und du kannst unten sehen wie langsam die % der Berechnung steigen.

Die Daten werden aus einer anderen Anwendung mittels Hyperlinks aktualisiert und die Datei ist ohne die beiden neuen Spalten schon nervtötend langsam, selbst mit deaktivierten Hyperlinks.

Ich hab mal das anonymisiert.
Ich werde heute mal fragen, ob auch - nur für die beiden neuen Spalten - eine VBA-Lösung in frage kommt. ich denke, das is deutlich schneller, zumal bei meiner jetzigen Min-Formel bei jedem update der Range angepasst werden muss, damit keine Leerzeilen im Bereich sind.

Danke Jockel für den Hinweis DBMIN/DBMAX. Ich bekomme es damit aber auch nicht hin, und ich darf auch keinen Kriterienbereich hinzufügen.

Die Formel von steve1da sieht gut aus, bringt aber 0 wo meine Formel richtig 28.4.17 bringt

Bei der Max-Formel kann ich zukunftssicher den zu erfassenden Bereich auf 20.000 setzen, aktuell sind 13.558 Zeilen gefüllt. 
bei der Min-Formel nicht, da muss ich bislang genau auf den gefüllten Range schauen bzw. jedes Mal nach Aktualisierung die Formel anpassen. 

Und schließlich zurück zum Betreff: Dort wo kein Datum zu finden ist, hätte ich gerne anstelle von Gartenzäunen bzw 00.01.1900 nix oder einen Strich (ALT+0151) drin stehen.

Und ganz Toll wäre, gibt es nur eine Rechnung, dann soll deren Datum in beiden Spalten stehen.

Ich fange jetzt mal für mich mit einer VBA-Lösung an, aber wenn es da schnellere Formeln gäbe, die auch richtig rechnen, interessiert mich das stark, da ich in Formeln noch ned so gut bin.

Danke für Unterstützung


Angehängte Dateien
.xlsx   erster_Umsatz.xlsx (Größe: 350,81 KB / Downloads: 8)
Antworten Top
#6
Moin Wastl,

R5   =WENNFEHLER(1/(1/MIN(WENN(B5=Rechnungen!B1:B40000;Rechnungen!D1:D40000)));"")     '(CSE)
S5   =WENNFEHLER(1/(1/MAX(WENN(B5=Rechnungen!B3:B40000;Rechnungen!D3:D40000)));"")     '(CSE)

Getestet und geht.
Problem in der Bsp. Datei war das Spalte Rechnungen!D noch als Text Vorlag.


Gruß Elex
Antworten Top
#7
Hallo, du kannst doch einfach so tun, oder ..?

Arbeitsblatt mit dem Namen 'Alle Kunden'
RS
2Erster Umsatz DatumLetzter Umsatz Datum
3
428.04.201721.11.2017

ZelleFormel
R4=WENNFEHLER(INDEX(Rechnungen!$D$3:$D$500000;VERGLEICH(B4;Rechnungen!$B$3:$B$50000;0));"")
S4=WENNFEHLER(VERWEIS(2;1/(Rechnungen!$B$3:$B$5000=B4);Rechnungen!$D$3:$D$5000);"")
Verwendete Systemkomponenten: [Windows (32-bit) NT :.00] MS Excel 2013
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
[-] Folgende(r) 1 Nutzer sagt Danke an Jockel für diesen Beitrag:
  • Wastl
Antworten Top
#8
Hei Jungs,

vielen Dank
Zitat:Problem in der Bsp. Datei war das Spalte Rechnungen!D noch als Text Vorlag. 
Das ist leider auch so in der Originaldatei und die von mir gestrickten bzw. aus dem Indernet geholten und umgeschriebenen Formeln hat das nicht gestört. (Daten kommen aus SAP)
Und die Formeln von Jockel stört das auch nicht
So rechnen von beiden beide Formeln fixer als meine, aber die von Elex bringen keine Ergebnisse.

Eine Frage an Jockel: 
deine Formel für R4 findet das erste Vorkommen in der Liste. Bist du dir sicher, dass das immer das kleinste Datum ist? S4=reziprok analog also der Letzte Eintrag zu der Rechnungsnummer?
(nein, habs mit VBA nachgeprüft, isses leider nicht)
:s 

Schau dir mal mit deinen Formeln Zeilen 122-126 an

Hier mal mein VBA (es braucht auf meinem Lapdepp 40 Sekunden)
Code:
Sub erster_umsatz()
Dim Alle_Kunden As Variant
Dim Rechnungen As Variant
Dim Erster_letzter_Umsatz As Variant
Dim letzRechn As Long
Dim AK As Long
Dim RN As Long
Dim Datuum As Date
Dim ReNr As String
Dim Lauf As Long

letzRechn = Sheets("Rechnungen").UsedRange.SpecialCells(xlCellTypeLastCell).Row

Alle_Kunden = Sheets("Alle Kunden").UsedRange.Columns(2)
Rechnungen = Sheets("Rechnungen").UsedRange.Range("B1:D" & letzRechn)
ReDim Erster_letzter_Umsatz(3 To UBound(Alle_Kunden) + 1, 1 To 2)

For AK = 3 To UBound(Erster_letzter_Umsatz)
   Erster_letzter_Umsatz(AK, 1) = "—"
   Erster_letzter_Umsatz(AK, 2) = "—"
Next AK

For AK = 2 To UBound(Alle_Kunden)
   ReNr = Alle_Kunden(AK, 1)
       Lauf = 0
   For RN = 3 To letzRechn
       If Rechnungen(RN, 1) = ReNr Then
           Datuum = Rechnungen(RN, 3)
           If Lauf = 0 Then
               Erster_letzter_Umsatz(AK + 1, 1) = Datuum
               Erster_letzter_Umsatz(AK + 1, 2) = Datuum
               Lauf = Lauf + 1
           Else
               If Datuum > Erster_letzter_Umsatz(AK + 1, 2) Then
                   Erster_letzter_Umsatz(AK + 1, 2) = Datuum
               End If
               If Datuum < Erster_letzter_Umsatz(AK + 1, 1) Then
                   Erster_letzter_Umsatz(AK + 1, 1) = Datuum
               End If
           End If
       End If
   Next RN
Next AK

End Sub
Antworten Top
#9
(08.02.2018, 13:32)Wastl schrieb: Hei Jungs,

vielen Dank
Das ist leider auch so in der Originaldatei und die von mir gestrickten bzw. aus dem Indernet geholten und umgeschriebenen Formeln hat das nicht gestört. (Daten kommen aus SAP)
Und die Formeln von Jockel stört das auch nicht
So rechnen von beiden beide Formeln fixer als meine, aber die von Elex bringen keine Ergebnisse.

Eine Frage an Jockel: 
deine Formel für R4 findet das erste Vorkommen in der Liste. Bist du dir sicher, dass das immer das kleinste Datum ist? S4=reziprok analog also der Letzte Eintrag zu der Rechnungsnummer?
(nein, habs mit VBA nachgeprüft, isses leider nicht)
:s 

Schau dir mal mit deinen Formeln Zeilen 122-126 an
...
Hallo, ich bin davon ausgegangen, dass die Listen sortiert sind... und hatte in der Tat nur die ersten Werte geprüft. Und dabei (richtig) das jeweils erste und letzte Vorkommen ausgeben lassen; dass wie Werte keine Datumswerte (Zahlen) sind spielt hierbei keine Rolle. Bei der von Elex schon... ... dazu hatte er aber auch was geschrieben... Aus Texten kann man nunmal kein Minimum oder Maximum bestimmen...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#10
(08.02.2018, 13:32)Wastl schrieb: So rechnen von beiden beide Formeln fixer als meine, aber die von Elex bringen keine Ergebnisse.

Die Formel bringt schon Ergebnisse. Nur muss auf die ein oder andere Art aus dem Text rechenbare Werte gemacht werden. Geht auch in der Formel wenn du (1* oder --) hinzufügst.
Sortierte Liste und Jörgs Formel sind aber sicher schneller.

R5   =WENNFEHLER(1/(1/MIN(WENN(B5=Rechnungen!B1:B40000;1*Rechnungen!D1:D40000)));"")    '(CSE)
S5   =WENNFEHLER(1/(1/MAX(WENN(B5=Rechnungen!B3:B40000;1*Rechnungen!D3:D40000)));"")    '(CSE)
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • Wastl
Antworten Top


Gehe zu:


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