ich habe in einer Tabelle in Spalte A verschiedene (teilweise öfters vorkommende) Namen stehen, die sich ständig erweitern. In Spalte B soll für jeden Namen eine Zahl stehen, bei gleichen Namen dann auch die gleiche Zahl:
Es kommen wie gesagt immer wieder neue Zeilen (neue und bereits vorhandene Namen) dazu, was auch gleichzeitig mein Problem ist, ansonsten wärs für mich kein Problem.
Ich würde nun gerne Folgendes machen, weiss ober nicht, wie das am Besten bewerkstelligen kann:
Per VBA sollen die Zahlen für die bereits vorhandenen Namen geändert/aktualisiert werden. Ich gebe den Namen ein, dessen Zahl geändert werden soll und die neue Zahl und es werden für diesen Namen alle Zahlen auf die neue geändert.
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.
muss es denn unbedingt VBA sein? Schau dir mal die Fkt. SVERWEIS an. Du legst dir ein Tabellenblatt mit den Namen (ohne Duplikate) und den dazugehörigen Nummern an und holst dir die Daten von dort.
Deine Referenztabelle kannst du auch, so wie in meinem Beispiel, in einen nicht sichtbaren Bereich legen. Die #NV-Meldungen eliminierst du, indem du um die SVERWEIS-Formel noch ein WENNFEHLER legst:
Code:
=WENNFEHLER(SVERWEIS(A1;$I$1:$J$6;2;0);"")
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:1 Nutzer sagt Danke an WillWissen für diesen Beitrag 28 • Wiiinnniii
muss es denn unbedingt VBA sein? Schau dir mal die Fkt. SVERWEIS an. Du legst dir ein Tabellenblatt mit den Namen (ohne Duplikate) und den dazugehörigen Nummern an und holst dir die Daten von dort.
Deine Referenztabelle kannst du auch, so wie in meinem Beispiel, in einen nicht sichtbaren Bereich legen. Die #NV-Meldungen eliminierst du, indem du um die SVERWEIS-Formel noch ein WENNFEHLER legst:
Code:
=WENNFEHLER(SVERWEIS(A1;$I$1:$J$6;2;0);"")
Hi Will ,
Danke für Deine Antwort,
Der Aufbau meiner Tabelle lässt Deine Idee vermutlich nicht zu:
Ich habe in Tabellenblatt 1 eine sich ständig erweiternde Liste mit Personen (Spalte A). In Spalte B steht für jede Person eine bestimmte Zahl (gleiche Person = gleiche Zahl). Es kommen ständig sowohl bereits vorhandene Personen, als auch neue hinzu. Mit einer Matrixfunktion habe ich die doppelten Personen "eliminiert" und somit in einer anderen Spalte (Spalte D) des Tabellenblattes alle Personen nur ein mal stehen. Mit SVERWEIS könnte ich auch leicht, die dazuehörige Zahl in Spalte E schreiben.
Das Problem ist, dass sich die Zahlen mind. jedes Quartal ändern !
Und jetzt suche ich nach einer Möglichkeit, wie ich die Zahlen am einfachsten jedes Qurtal für best. Personen (die ja auch mehrfach vorkommen) ändern kann, ohne die ganze Spalte B händisch mit den neuen Zahlen zu füllen.
Und da dachte ich halt an VBA:
Eingabe: Name Eingabe: Neue Zahl
Funktion: Excel sucht in Spalte A nach dem jeweiligen Namen und ersetzt für diesen Namen in Spalte B die alten Zahlen mit der neuen Zahl.
If Not Treffer Is Nothing Then Treffer.Offset(0, 1).Value = .Range("G1").Value Treffer.Interior.ColorIndex = 6 End If
Next i End With
End Sub
In F1 gibst Du den zu suchenden Namen ein. In G1 den Wert. Das Makro sucht nach dem Namen und schreibt hinter alle Treffer den Wert aus G1. Das Einfärben der Treffer (Treffer.Interior.ColorIndex = 6) habe ich nur zu Testzwecken eingebaut. Die Codezeile ist überflüssig.
Gruß Ich
Folgende(r) 1 Nutzer sagt Danke an IchBinIch für diesen Beitrag:1 Nutzer sagt Danke an IchBinIch für diesen Beitrag 28 • Wiiinnniii
(17.08.2016, 15:05)Wiiinnniii schrieb: Danke für diesen Code, ja genau das möchte ich machen, leider kommt beim Ausführen des Makros die Fehlermeldung: "Typen unverträglich"
If Not Treffer Is Nothing Then Treffer.Offset(0, 1).Value = .Range("G1").Value Treffer.Interior.ColorIndex = 6 End If
Next i End With
End Sub
In F1 gibst Du den zu suchenden Namen ein. In G1 den Wert. Das Makro sucht nach dem Namen und schreibt hinter alle Treffer den Wert aus G1. Das Einfärben der Treffer (Treffer.Interior.ColorIndex = 6) habe ich nur zu Testzwecken eingebaut. Die Codezeile ist überflüssig.
Gruß Ich
Wenn ich anstatt
Code:
With Tabelle1
Code:
With Sheets("Tabelle1")
schreibe verschwindet zwar die Fehlermeldung, es tut sich aber am Ergebnis nix ...