Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
532to536
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
532to536
532to536
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabelle durchsuchen

Tabelle durchsuchen
16.12.2004 15:04:45
michael
Hallo,
innerhalb einer Tabelle soll eine Spalte nacheinander auf vorgegebene Werte durchsucht werden. Wird ein Wert größer oder Gleich dem vorgegebenen Wert gefunden wird in der Zelle dahinter ein x eingefügt. Alle Werte die ein x dahinter haben sollen dann auch noch zusammengezählt werden.
Ich habe das mit 2 Schleifen ineinander gelöst. Die Werte stehen in einem array.
In der 1. Schleife wird aus dem Array ein Wert ausgelesen, die 2. geht Zeile für Zeile die Spalte entlang (Zeilenzähler +1). Am Ende wird die Summe gebildet. Ist die Summe kleiner als ein vorgegebener Wert wird der nächste wert aus dem array gewählt usw.
Da das Durchlaufen der Schleifen doch recht lange dauert frage ich mich ob es auch eine Möglichkeit gibt, mit der man ohne Schleife sofort alle Werte markiert bekommt, die die größer oder gleich Bedingung erfüllen.
Danke für jede Hilfe oder Idee
Michael

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle durchsuchen
16.12.2004 15:33:15
Mario
Also Dein Problem klingt so, als bräuchte man dafür eine Schleife. Anders geht es nicht, es muß ja eine Liste von Werten elementweise verarbeitet werden. Wenn es eine Möglichkeit gäbe, alle Werte "sofort" markiert zu bekommen, wäre dies irgendeine Funktion, die in Wirklichkeit auch nichts anderes tun würde, als intern irgendeine Schleife abzuarbeiten. Möglicherweise läßt sich aber Dein Algorithmus optimieren, dafür müßtest Du ihn posten.
AW: Tabelle durchsuchen
michael
HAllo Mario,

Sub anteil_auswerten()
Dim sArray As Variant
Dim m As Integer
Dim n As Integer
sArray = Array(200, 100, 40, 20)
Range("P6:P500").ClearContents
n = Range("B6").End(xlDown).Row
For m = 0 To UBound(sArray)
For i = 1 To n - 5
If Cells(5 + i, 15).Value >= sArray(m) Then
Cells(5 + i, 15).Offset(0, 1) = "x"
End If
Next i
If Range("S6").Value > 90 Then
Exit Sub
Else
End If
Next m
End Sub

Die Summe wird in S6 gebildet. Die Summanden ergeben sich mit
=WENN(ISTLEER(P6)=FALSCH;O6;"")
mit istleer wird geprüft ob die Markierung (x) gesetzt wurde, wenn ja dann wird der Wert übernommen. In S6 ist dann sie Summe(V6:V500)
Danke und Gruß
Michael
Anzeige
AW: Tabelle durchsuchen
16.12.2004 16:00:09
Mario
hm, das sieht eigentlich optimal aus, da wird man nicht mehr viel machen können. wenn es eine sehr lange tabelle ist, könnte die formel zeit kosten.
vielleicht sollte man
=WENN(ISTLEER(P6)=FALSCH;O6;"")
auch noch in VBA realisieren. ich kenne mich mit den internen vorgängen von excel leider nicht so gut aus, aber es könnte ja sein, daß beim zugriff auf die jeweilige zelle nicht bloß auf den value zugegriffen wird, sondern daß die formel darin mit jedem zugriff neu berechnet wird. vielleicht packst du mal einfach eine schleife davor, die diese WENN-formel ersetzt.
AW: Tabelle durchsuchen
michael
Danke für deine Hilfe,
ich hab die Summenbildung im Macro integriert (keine Rechnung mehr in der Tabelle) - ist aber auch nicht schneller. Es war aber auf jedenfall einen Versuch wert, verwundert hätte es mich nicht wenn es schneller geworden wäre...
Nochmals Danke
Gruß
Michael
Anzeige
AW: Tabelle durchsuchen
16.12.2004 15:55:57
Heinz
Hallo Michael,
wenn Du nur die Summe Beträge haben willst, die größer oder gleich einem bestimmten Wert ist, verwende folgende Array-Formel:
{=SUMME(WENN(A3:A21G=$B$2;A3:A21))}
(anstatt dem G gehört ein größer-Zeichen (Probleme wegen html)
Gruß
Heinz
AW: Tabelle durchsuchen
michael
Hallo Heinz,
in $B$2 steht der "Grenzwert"?
in A3:A21 die Werte die ich prüfen und ggf. saldieren möchte?
d.h ich kann dann nur eine G= Bedingung abfragen. Jedoch nicht nacheinader eine 2. oder 3. bis der Grenzwert überschritten wurde?
Danke
Michael
NEIN
16.12.2004 17:55:32
Heinz
Hallo Michael,
das hast du missverstanden. Das G habe ich nur anstelle des Größer-Zeichens gesetzt, da die Formel hier sonst wegen der html-Tags nicht angezeigt werden könnte.
{=SUMME(WENN(A3:A21Größer-Zeichen=$B$2;A3:A21))}
Die Aufgabe war ja, dass alle jene Werte, die einen bestimmten Grenzwert übberschreiten oder ihm gleich sind summiert werden sollten. Das funktioniert mit dieser Funktion einwandfrei.
Gruß
Heinz
Anzeige
jetzt reden wir aneinder vorbei...
michael
das mit dem GrößerGleichZeichen hab ich verstanden...
nur
was steht in $B$2? ein einzelner Wert oder kann ich dort wie auch immer von einander getrennt mehrere Werte eintragen?
Wie geb ich die Formel mit {} ein?
Danke Michael
AW: jetzt reden wir aneinder vorbei...
16.12.2004 18:23:12
Heinz
Hallo Michael,
in B2 steht natürlich nur ein (Grenz)Wert. Es scheint mir aber logisch zu sein, dass ich eine Menge von Werten nur auf einen Grenzwert hin überprüfen kann und dann eben eine Summe erhalte. Wenn es mehrere sein sollen und daher auch mehrere unterschiedliche Summen, dann müsste man eben die Formel in mehrere Zellen (untereinander?) schreiben.
Oder ich habe dich (noch immer) falsch verstanden.
Die {} schreibt man nicht sondern fügt sie ein, indem man die Zelle statt mit Enter mit Strg+Shift+Enter abschließt.
Gruß
Heinz
Anzeige
...so gehts!
michael
... Danke Heinz,
hab nun kapiert wie dein Lösungsvorschlag auf mein Problem anzuwenden ist - und wie schnell es geht, vor allem der Trick mit der Eingabe :-)
Gruß
Michael
wie nennt man so eine Formel mit { }...
michael
hallo Heinz,
vielleicht kannst du mir noch kurz diese frage beantworten.
... bzw. unter was für einem Stichwort finde ich dazu etwas in der xls-Hilfe?
Danke
Michael
AW: wie nennt man so eine Formel mit { }...
16.12.2004 20:19:53
Heinz
Hallo Michael,
diese Funktionen nennt man Array- oder Matrixfunktionen.
Auf der Seite von WF kannst du davon einiges sehen
http:/www.excelformeln.de
Gruß
Heinz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige