Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
528to532
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
528to532
528to532
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Werte einlesen

Werte einlesen
11.12.2004 13:15:17
michael
Hallo,
ich suche in einer Tabelle per MAcro nach einander nach bestimmten Werten z.B. 30, 20, 15, 10, 7, 5 zu suchen.
In einer Schleife werden nach einander nach diesen Werten gesucht. Nur wie bring ich einer Schleife bei, nacheinander nach bestimmzen vorgegebenen Werten zu suchen.
Bisher habe ich diese vorgegebenen Werte in eine Hilfstabelle geschrieben.
Ich suche aber eine Lösung, bei der diese Werte innerhalb des Macros stehen.
Kann ich innerhalb eines Macros irgendwie eine Tabelle/Liste positionieren aus der nacheinander die Werte ausgelesen werden.
Danke und Gruß
Michael Schneider

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte einlesen
11.12.2004 13:26:04
Josef
Hallo Michael!
Als Ansatz:

Sub suchen_mehrfach()
Dim rng As Range
Dim sArray As Variant
Dim n As Integer
sArray = Array(30, 20, 15, 10, 7, 5) 'die gesuchten Daten
For n = 0 To UBound(sArray)
Set rng = Worksheets("Tabelle1").Cells.Find(sArray(n))
If Not rng Is Nothing Then
MsgBox rng.Address
End If
Next
End Sub

Code eingefügt mit: Excel Code Jeanie
Gruß Sepp
Anzeige
AW: Werte einlesen
michael
Hallo Sepp,
danke für deine Antwort!
lässt sich das Array auch nur teilweise abarbeiten?
soll heißen: das Macro durchläuft meine Tabelle und sucht nach der 30. Diese werte werden markiert. Sind eine bestimmte Anzahl 30-ger in der Tabelle kann die Schleife aufhören, ansonsten geht die suche weiter bis die Summe von 30-ger, 20-ger usw einen bestimmten Wert überschreitet.
Grüße und Dank
Michael
AW: Werte einlesen
11.12.2004 13:44:35
Josef
Hallo Michael!
Wie sollen die Fundstellen markiert werden?
Wie hoch soll die Summe sein?
Wie soll die Summe ausgegeben werden?
Gruß Sepp
AW: Werte einlesen
michael
HAllo Sepp,
die Fundstellen bekommen eine Spalte nach rechts (P8) ein x. In einer Hilfstabbelle am Rand ist eine Wenn-Abfrage die prüft =wenn(istleer(p8)=falsch;O8;""). Die Summe von O8:O500 soll dann größer 90 sein, diese steht in O1.
Es darf aber nicht nach direktenm Erreichen der 90 oder größer abgebrochen werden, sondern erst wenn alle Werte mit Z.B. 30 markiert wurden.
Wird die 90 nicht überschritten wird vollständig nach der 20 gesucht die Summe geprüft usw.
DAnke
Michael
Anzeige
AW: Werte einlesen
11.12.2004 14:15:00
Josef
Hallo Michael!
Ganz verstehe ich nicht was du willst, aber probier mal.

Sub suchen_mehrfach()
Dim rng As Range
Dim wks As Worksheet
Dim sArray As Variant
Dim n As Integer
Dim sFirst As String
Dim mySum As Double
Set wks = Worksheets("Tabelle3") 'Tabellenname anpassen!
sArray = Array(30, 20, 15, 10, 7, 5) 'die gesuchten Daten
wks.Range("P8:P65536").ClearContents
For n = 0 To UBound(sArray)
Set rng = wks.Range("O8:O65536").Find(sArray(n))
If Not rng Is Nothing Then
sFirst = rng.Address
Do
rng.Offset(0, 1) = "x"
mySum = mySum + rng
Set rng = wks.Range("O8:O65536").FindNext(rng)
Loop While rng.Address <> sFirst
End If
If mySum >= wks.[O1] Then
wks.[P1] = mySum
Exit Sub
End If
Next
End Sub

Code eingefügt mit: Excel Code Jeanie
Gruß Sepp
Anzeige
AW: Werte einlesen
michael
HAllo Sepp,
vielen Dank für die ausführliche Hilfe.
Ich muss hier mal die Arbeit unterbrechen - melde mich später nochmal
Danke!!
Michal
AW: Werte einlesen
michael
Hallo Sepp,
bist du zufällig wieder online? Ich komme leider erst heute wieder dazu an meinem Problem weiter zu arbeiten.
Ich habe dank deiner Hilfe mein Macro zum Laufen gebracht. Ich habe jedoch nur einige Zeilen von dir dafür verwendeet.
Es besteht aus 2 Schleifen die den ersten Wert aus dem Array (1. SChleife) ausliest und dan Zeile für Zeile nach Werten sucht die Größer bzw. gelich diesem Wert ist (2. Schleife). In der Spalte dahinter setzt dann das MAcro ein x. Einige Spalten dahinter wird über iene Wenn-Bedingung auf IstLeer geprüft ob die Zelle ein x enthält und wenn ja den Wert aus der Zelle links davon übernommen. Die so übernommen Werte ergeben eine Summe.
DAs Macro durchläuft nun solange das Array als SChleife bis die Summe einen bestimmten Wert übersteigt. So weit so gut...
Das Unschöne ist nur dass jede SChleife doch ganz schön lange dauert und meist nach dem 3. od. 4. Durchgang meine Bedingung erfüllt ist.
DA ich von deinem Macro nicht alles verstehe, frage ich mich ob dein MAcro auch Zeile für Zeile die Tabelle abarbeitet ähnlich wie meine SChleife, die die Zeilenzahl immer um eins erhöht oder ob alle Zeilen mit:
Set rng = wks.Range("O8:O65536").Find(sArray(n))
If Not rng Is Nothing Then
sFirst = rng.Address
Do
rng.Offset(0, 1) = "x"
mySum = mySum + rng
Set rng = wks.Range("O8:O65536").FindNext(rng)
Loop While rng.Address sFirst
auf einmal durchsucht werden können.
Wird mit mysum die Werte vor dem x saldiert, sodass ich keine Hilfsspalte mit der wenn-Abfrage baruche?
Vielleicht kannst du mir nochmal helfen
Michael
Anzeige
AW: Werte einlesen
michael
Hallo Sepp,
bist du zufällig wieder online? Ich komme leider erst heute wieder dazu an meinem Problem weiter zu arbeiten.
Ich habe dank deiner Hilfe mein Macro zum Laufen gebracht. Ich habe jedoch nur einige Zeilen von dir dafür verwendeet.
Es besteht aus 2 Schleifen die den ersten Wert aus dem Array (1. SChleife) ausliest und dan Zeile für Zeile nach Werten sucht die Größer bzw. gelich diesem Wert ist (2. Schleife). In der Spalte dahinter setzt dann das MAcro ein x. Einige Spalten dahinter wird über iene Wenn-Bedingung auf IstLeer geprüft ob die Zelle ein x enthält und wenn ja den Wert aus der Zelle links davon übernommen. Die so übernommen Werte ergeben eine Summe.
DAs Macro durchläuft nun solange das Array als SChleife bis die Summe einen bestimmten Wert übersteigt. So weit so gut...
Das Unschöne ist nur dass jede SChleife doch ganz schön lange dauert und meist nach dem 3. od. 4. Durchgang meine Bedingung erfüllt ist.
DA ich von deinem Macro nicht alles verstehe, frage ich mich ob dein MAcro auch Zeile für Zeile die Tabelle abarbeitet ähnlich wie meine SChleife, die die Zeilenzahl immer um eins erhöht oder ob alle Zeilen mit:
Set rng = wks.Range("O8:O65536").Find(sArray(n))
If Not rng Is Nothing Then
sFirst = rng.Address
Do
rng.Offset(0, 1) = "x"
mySum = mySum + rng
Set rng = wks.Range("O8:O65536").FindNext(rng)
Loop While rng.Address sFirst
auf einmal durchsucht werden können.
Wird mit mysum die Werte vor dem x saldiert, sodass ich keine Hilfsspalte mit der wenn-Abfrage baruche?
Vielleicht kannst du mir nochmal helfen
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige