Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
936to940
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
936to940
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Matrix in Matrix suchen (und ersetzen)

Matrix in Matrix suchen (und ersetzen)
21.12.2007 09:30:51
David
Hallo zusammen,
kann mir evtl. jemand sagen, wie man folgende Excel-Formel in VBA umsetzt:
=WENN(ISTNV(VERGLEICH(H9;User1;0));FALSCH;WAHR)
Zum Hintergrund:
Ich möchte in einer Matrix alle Werte durchlaufen lassen, und wenn die Bedingung (siehe oben) Wahr ist, soll der Zellinhalt durch einen bestimmten Wert ersetzt werden. Die Schleife etc. habe ich soweit fertig.
Mein Problem ist nun, dass ich den jeweiligen Wert einer Zelle nun nicht mit nur EINEM bestimmten vergleichen muss, sondern ob dieser in einer zweiten (kleineren) Matrix enthalten ist.
Als vereinfachtes Beispiel dargestellt:
in der Matrix
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16
soll jeder Wert mit dieser hier
05
10
12
verglichen werden
und wenn der Wert einen Treffer hat, soll er ersetzt werden durch das Wort "Treffer".
Für konstruktive Hilfe wäre ich äußerst dankbar.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Matrix in Matrix suchen (und ersetzen)
21.12.2007 09:47:00
Josef
Hallo David,
meinst du so?
Sub CompareMatrix()
Dim a As Variant, b As Variant
Dim l As Long, i As Integer, n As Integer

a = Range("A1:D4")
b = Array("05", "10", "12")

For l = 1 To UBound(a, 1)
    For i = 1 To UBound(a, 2)
        If Not IsError(Application.Match(a(l, i), b, 0)) Then a(l, i) = "treffer"
    Next
Next

Range("A1:D4") = a
End Sub

Gruß Sepp

Anzeige
AW: Matrix in Matrix suchen (und ersetzen)
21.12.2007 09:56:23
David
Mhh, könnte grundsätzlich funktionieren, bzw. darauf könnte ich aufbauen. Ein Problem sehe ich jetzt nur in der Suchmatrix. Diese mit festen Werten zu definieren, wird nicht funktionieren.
Die betreffende Datenmatrix hat eine Größe von ca. 20000x20000 Zellen, in jeder Zelle steht eine (einmalige) Zahl. Die Suchmatrix besteht nur aus einer Spalte, diese kann aber bis zu 400 Werten enthalten. Diese kann ich ja nicht alle einzeln in das Makro schreiben, zumal die Suchen/Ersetzen-Aktion nacheinander mit mehreren Suchmatrizen durchlaufen soll.
Diese Suchmatrix müsste sozusagen variabel sein, wenn das geht, würde ich im Dokument vorhandene Namen verwenden, die ich vorher definieren würde.

Anzeige
AW: Matrix in Matrix suchen (und ersetzen)
21.12.2007 09:59:00
Josef
Hallo David,
und wo ist das Problem?
Sub CompareMatrix()
Dim a As Variant, b As Variant
Dim l As Long, i As Integer, n As Integer

a = Range("matrix_")
b = Range("suchmatrix_")

For l = 1 To UBound(a, 1)
    For i = 1 To UBound(a, 2)
        If Not IsError(Application.Match(a(l, i), b, 0)) Then a(l, i) = "treffer"
    Next
Next

Range("matrix_") = a
End Sub

Gruß Sepp

Anzeige
AW: Matrix in Matrix suchen (und ersetzen)
21.12.2007 10:08:00
David
Klasse!
Hätte nicht gedacht, das das soo "einfach" ist. Leider kriege ich VBA nur mit Makro-Rekorder hin und da bekommt man halt nicht alle Befehle zu sehen bzw. ich habe oft Probleme mit der Syntax und der richtigen Reihenfolge der (Teil)Befehle.
Ich habe deinen Vorschlag gerade an einer kleinen Testmatrix ausprobiert und es geht. Das ist genau das, was ich brauche.
Eine Frage noch:
Der Sinn der letzten Zeile Range("matrix_") = a erschließt sich mir nicht ganz. Wozu ist diese Zeile gut?

AW: Matrix in Matrix suchen (und ersetzen)
21.12.2007 10:12:56
Josef
Hallo David,
mit

a = Range("matrix_")


wird der Tabellenbereich in das Array eingelesen und mit


Range("matrix_") = a


wird das Array wieder in die Zellen zurückgeschrieben.

Gruß Sepp

Anzeige

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige