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

Bessere Lösung? - VBA SVERWEIS

Bessere Lösung? - VBA SVERWEIS
Malte
Hallo,
ich benötige 3 Werte, die ich mit hilfe des SVVERWEIses auch bekomme. Mometan so
Range("L" & lngH + 1).FormulaLocal = _
"=SVERWEIS(C3;'C:\test\[test23.xls]Tabelle1'!$E$2:$N$8;8;FALSCH)"
Range("M" & lngH + 1).FormulaLocal = _
"=SVERWEIS(C3;'C:\test\[test23.xls]Tabelle1'!$E$2:$N$8;9;FALSCH)"
Range("N" & lngH + 1).FormulaLocal = _
"=SVERWEIS(C3;'C:\test\[test23.xls]Tabelle1'!$E$2:$N$8;10;FALSCH)"
es ändert sich nur die Spalte, wo reingeschrieben wird und der Rückgabe-Wert des SVERWEISes.
kann man das evtl. eleganter lösen, als immer wieder diese 3 Monstersätze zu schreiben, wo sich immer soviel wiederholt?
Danke!
Gruß!

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Bessere Lösung? - VBA SVERWEIS
02.04.2012 16:38:23
Rolf
Hi Malte,
warum schreibst du die Formeln nicht einfach in deine excel-Tabelle (einmal pro Spalte) und kopierst sie dann nach unten?
Gruß, Rolf
AW: Bessere Lösung? - VBA SVERWEIS
02.04.2012 16:44:57
Malte
Hallo,
das ist etwas kompliziert zu erklären. :-)
Ich habe verschiedene quasi mehrere Reihen zu einem Bereich (so nenn ich es jetzt einfach mal) in meinem Excel-Dokument zusammengefasst.
Ich brauch diese 3 Werte nur 1x pro Bereich. Also sollen die nur an den Anfang des Bereich geschrieben werden und nicht in allen Zellen stehen.
Diese Bereiche ändern sich aber automatisch, daher muss, bzw. soll, das ganze mit VBA geschehen :-)
Gruß!
Anzeige
zwei Varianten
02.04.2012 17:51:09
Erich
Hi Malte,
schau dir die mal an:

Sub aaTest()
Dim strTmp As String, lngH As Long
' Als Einzeiler:
Cells(lngH + 1, 12).Resize(, 3).FormulaLocal = _
"=SVERWEIS(C3;'C:\test\[test23.xls]Tabelle1'!$E$2:$N$8;SPALTE(H:H);FALSCH)"
' oder als Vierzeiler:
strTmp = "=SVERWEIS(C3;'C:\test\[test23.xls]Tabelle1'!$E$2:$N$8;"
Cells(lngH + 1, 12).FormulaLocal = strTmp & "8;FALSCH)"
Cells(lngH + 1, 13).FormulaLocal = strTmp & "9;FALSCH)"
Cells(lngH + 1, 14).FormulaLocal = strTmp & "10;FALSCH)"
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: zwei Varianten
02.04.2012 18:53:51
Malte
Hallo Erich!
Vielen Dank für Deine Antwort!
Die Einzeilervariante gefällt mir sehr gut, aber leider wird der Spaltenindex in dem aktuellen Dokument verwendet und greift nicht auf die andere Tabelle zu. Das habe ich aber behoben, in dem ich nochmal den Bezug zur anderen Tabelle reingebracht habe. Leider wird dann immer der Spaltenindex "1" verwendet. Diese Spaltenwahl wird komplett ignoriert, es geht irgendwie nur, wenn ich als Spaltenindex ein Zahl verwende.
Wenn ich dein Code mit einer Zahl laufen lasse, wird diese aber nicht verändert, bei Spaltenindex "8" z.B. wird durchgehend der Wert der Spalte "8" geschrieben.
Hättest Du noch eine Idee für den Einzeiler? Das sieht immer so gut aus ;-)
Der Vierzeiler geht!
Danke bis hierhin.
Gruß!
Anzeige
AW: zwei Varianten
02.04.2012 19:02:22
mario.kirchmauer@gmail.com
Da würde ich mich gerne mit einer Frage anschließen:
<i>ergebnis = "=VLOOKUP(C3,'\\server\shared\[datei.xlsx]tabelle'!$A$1:$B$9,2,FALSE)"</i> --> funktioniert prächtigst !!!
aber ich wollte das in eine FOR-Schleife einbauen: C3, C4, C5, ... als die jeweilige Zelle in eine Variable schreiben:
<i>ergebnis = "=VLOOKUP(suchzelle,'\\server\shared\[datei.xlsx]tabelle'!$A$1:$B$9,2,FALSE)"</i> --> und das funktioniert leider nicht!
Hat da vielleicht jemand eine Lösung parat?
Vielen Dank im Voraus!
Gruß
Mario
AW: zwei Varianten
02.04.2012 19:05:49
Malte
Ich eröffne die Frage nochmal ;)
Gruß!
Anzeige
AW: zwei Varianten
02.04.2012 19:13:59
Rolf
Hi Malte,
du könntest in einer zusätzlichen Zeile, die du später ausblenden kannst, den Spaltenindex (8, 9, 10) hinterlegen und in der Formel darauf Bezug nehmen.
Gruß, Rolf
AW: zwei Varianten
02.04.2012 19:19:58
Malte
Hallo Rolf,
Danke für Deine Idee. Da hatte ich auch schon dran gedacht, würde aber ungerne mit ausgeblendeten Spalten arbeiten. Die übersieht man so schnell und wundert sich, warum irgendwas nicht funktioniert (:
Und ich müsste ja auch wieder mit mehren Zeilen Code auf diese Werte zugreifen.
Gruß!
AW: zwei Varianten
02.04.2012 21:41:43
Rolf
Hallo Malte,
ist doch kein wirkliches Problem. Du musst nur diese "Hilfszeilen/-Spalten" dort einfügen, wo sie niemand findet. Also über der Spaltenüberschrift bzw. links neben der Zeilenbeschriftung. Anschließend ausblenden und mittels Blattschutz vor versehentlichem/unbefugtem Zugriff schützen.
Tipp: Zellen, in denen Eingaben/Änderungen erlaubt sind mit blauer Schriftfarbe formatieren.
Gruß, Rolf
Anzeige
zum Einzeiler
03.04.2012 01:28:28
Erich
Hi Malte,
deinen Einwand verstehe ich nicht.
Was spricht dagegen, dass der Spaltenindex einfach genau so im aktuellen Blatt (Dokument?) verwendet wird?
Warum "leider"? Warum sollte an der Stelle ein Bezug auf eine andere Tabelle stehen?
Funktioniert es denn nicht, wenn da einfach nur SPALTE(H:H) steht?
Ich habe keine Idee, wie du auf die Idee kamst, SPALTE(H:H) zu ändern/zu ergänzen.
Bei mir funzt der Einzeiler problemlos, sonst hätte ich ihn nicht so gepostet.
SPALTE(H:H) steht einfach nur für die Zahl 8 - sonst nichts.
Und bei der Formel eine Spalte weiter rechts ist aus H:H ein I:I geworden - und damit die Zahl 9, wie gewünscht.
Noch eins: Die Funktion SPALTE() liefert bei SPALTE(H:H) ist immer den Wert 8.
Und das in jeder Tabelle, sogar der, in der die Formel steht...
SPALTE(Tabelle27!H:H) ist auch 8.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: zum Einzeiler
03.04.2012 08:01:31
Malte
Hallo!
Danke für deine Rückmeldung.
Ich habe deine Formel getestet und bei mir passiert folgendes.
Allerdings:
Wenn ich SPALTE(H:H) eintrage, wird die aktuelle Spalte aus dem aktuellen Dokument genommen, obwohl der SVERWEIS auf ein anderes Dokument zugreift. Wenn ich SPALTE(H:H) zu [test.xls]Tabelle1!H:H ändere geht das ganze irgendwie auch nicht, dann kommt #BEZUG!.
Wenn ich allerdings in der gleichen Formel eine 8 anstelle der Spaltensache schreibe, funktioniert die Formel einwandfrei, aber die 8 bleibt ja leider fix und wird beim kopieren nicht mitgeändert.
Gruß!
Anzeige
noch mal zum Einzeiler
03.04.2012 08:49:36
Erich
Hi Malte,
"Wenn ich SPALTE(H:H) eintrage, wird die aktuelle Spalte aus dem aktuellen Dokument genommen"
Ja! Das soll so sein! Ist dann irgend etwas falsch? Was stört dich daran?
SPALTE(H:H) "nimmt" keine Spalte aus dem aktuellen Dokument, sondern liefert nur und nur die Zahl 8. Mehr nicht.
"obwohl der SVERWEIS auf ein anderes Dokument zugreift." Na und? Das ist für "SPALTE(H:H)" völlig wurscht.
SPALTE(H:H) ist iin jeder Formel gleich 8, egal, ob in dern Formel SVERWEIS vorkommt oder MITTELWERT oder ...
Was passiert, wenn due einfach SPALTE(H:H) in der Formel stehen lässt?
Was versetzt dich in den Glauben, daran etwas ändern zu müssen? Höhere Eingebung?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: noch mal zum Einzeiler
03.04.2012 09:26:39
Malte
Hallo Erich,
Danke für Deine Hilfe!
Ich habe das Problem gerade gelöst.
Das Problem war, dass wenn ich die Formel in Spalte E,F und G schreibe, er den Suchbegriff automatisch von C zu C, D und E geändert hat. Das habe ich nun behoben indem ich ein $ vor das C gesetzt habe. Nun funktioniert es!
Vielen Dank!
Warum es gestern nicht ging und dort #BEZUG! stand weiß ich nicht! Ich habe eigl. (nur unbewusst vielleicht) nichts anders gemacht. Aber es wollte nicht gehen.
Vieeeelan Dank für Deine Geduld mit mir.
Gruß Malte!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige