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

Werte suchen / Namen definieren

Werte suchen / Namen definieren
Sue
Liebe Excel-Gemeinde
Habe mal wieder ein Problem mit Excel.
In Tabelle A stehen von A12 bis A40 diverse Werte (Werte sind nie gleich - eineindeutig).
In Tabelle B stehen von C15 bis C? diverse Werte (die gleich sind wie in Tabelle A, aber mehrmals vorkommen).
Nun möchte ich gerne per VBA in Tabelle B diejenigen Zellen markieren, welche gleiche Werte wie in Tabelle A haben, für den jeweils markierten Bereich soll dann auch noch der Bereich mit dem entsprechenden Wert (Name definieren) definiert werden.
Klar genug umschrieben?
Ich würde mich sehr über eine Info freuen - habe des längeren im Archiv gesucht, aber keine passende Lösung gefunden.
Gerne danke ich Euch
Sue
Nein, leider nicht klar, sondern ...
16.02.2010 20:43:04
Renee
logisch nicht nachvollziehbar, Sue
Aussagen 1+2 sind klar und logisch.
ABER: Damit werden ALLE Werte in Tabelle B markiert, da sie ja alle in A vorkommen!
Was du mit dem markierten Bereich (von-bis?) meinst wird daher wieder unverständlich.
GreetZ Renée
AW: Nein, leider nicht klar, sondern ...
17.02.2010 06:58:07
Sue
Hallo Renee
Bitte entschuldige (entschuldigt), dass ich mich erst jetzt melde - ich hatte bis jetzt keinen WEB-Zugriff.
Noch etwas genauer - siehe File - https://www.herber.de/bbs/user/68054.xls
Tabelle A
Werte von A12 bis A? - eineindeutig - Ende erste leere Zelle
Tabelle B
Werte von C15 bis C? - kommen mehrfach vor, identisch mit Werten aus Tabelle A - Ende erste leere Zelle
Aufgabe
Es sollen "Namen definiert" werden, also Bereiche festgelegt werden (in Tabelle B), welche den Werten der Tabelle A entsprechen.
Also:
1. Wert aus Tabelle A - alle identischen Werte in Tabelle B suchen - Bereich markieren - Namen definieren (entspricht dem 1. Wert aus Tabelle A).
2. Wert aus Tabelle A - alle identischen Werte in Tabelle B suchen - Bereich markieren - Namen definieren (entspricht dem 2. Wert aus Tabelle A).
3. Wert... - solange suchen, bis alle Werte aus Tabelle A (Ende entspricht erste leere Zelle nach A12) durchgesucht sind und in Tabelle B alle gleichen Werte dem entsprechenden Namensbereich zugeordnet sind.
Etwas besser?
Ich grüsse Dich (Euch) und danke herzlich
Sue
Anzeige
AW: Mal als Ansatz, mit vielen pitfalls...
17.02.2010 12:07:07
Renee
Hallo Sue,
Hier mal ein Ansatz-Code (in ein Modul).
Der Code hat verschiedene Schwächen, die daraus hervorgehen, dass deine Spezifikationen immer noch Fragen offen lassen.
1. Die Tabelle A wird ist IMHO unnötig für den Code, das die Aussagen für Tabelle B sagt, dass sowieso nur Werte aus dieser in Tabelle B vorkommen, also wozu noch vergleichen ?
2. Geht davon aus das die mehrfach vorkommenden Werte immer in einem zusammenhängenden Spaltenbereich vorkommen.
3. Die einmal generierten Namen bleiben bestehen, d.h. wenn Werte in Tabelle B ändern entstehen nicht einfach neue Namen.
4. Benutzt einen Prefix vor dem Namen, um zu verhindern dass ev. Namen wie A1, X25, die mit Zellreferenzen kollidieren würden, generiert würden.
Sub NamenBereicheSpalte()
Const cStrSheet = "Tabelle B"       ' In diesem Arbeitsblatt
Const cLngCol As Long = 3           ' In dieser Spalte
Const tNamePrefix = "B_"            ' Name-Prefix to prevent Celladdress-Collisions
Dim lngRow As Long, lngSRow As Long
Dim varSaveVal
With Worksheets(cStrSheet)
varSaveVal = .Cells(15, cLngCol).Value
lngSRow = 15
For lngRow = 15 To .Cells(.Rows.Count, cLngCol).End(xlUp).Row + 1
If varSaveVal  .Cells(lngRow, cLngCol) Then
On Error Resume Next
ThisWorkbook.Names.Add _
Name:=tNamePrefix & varSaveVal, _
RefersTo:="='" & cStrSheet & "'!" & _
.Range(.Cells(lngSRow, cLngCol), .Cells(lngRow - 1, cLngCol)).Address
On Error GoTo 0
varSaveVal = .Cells(lngRow, cLngCol).Value
lngSRow = lngRow
End If
Next lngRow
End With
End Sub

GreetZ Renée
Anzeige
AW: Mal als Ansatz, mit vielen pitfalls...
17.02.2010 12:26:25
Sue
Hallo Renée
Ich danke Dir herzlich, dass Du nochmals geschrieben hast resp. bereits einen Lösungsvorschlag hast.
Ja, natürlich - Tabelle A wird gar nicht benötigt.
Das Makro läuft grundsätzlich genauso, wie gewünscht - ABER - leider erkennt das Programm irgendwie nur einzelne Zeichen (wie vorgegeben a, b,...) aber nicht ganze Namen wie Augustus 01 (typsiches Beispiel).
Es ist auch ausgeschlossen, dass in der Spalte C irgendwie A1, C1 oder so steht (Prefix).
Kannst Du mich bitte nochmals unterstützen?
Besten Dank und "Mahlzeit".
Sue
Namen können keine Blanks enthalten ...
17.02.2010 13:14:43
Renee
Sue,
Darum müsste man dieses durch ein Zeichen substituieren, also z.B. so:
Sub NamenBereicheSpalte()
Const cStrSheet = "Tabelle B"       ' In diesem Arbeitsblatt
Const cLngCol As Long = 3           ' In dieser Spalte
Const tNamePrefix = "B_"            ' Name-Prefix to prevent Celladdress-Collisions
Dim lngRow As Long, lngSRow As Long
Dim varSaveVal
With Worksheets(cStrSheet)
varSaveVal = Replace(.Cells(15, cLngCol).Value, " ", "_")
lngSRow = 15
For lngRow = 15 To .Cells(.Rows.Count, cLngCol).End(xlUp).Row + 1
If varSaveVal  Replace(.Cells(lngRow, cLngCol).Value, " ", "_") Then
On Error Resume Next
ThisWorkbook.Names.Add _
Name:=tNamePrefix & varSaveVal, _
RefersTo:="='" & cStrSheet & "'!" & _
.Range(.Cells(lngSRow, cLngCol), .Cells(lngRow - 1, cLngCol)).Address
On Error GoTo 0
varSaveVal = Replace(.Cells(lngRow, cLngCol).Value, " ", "_")
lngSRow = lngRow
End If
Next lngRow
End With
End Sub

Wenn das mit dem Prefix nicht erwünscht ist, setze einfach die Zeile der Definition so:
Const tNamePrefix = ""

Es gibt noch andere Fallen, die aufgehen können. Z.B. dürfen die Werte keine Kommas (,), nur numerische Werte, oder gewisse Spezialzeichen enthalten. Das hat alles damit zu tun, dass die Definition eines Namens gewissen Vorschriften unterliegt.
GreetZ Renée
Anzeige
AW: Namen können keine Blanks enthalten ...
17.02.2010 15:27:12
Sue
Hallo Renée
Ich danke Dir herzlich - Du hast mir ein grosses Stück weitergeholfen!
Es funktioniert genauso wie ich mir das vorgestellt habe - die "Einschränkungen"
sind kein Problem, da immer nur ein Text mit einer Zahl oder nur ein Text in den
Zellen steht.
Nochmals Danke!!!
Sue
AW: Werte suchen / Namen definieren
16.02.2010 21:07:28
Stefan
Hallo Sue
Probiers mit einer For Next Schleife.
Sub such()
For i = 12 To 40
Sheets("Tabelle1").Activate
Cells(i, 1).Activate
For j = 1 To Sheets("Tabelle2").Cells(65536, 3).End(xlUp).Row
If Sheets("Tabelle2").Cells(j, 3) = ActiveCell Then
Sheets("Tabelle2").Cells(j, 3).Interior.Color = 65535
End If
Next j
Next i
End Sub

Du kannst die gelb markierten Zellen dann zu einem Bereich zusammenfassen.
Gruß, Stefan
Anzeige
28x Tabelle1 aktivieren ? (owT)
16.02.2010 21:22:39
Renee

Nein, 29mal :-))Gruß o.w.T.
17.02.2010 10:34:11
Reinhard


AW: Werte suchen / Namen definieren
16.02.2010 21:31:48
Stefan
Hallo Renee
Why not ;-)
Nö, in falsche Zeile gerutscht. Muß vor natürlich vor die erste Schleife.
Übrigens habe ich die Zählvariablen nicht deklariert. Aufgefallen? ;-)
Gruß, Stefan

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige