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

nächste "nicht-leere" Zelle in Matrix

nächste "nicht-leere" Zelle in Matrix
21.04.2020 11:35:46
Thorsten
Liebe Forumsmitglieder,
Ich habe das Problem, dass ich an verschiedenen Stellen innerhalb einer Matrix (hellgrün im Testfile) die nächstgelegene befüllte Stelle innerhalb der Matrix suche. Dabei darf die gefundene Zelle nie eine Zeilen- oder Spaltenüberschrift(blauer Hintergrund) sein und MUSS einen weißen Hintergrund haben. (auch zuvor befüllte grüne Zellen dürfen nicht gefunden werden)
Sobald diese Zelle gefunden wurde, sollten im Optimalfall die korrespondierenden Zeilen- und Spaltenüberschriften(blauer Hintergrund) übergeben werden.
Um das ganze zusätzlich kompliziert zu machen, ist die Matrixgröße ebenfalls völlig flexibel. Die befüllten Zellen sind immer woanders und die grünen Stellen ebenfalls.
Das heißt der Code muss zunächst die (variable) Matrix nach einer grünen Stelle durchsuchen und anschließend die nächstgelegene weiße befüllte Zelle finden.
Eventuell lassen sich auch Abstände für Schrittfolgen definieren, aber da liege ich weit über meinem mathematischen und VBA-technischen Niveau. Die genaue Abfragereihenfolge ist mir nicht allzu wichtig. Wichtig ist nur einen möglichst nahe gelegenen Wert zu finden.
Testfile:
https://www.herber.de/bbs/user/136928.xlsx
Ich hoffe, das war verständlich erklärt. Vielen Dank im Voraus für eure Hilfe und beste Grüße
Thorsten

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nächste "nicht-leere" Zelle in Matrix
21.04.2020 12:06:34
Daniel
Sorry ich verstehe nicht.
Das Fängt schon mit dem Begriff Matrix an.
In Excelsprech ist eine Matrix ein rechteckiger Zellbereich sus mehreren Zeilen und Spalten. Das passt nicht bei dir.
Dann willst du innerhalb einer hellgrünen Matrix eine weiße Zelle suchen... wie soll das gehen?
Wenn die Matrix grün ist, sind alle ihre Zellen grün, da kann es innerhalb keine weiße Zelle geben.
Gruß Daniel
AW: nächste "nicht-leere" Zelle in Matrix
21.04.2020 12:51:28
Thorsten
Servus Daniel,
Das war vielleicht missverständlich ausgedrückt. Die STELLE innerhalb der Matrix ist hellgrün. Man könnte sie aber auch Zelle nennen... Die Matrix ist eine rechteckige Fläche und zwar alles zwischen den blauen Zeilen- und Spaltenüberschriften. Innerhalb dieser Matrix soll ausgehend von jeder der hellgrünen Stellen die nächste weiße Zelle mit Inhalt gefunden werden. Dafür müsste man dem Code aber mitteilen, was ausgehend von einer Zelle näher oder weiter weg ist. Die rote Zelle ist vielleicht auch irreführend, da habe ich mir eine der hellgrünen herausgenommen um zu erläutern, dass in diesem Beispiel ausgehend von dieser Zelle gesucht werden soll.
verschiedenen Stellen innerhalb einer Matrix (hellgrün im Testfile) hier waren mit hellgrün die Stellen und nicht die Matrix selbst gemeint. Missverständlich zu lesen.
Liebe Grüße
Thorsten
Anzeige
AW: nächste "nicht-leere" Zelle in Matrix
21.04.2020 12:54:07
Thorsten
Servus Daniel,
Das war vielleicht missverständlich ausgedrückt. Die STELLE innerhalb der Matrix ist hellgrün. Man könnte sie aber auch Zelle nennen... Die Matrix ist eine rechteckige Fläche und zwar alles zwischen den blauen Zeilen- und Spaltenüberschriften. Innerhalb dieser Matrix soll ausgehend von jeder der hellgrünen Stellen die nächste weiße Zelle mit Inhalt gefunden werden. Dafür müsste man dem Code aber mitteilen, was ausgehend von einer Zelle näher oder weiter weg ist. Die rote Zelle ist vielleicht auch irreführend, da habe ich mir eine der hellgrünen herausgenommen um zu erläutern, dass in diesem Beispiel ausgehend von dieser Zelle gesucht werden soll.
verschiedenen Stellen innerhalb einer Matrix (hellgrün im Testfile) hier waren mit hellgrün die Stellen und nicht die Matrix selbst gemeint. Missverständlich zu lesen.
Liebe Grüße
Thorsten
Anzeige
AW: nächste "nicht-leere" Zelle in Matrix
21.04.2020 13:44:14
Daniel
Hi
probier mal folgenden Code, passend für deine Beispieldatei.
dort wo die farben zugewiesen werden, musst du jeweils eine Zelle angeben, die die passende Farbe hat,
Farbe1: die grünen Zellen
Farbe2: die weißen Zellen
diese Zellen können auch standardisierte Zellen außerhalb des Bereichs sein oder du gibst falls bekannt den RGB-Wert direkt an.
die Bereichsauswahl erfolgt über die Angabe der linken oberen Zelle, die Größenermittlung automatsich anhand der Ausdehnung der Überschirften.
das Ergebnis wird unterhalb der Tabelle ausgebeben, in der ersten Spalte die Koordinaten der grünen Zellen, in der zweiten Spalte die Koordinaten mit den Zellen mit dem geringsten Abstand (Schrittweite mit Cursortasten, bei gleichem Abstand werden beide Zellen angegeben.
Sub test()
Dim Bereich As Range
Dim Zelle1 As Range, Zelle2 As Range
Dim K1 As String, K2 As String
Dim Farbe1 As Long, Farbe2 As Long
Dim Ab As Long
Dim Min As Long
Dim zErg As Long
Dim erg As String
Farbe1 = Range("B2").Interior.Color
Farbe2 = Range("A1").Interior.Color
Set Bereich = Cells(1, 1).CurrentRegion
zErg = Bereich.Row + Bereich.Rows.Count + 2
For Each Zelle1 In Bereich
If Zelle1.Interior.Color = Farbe1 Then
zErg = zErg + 1
Cells(zErg, Bereich.Column) = Intersect(Bereich.Rows(1), Zelle1.EntireColumn) & _
"\" & Intersect(Bereich.Columns(1), Zelle1.EntireRow)
Min = 9 ^ 9
For Each Zelle2 In Bereich.SpecialCells(xlCellTypeConstants)
If Zelle2.Row  Bereich.Row And Zelle2.Column  Bereich.Column Then
If Zelle2.Interior.Color = Farbe2 Then
Ab = Abs(Zelle1.Row - Zelle2.Row) + Abs(Zelle1.Column - Zelle2.Column)
If Ab 
Gruß Daniel
Anzeige
AW: nächste "nicht-leere" Zelle in Matrix
21.04.2020 14:45:33
Thorsten
Hallo Daniel,
Ich hab das ausprobiert und er zeigt tatsächlich interessante Ergebnisse an. Vielen Dank schon mal dafür. Ich muss jetzt noch testen, ob man in deinem Ergebnis irgendwie gewisse Wegrichtungen priorisieren kann. Vielleicht kommt da demnächst noch eine Rückfrage, sobald ich verstanden habe, wie dein Code das bewerkstelligt hat.
Viele Grüße und vielen Dank!
Thorsten
AW: nächste "nicht-leere" Zelle in Matrix
21.04.2020 15:35:58
Daniel
Hi
Wenns ne Wegerichtung-Priorisierung geben soll, müsste man die aus dem Verhältnis der Positionen zueinander ableiten (Zeile1 < oder > oder = Zeile2, analog für die Spalte).
Daraus könnte man 8 Richtungen ableiten, denen man je nach Priorität einen Zahlenwert < 1 zuordnet und zum Abstand hinzu addiert, dann geht die Richtungspriorität in die Auswertung mit ein.
Gruß Daniel
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige