Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
192to196
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
192to196
192to196
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

verschachtelte Suchroutine

verschachtelte Suchroutine
22.12.2002 11:07:12
stefan
Hallo X(l)perten,

ich suche nach einer Vereinfachung für eine Schleife.
Es gibt zwei Spalten mit Werten. In der Spalte A liegen Werte, die jeweils mit den Werten der Spalte B verglichen werden sollen.
Soweit wäre die Schleife:

do while cells(zeilenzähler1, spalteA)<>""
do while cells(zeilenzähler2, spalteB)<>""
if cells(zeilenzähler1, spalteA)=cells(zeilenzähler2,spalteB)
then ...
zeilenzähler2=zeilenzähler2+1
loop
zeilenzähler1=zeilenzähler1+1
loop

Nun soll in der Spalte B jedoch ein Untervergleich stattfinden.
Der erste Wert aus Spalte B, der kleiner ist als der Vergleichswert in Spalte A soll mit den übrigen Werten in Spalte B verglichen werden und die Summe der beiden Werte soll überprüft werden, ob sie = dem Wert aus Spalte A ist.
Die Schleife lautet also:

do while cells(zeilenzähler1, spalteA)<>""
do while cells(zeilenzähler2, spalteB)<>""
if cells(zeilenzähler1,spalteA)> cells(zeilenzähler2,spalteB) then
zeilenzähler3=zeilenzähler2+1
do while cells(zeilenzähler3, spalteB)<>""
if cells(zeilenzähler1, spalteA)= _
cells(zeilenzähler2,spalteB)+cells(zeilenzähler3,spalteB) _
then ...
zeilenzähler3=zeilenzähler3+1
loop
end if
zeilenzähler2=zeilenzähler2+1
loop
zeilenzähler1=zeilenzähler1+1
loop

Nun möchte ich in Spalte B jedoch weitere Untervergleiche anstellen, so dass nicht nur die Summe
zweier Werte sondern die Summe aus 3, 4 bzw. beliebig vieler mit dem Vergleichswert aus Spalte A verglichen werden.
Dafür würde jedoch die Verschachtelung immer tiefer werden und für jede Stufe käme eine do while...loop Schleife hinzu.

Bisher habe ich also für jede Stufe eine Subroutine geschrieben, die entsprechend der Suchtiefe entsprechend viele Schleifen enthält.

Hat jemand eine Idee, wie man den Code verändern könnte, um die Verschachtelungstiefe in einer einzigen Routine dynamisch zu gestalten ?

Also nach dem Muster:

for suchtiefe = 1 to AnzahlX
do while cells(zeilenzähler1, spalteA)<>""
[do while cells(zeilenzähler2,spalteB)]* Suchtiefe

Hoffe, ich konnte mich verständlich machen; wäre für jede Idee dankbar
Gruss
stefan



2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachfragen
30.12.2002 10:48:21
Martin Beck
Hallo Stefan,

eine Nachfrage zum zu lösenden Problem.

Ich verstehe die Aufgabe so, daß für jede Zahl in Spalte A geprüft werden soll, ob sich diese Zahl als Summe der Zahlen in Spalte B darstellen läßt, wobei die Zahl der Summanden zwischen 1 und n liegen kann (n <= alle Zahlen in Spalte B).

Beispiel:

In A1 steht 9.

Zulässige Lösungen (u.a.)
1, 2, 6;
2, 5, 1;
9;
2, 7;


Wären auch Wiederholungen zulässig? Also z.B.
3, 3, 3;
2, 2, 2, 3;


Sind die Zahlen in Spalte A und insb. in Spalte B aufsteigend sortiert?

Wie und wo soll das Ergebnis des Vergleichs ausgegeben werden?

Gruß
Martin Beck

Anzeige
Re: Nachfragen
30.12.2002 21:12:19
Stefan
Hallo Martin,

deine Lösungen sind alle zulässig, es soll lediglich die erste Kombination (einschliesslich Wertwiederholungen), die in der Summe passt, gefunden, markiert und für weitere Suchvergleiche gesperrt werden.

Zahlenbereiche können ohne weiteres sortiert sein (was auch zu empfehlen ist, um den Suchbereich eingrenzen zu können).

Das Ergebnis des Suchvergleichs soll in einer weiteren Spalte mittels einer aufsteigenden Ziffer ausgegeben werden (also Zelle "A1" = 9 , Zelle "B2" = 5, Zelle "B3"=4 wird in Celle "C1:C3" jeweils mit einer 1 markiert, Zelle "A4" = 8, Zelle "B5"=8 wird in Cellen "C4:C5" mit einer 2 markiert etc.

Solltest Du Ideen hierzu haben, würde ich mich freuen, weiteres zu hören.

Besten Gruss
Stefan

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige