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

Matrix einlesen und Wert suchen

Matrix einlesen und Wert suchen
30.10.2008 15:33:00
susi
Hallo Jungs,
ich möchte mir gerne ein kleines Makro schreiben welches mir die tägliche Arbeit erleichtert.
Und zwar habe ich in einer Exceltabelle ein art Übersetzungstabelle erstellt.
Suchwert1 Ergebniswert2 Ergebniswert3
1 a Buchstabe a
2 b Buchstabe b
3 # Raute #
Die Tabelle hatt 3000 Zeilen!
Nun möchte ich mir ein Makro schreiben welches ich starten kann wenn ich ein Bereich markiert habe.
Dieses Makro soll nun nach den Wert Suchwert1 Suchen und mir dann al Kommentar für die Entsprechende Zelle den Ergebniswert2 und den Ergebniswert3 schreiben.
Die Tabelle in eine Matrich zu lesen habe ich hinbekommen. Aber das suchen in der Matrix schaff ich leider nicht.
Kann mir hier vielleicht jemand weiterhelfen?
Liebe Grüße Susi

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

Betreff
Datum
Anwender
Anzeige
AW: Matrix einlesen und Wert suchen
30.10.2008 16:04:00
Beverly
Hi Susi,
eine Möglichkeit (der Wert nach dem gesucht werden soll steht in E1):

Sub array_wert_auslesen()
Dim arrWerte
Dim inPosition As Integer
Dim inSpalte As Integer
If Selection.Columns.Count  3 Then
MsgBox "Bitte 3 Spalten markieren"
Exit Sub
End If
arrWerte = Selection
inPosition = 1
On Error Resume Next
For inSpalte = 1 To UBound(arrWerte)
If arrWerte(inPosition, 1) = Range("E1") Then
MsgBox arrWerte(inPosition, 2) & " " & arrWerte(inPosition, 3)
Exit For
End If
inPosition = inPosition + 1
Next inSpalte
End Sub




Anzeige
AW: Matrix einlesen und Wert suchen
30.10.2008 16:16:00
susi
Hallo Karin,
ich habe es ein bischen umgeschrieben aber es funktioniert wunderbar.
weisst Du zufällig wie ich es schaffe das ich die Matrix nicht bei jeder abfrage einlesen muß?
Liebe Grüße Susi
AW: Matrix einlesen und Wert suchen
30.10.2008 22:38:23
Beverly
Hi Susi,
dimensioniere sie außerhalb des Markos. In dem Fall solltest du den Bereich fest zuweisen.

Option Explicit
Dim arrWerte
Sub array_wert_auslesen()
Dim inPosition As Integer
Dim inSpalte As Integer
If IsEmpty(arrWerte) Then arrWerte = Range("A1:C6")
inPosition = 1
On Error Resume Next
For inSpalte = 1 To UBound(arrWerte)
If arrWerte(inPosition, 1) = Range("E1") Then
MsgBox arrWerte(inPosition, 2) & " " & arrWerte(inPosition, 3)
Exit For
End If
inPosition = inPosition + 1
Next inSpalte
End Sub




Anzeige
AW: Matrix einlesen und Wert suchen
30.10.2008 16:55:00
fcs
Hallo Susi,
Das Sollte eigentlich auch ohne EInlesen der Werte in eine Matrix funktionieren, indem man "einfach" die 1. Spalte mit den Suchwerten nach den Zelle-Werten durchsucht und bei Treffer die Werte aus den beiden Nachbarspalten in den Zellkommentar schreibt.
Wenn du mit der Matrix arbeiten willst, dann muss du in For-Next-Schleifen die Werte prüfen. Diese sind bei vielen Zeilen aber langsamer als die Suchen-Funktion.
Gruß
Franz

Sub Kommentar1()
Dim BereichMatrix As Range
Dim ZelleBereich As Range, ZelleMatrix As Range
Dim wksMatrix As Worksheet
Set wksMatrix = Worksheets("Liste") 'Tabellenblatt mit Übersetzungsliste
'Bereich mit Matrixdaten ermitteln (Zelle A2 bis Ende Liste Spalte C
With wksMatrix
Set BereichMatrix = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 2))
End With
For Each ZelleBereich In Selection
'Zellert in 1. Spalte der Matrix suchen
Set ZelleMatrix = BereichMatrix.Columns(1).Find(What:=ZelleBereich.Value, _
LookIn:=xlValues, lookat:=xlWhole)
If Not ZelleMatrix Is Nothing Then
'Wenn Zell-Wert in Matrix-Spalte gefunden, dann Kommentar einfügen
With ZelleBereich
'Kommentar für Zelle einfügen, wenn noch nicht vorhanden
If .Comment Is Nothing Then
.AddComment
End If
'Kommentarwert mit Zeilenschaltung eintragen
.Comment.Text Text:=ZelleMatrix.Offset(0, 1).Value & vbLf _
& ZelleMatrix.Offset(0, 2).Value, Start:=1
End With
End If
Next
End Sub
Sub Kommentar2()
Dim BereichMatrix As Range
Dim ZelleBereich As Range, lngZeile As Long
Dim wksMatrix As Worksheet
Dim arrSuchmatrix
Set wksMatrix = Worksheets("Liste") 'Tabellenblatt mit Übersetzungsliste
'Bereich mit Matrixdaten ermitteln (Zelle A2 bis Ende Liste Spalte C
With wksMatrix
Set BereichMatrix = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 2))
End With
'Array mit Daten füllen
arrSuchmatrix = BereichMatrix
For Each ZelleBereich In Selection
'Zellwert in 1. Spalte des Matrix suchen
For lngZeile = LBound(arrSuchmatrix) To UBound(arrSuchmatrix)
If arrSuchmatrix(lngZeile, 1) = ZelleBereich.Value Then
'Wenn Zell-Wert in Matrix-Spalte gefunden, dann Kommentar einfügen
With ZelleBereich
'Kommentar für Zelle einfügen, wenn noch nicht vorhanden
If .Comment Is Nothing Then
.AddComment
End If
'Kommentarwert mit Zeilenschaltung eintragen
.Comment.Text Text:=arrSuchmatrix(lngZeile, 2) & vbLf _
& arrSuchmatrix(lngZeile, 3), Start:=1
End With
Exit For
End If
Next
Next
End Sub


Anzeige
AW: Matrix einlesen und Wert suchen
30.10.2008 18:23:04
susi
Hallo Dank Euch für Eure Hilfe.
Mein Makro funktioniert jetzt wunderbar für eine Zelle.
Kann mir vielleicht noch jemand kurz weiterhelfen wie ich es für einen markierten Bereich auf alle gefüllten Zellen anwenden kann?
Danke und liebe Grüße Susi
AW: Matrix einlesen und Wert suchen
31.10.2008 09:21:16
fcs
Hallo Susi,
meine Beispiele bearbeiten einen Zellenbereich, indem alle Zellen des Bereiches nacheinander abgearbeitet werden.
das Grundgerüst:

Sub Kommentar2()
Dim ZelleBereich As Range
'Hier ggf. deine Routine um die Suchmatrix zu erstellen
For Each ZelleBereich In Selection
'ZelleBereich entspricht dann wahrscheinlich der ActiveCell in deinem Makro
Suchwert=ZelleBereich.Value
' ab hier dann deine Routine zum Finden des Suchwerts in der Matrix
if gefunden Then
'dann ab hier deine Routine zum Eintragen des Kommentars
End If
Next
End Sub


Gruß
Franz

Anzeige

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige