Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1072to1076
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
Inhaltsverzeichnis

Spalte nach Wert >10 durchsuchen und Wert ausgeben

Spalte nach Wert >10 durchsuchen und Wert ausgeben
05.05.2009 14:44:46
Ron
Hallo Leute,
ich benötige wieder mal Hilfe bei der Umsetzung einer Idee. Ich habe in einem Tabellenblatt in einer Spalte (A) 20 absteigende Werte in Prozent. In Spalte B habe ich in ganzen Zahlen die Treffer aus meiner Datenbank zugeordnet. Jetzt möchte ich Spalte B von oben nach dem ersten Wert größer 10 durchsuchen und bei Treffer den Wert aus Spalte A (selbe Zeile zurückgeben). Das selbe möchte ich auch von unten machen - also ersten Wert größer 10 suchen und Treffer von links ausgeben. Mit Formeln bin ich nicht so wirklich zu einem Ergebnis gekommen - muß es VBA sein?
Falls ich mich wieder mal blöd ausgedrückt habe - anbei eine Datei, die die Zahlenreihen mal aufzeigt...
https://www.herber.de/bbs/user/61618.xls
Danke Euch schon einmal für Eure Ideen
Grüße
Ron

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

Betreff
Datum
Anwender
Anzeige
mit VBA, hier eine Variante ...
05.05.2009 16:06:29
Matthias
Hallo Ron
Also mit Formel bekommt man das glaube ich nicht hin (ich jedenfalls nicht)
Hier mal mein VBA-Versuch
https://www.herber.de/bbs/user/61623.xls


Code in ein allgem. Modul

Option Explicit
Sub ron_von_Oben()
Dim Lox As Long, rng As Range
Lox = Cells(Rows.Count, 2).End(xlUp).Row
For Each rng In Range("B2:B" & Lox)
If rng.Value > 10 Then
rng.Value = rng.Offset(, -1).Text
Exit For
End If
Next
End Sub

Sub ron_von_Unten() Dim Lox As Long, X As Long Lox = Cells(Rows.Count, 2).End(xlUp).Row For X = Lox To 2 Step -1 If Cells(X, 2) > 10 Then Cells(X, 2) = Cells(X, 1).Text: Exit For Next End Sub


Gruß Matthias

Anzeige
AW: mit VBA, hier eine Variante ...
05.05.2009 17:22:48
Ron
Hallo Matthias,
der Ansatz ist schon recht gut. Kann ich die Prozedur auch nur auf diesen Bereich (B2:B21) festschreiben? In meiner Originaltabelle liegen quasi 5 entsprechende Blöcke untereinander - ich muß die Suchfunktion dann jeweils von b21 von unten beginnen lassen. Die Ausgabe der Werte soll dann in einer Zelle rechts von der gefunden erfolgen. Wo muß ich denn dann Offset(,1) einbringen?
Grüße und danke für Deine Hilfe
Ron
klar kannst Du das festschreiben ...
05.05.2009 19:09:55
Matthias
Hallo
Wenn Du nun doch nach rechts gehst (Offset(,1)), kannst Du ja evtl. doch Formeln benutzen.
Ich blick da jedenfalls grad nicht durch, was Du, wie vorhast.
Zitat:
Kann ich die Prozedur auch nur auf diesen Bereich (B2:B21) festschreiben
Natürlich kannst Du das festmachen.
For X = 21 To 2 Step -1 oder
For Each rng In Range("B2:B21")

Mach mal ein kleines Beispiel. Und zeig mal was Du wo und warum erwartest.
Gruß Matthias
Anzeige
AW: klar kannst Du das festschreiben ...
05.05.2009 19:26:36
Ron
Hallo Matthias,
danke nachmals für Deine Meldung. Evtl. ist mein Wunsch ja wirklich über eine Formel realisierbar. Ziel ist es eigentlich für eine stat. Auswertung den Spread der Masse der Trefferwerte aufzusplitten. Hier noch mal die Excel-Datei, die es besser versinnbildlicht. Kannst Du damit was anfangen?
https://www.herber.de/bbs/user/61626.xls
Liebe Grüße
Ron
noch mal VBA - bin leider kein Formelspezialist
05.05.2009 20:19:48
Matthias
Hallo
Mir fällt nix bessrers ein als das:
https://www.herber.de/bbs/user/61632.xls
Gruß Matthias
Anzeige
AW: noch mal VBA - bin leider kein Formelspezialist
05.05.2009 20:50:15
Ron
Hallo Matthias,
ja, das ist genau der Ansatz, den ich brauche! Vielen Dank für Deine Hilfe und einen schönen Abend!!
Grüße
Ron
AW: noch mal VBA - bin leider kein Formelspezialist
05.05.2009 21:49:47
Ron
Hallo Matthias,
brauche doch noch mal eine kurze Erklärung, da ich mich mit VBA noch nicht so gut auskenne...
Habe jetzt einige Anpassungen vorgenommen. Führt dazu, dass in der C Spalte gesucht und Wert aus B in D ausgegeben werden soll...
Das klappt von oben auch Klasse, nur von unten sucht er weiter in B und gibt Wert in A aus...
Wie muß ich also den Code verstehen?

For Each rng In Range("c25:c44")
If rng.Value > 10 Then
Range("d26") = rng.Offset(, -1)
Exit For
End If
Next
For X = 20 To 2 Step -1
If Cells(X, 2) > 10 Then Range("D43") = Cells(X, 1): Exit For
Next


Ich hatte vermutet, dass "for X=20 to 2 Step-1" den Fokus auf die 2. Spalte richtet - habe aber alles mal spielerisch versucht zu machen (auch mit if cells (x,2))...
Ich bin einfach zu doof für diese Welt :(
Grüße
Ron

Anzeige
If Cells(X, 3) > 10 Then ...
06.05.2009 09:39:52
Matthias
Hallo Ron
for X=20 to 2 Step-1 (sind die abzuarbeitenden Zeilen)
Also von Zeile 20 bis Zeile 2 in Einerschritten also Step-1 (-1 also Rückwärts von unten nach oben
Wenn Du nun die Spalte C prüfen willst musst Du dies anpassen:
vorher: If Cells(X, 2) ... (Die 2 ist Spalte2 also "B")
jetzt musst Du also schreiben: If Cells(X, 3) ... (für Spalte3 also "C").
Den zu durchsuchenden Bereich mußt Du natürlich auch anpassen.
Da jetzt C25:C44 mußt Du die Schleife in Zeile44 starten und bis Zeile25
rückwärts durchlaufen.(Step -1)
Userbild
komplett also so:



For X = 44 To 25 Step -1



If Cells(X, 3) > 10 Then Range("D43") = Cells(X, 2): Exit For



Next


gesucht wird also in Spalte3 nach dem ersten Wert größer 10
Beim 1. Fund wird in D43 der Wert aus Spalte2 eingetragen und mit Exit For die Schleife verlassen.
https://www.herber.de/bbs/user/61636.xls
Gruß Matthias

Anzeige

380 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige