Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
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

Dokument nach Werten durchsuchen

Dokument nach Werten durchsuchen
02.11.2021 07:25:05
Andre
Hallo VBA Experten,
ich habe ein Dokument in dem in den Spalten B bis I Zahlen von 300 bis 100 runterlaufen. Ich muss da jedes mal alle Werte zwischen 250 und 150 rauskopieren und würde das gerne mit einem Makro umsetzten. Mit meinen VBA Kenntnissen bekomme ich aktuell leider nur eine Zeile oder eine Spalte nach einem bestimmten Wert durchsucht. Mit dem Makro soll also ein Bereich markiert werden in dem in der obersten Zeile der größte Wert kleiner als 250 ist und in der untersten Zeile der größte Wert gerade kleiner als 150 ist.
Ich hab mal ein Beispiel Dokument angehängt und wäre über jede Hilfe für einen Code dankbar.
Beispiel-Dokument: https://www.herber.de/bbs/user/148894.xlsx
Viele Grüße,
Andre

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage
02.11.2021 08:58:22
hary
Moin
Du schreibst:
"..der größte Wert kleiner als 250 ist und in der untersten Zeile der größte Wert gerade kleiner als 150" ist.
Sind diese zu pruefenden Werte nur in SpalteB oder koennen diese irgendwo in dem Bereich stehen?
gruss hary
AW: Deine Frage hatte sich mir auch gestellt ...
02.11.2021 09:18:09
neopa
Hallo hary,
... aber ich hätte angenommen, dass Andre nicht nur die Werte aus Spalte B meint, was ja dann verhältnismäßig einfach wäre.
Da ich mich aus VBA-Lösungen mangels Kenntnissen heraushalte, hätte ich Andre auch weiter gefragt, ob nicht auch eine Formellösung ausreichend wäre.
Den maßgeblichen Bereich dafür hatte ich mit folgenden Formelteil eingegrenzt:
=INDEX(B:B;AGGREGAT(15;6;ZEILE(B2:B99)/(B2:I99&lt250);1)):INDEX(I:I;AGGREGAT(14;6;ZEILE(B3:B99)/(B2:I99&gt150);1))
Gruß Werner
.. , - ...
Anzeige
AW: Deine Frage hatte sich mir auch gestellt ...
02.11.2021 10:07:56
Yal
Hallo zusammen,
@Werner: ich kann bei Dir nicht erkennen, ob diese Formel eine "Kopie" der Daten oder nur zu einer Markierung dient.
Eine Markierung, also ein Formel, die in einer Hilfsplate abgelegt wird, um den gültigen Bereich hervorzuheben, kann auch mit

=(MIN(B2:I2)>150)*(MAX(B2:I2)
erreicht werden. Die Multiplikation ist hier equivalent zu einem logischen "Und", das Ergebnis ist 0, ausserhalb Bereich 150-250, oder 1, im Bereich 150-250.
NUR: die Erfassung der Formel mit shift+Strg+Enter abschliessen. Es fügen sich {...}, was aus der Formel eine Matrixformel macht.
Darauf dann einen erweiterte Filterung legen, um die Daten irgendwoanders zu haben.
In so ein Fall kann man auch mit Power Query leichter/einfacher vorankommen als mit VBA.
VG
Yal
Anzeige
AW: nein keine Markierung sondern ...
02.11.2021 10:21:20
neopa
Hallo Yal,
... mit meiner Formel wird die Matrix des Bereiches abgebildet, mit den ich die Werte mit Hilfe von INDEX() hätte herauskopieren können. Wobei ja mE auch noch eindeutig geklärt ist, wie diese kopiert werden sollen, z.B. 1:1 als Teilbereich in einen anderen Tabellenblattbereich oder z.B. abwärts sortiert in einen Spaltenbereich oder ...
Gruß Werner
.. , - ...
AW: Dokument nach Werten durchsuchen
03.11.2021 06:58:58
Andre
Hi, danke erstmal für eure Antworten.
Um das vielleicht nochmal ein bisschen genauer zu beschreiben: Ich möchte nicht alle Werte zwischen 150 und 250 aus dem Dokument kopieren. Ich möchte quasi, dass jede Zeile meines Dokuments durchsucht wird und sobald ein Eintrag der Zeile kleiner als 250 wird, soll ab hier abwärts markiert werden bis alle Einträge der Zeile kleiner als 150 sind.
Vielleicht machts das irgendwie klarer.
Viele Grüße,
Andre
Anzeige
AW: Dokument nach Werten durchsuchen
03.11.2021 08:12:44
hary
Moin Andre
Probier mal es mal so:
Wenn ich es richtig verstanden habe.

Sub Bereich_kopieren()
Dim Bereich As Range, Zelle As Range
Dim erste As String, zweite As String
Set Bereich = Range("B2:B13") '--Bereich anpassen
For Each Zelle In Bereich
If Evaluate("=(MAX(" & Zelle.Resize(1, 8).Address & ")>250)*(MIN(" & Zelle.Resize(1, 8).Address & ")>250)") = 0 Then
If erste = "" Then erste = Zelle.Address
End If
If Evaluate("=(MAX(" & Zelle.Resize(1, 8).Address & ")
gruss hary
AW: Dokument nach Werten durchsuchen
03.11.2021 14:09:46
Yal
Hallo zusammen,
@Hary:
_ wenn das Min > 250, dann ist das Max auch > 250
_ Worksheetfunction erlaubt ein leichteren Umgang mit den Objekte als Evaluate
_ warum die Adresse der Zelle merken, wenn man auf die Zelle selbst referenzieren kann? (wobei Vorteil hier minimal)
_ .Copy ist drin aber wohin?
Anbei mein Vorschlag als Denkanstoss, aber Hary hatte schon alles drin. Die A1 als Destination muss natürlich angepasst werden:

Sub Bereich_kopieren()
Dim Z As Range
Dim erste As Range
Dim zweite As Range
Const Bereich = "B2:B13"
For Each Z In Range(Bereich)
If erste Is Nothing Then
If WorksheetFunction.Min(Z.Resize(1, 8)) > 250 Then Set erste = Z
End If
If zweite Is Nothing Then
If WorksheetFunction.Max(Z.Resize(1, 8))  250", "") & IIf(zweite Is Nothing, "Zeilen 
VG
Yal
Anzeige
AW: und warum denn keine bedingte Formatierung?...
03.11.2021 10:56:34
neopa
Hallo Andre,
... dazu müsste die von Yal vorgeschlagene Formel jedoch noch etwas korrigiert werden. Und zwar für den Bereich B2:I99 folgende bedingte Formatierungsformel: =(MAX($B2:$I2)&lt250)*(MAX($B1:$I1)&gt150)
Gruß Werner
.. , - ...
AW: @Werner
03.11.2021 11:11:28
hary
Moin Werner
Im ersten Thread hatte Andre geschrieben:
"Ich muss da jedes mal alle Werte zwischen 250 und 150 rauskopieren und würde das gerne mit einem Makro umsetzten"
Aber jetzt hat Andre ja beide Moeglichkeiten.
gruss hary
AW: genau ...
03.11.2021 11:42:27
neopa
Hallo hary,
...das hat man bei Fragestellern leider (zu) oft, dass sie erst nach einer manchmal sogar nach mehreren Beiträgen sich genau überlegen, was sie denn wirklich anstreben. Für seine gestrige Beschrieibung hatte ich gestern eine Bereichsermittlung vorgenommen, aus der man mit INDEX() die Werte auch herauskopieren hätte könnte. Heute früh hat er nun seine Aufgabenstellung neu formuliert und dafür habe ich ihn nun eben eine bedingte Formatierung aufgezeigt.
Gruß Werner
.. , - ...
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige