PDA

Vollständige Version anzeigen : Sverweis durch Makro ersetzen


mister_bean
02.08.2012, 10:59
Hallo,

ich habe folgendes Problem! ICh würde gern den Befehl SVERWEIS durch ein Makro ersetzen, komme damit aber nicht so recht weiter!

In Tabelle4 stehen Daten von Zeile 3 bis 154. Mein Suchkriterium befindet sich in Spalte AM. Gesucht werden soll aber in Tabelle1 innerhalb der Matrix B5 bis AF1396. Der Ausgabewert soll dann der jeweilige Wert aus Spalte AF Tabelle1 sein. Die Ausgabe des Wertes soll aber dann in Tabelle4 in Spalte AO erfolgen aber auch nur dann wenn die jeweilige Zelle leer ist!
Kann mir jemand bei diesem Problem helfen?

Vielen Dank im voraus

mfg jan

mücke
02.08.2012, 11:45
Moin Jan,
... aber auch nur dann wenn die jeweilige Zelle leer ist! ...
was steht denn da noch drin, außer dem Ergebnis vom SVerweise?
Option Explicit

'Beispiel ohne Abfrage

Sub SVerweis()

With Sheets("Tabelle4").Range("AO3:AO154")
.FormulaLocal = _
"=SVERWEIS(AM3;Tabelle1!$B$5:$AF$1396;31;0)"
.Value = .Value
End With

End Sub

mister_bean
02.08.2012, 12:08
Danke schön, werde es gleich testen!

Um es kurz zu erklären was da noch drin steht: durch den SVERWEIS teile ich jedem Flug einen individuellen Peilwinkel zu, welche schon berechnet in der einer Tabelle vorliegen! Für die Zellen welche besetzt sind muss ich einen anderen Peilwinkel neu errechnen und sie dann eintragen! Klingt etwas umständlich!

Danke nochmal!

mister_bean
02.08.2012, 13:18
Nun hab ich aber nochmal eine Frage!

Und zwar hab ich denselben Code nun noch für einen anderen Verweis aus der Tabelle5 genommen und die Daten sollen aber auch wieder in die Spalte AO von Tabelle4 eingefügt werden. Nun dachte ich das bei der Ausführung nacheinander die Daten aus zwei unterschiedlichen Tabellen (1 und 5) dort in diese Spalte eingetragen werden. Leider funktioniert es nun nicht so.
Im Prinzip wäre es nun so das ich diesen Code

Sub SVerweis()

With Sheets("Tabelle4").Range("AO3:AO154")
.FormulaLocal = _
"=SVERWEIS(AM3;Tabelle1!$B$5:$AF$1396;31;0)"
.Value = .Value
End With

End Sub

mit einem anderen SVERWEIS nämlich diesen

SVERWEIS(AN3;Tabelle5!$A$5:$AF$6;32;0)

gern anwenden würde und das beide Verweise dann als Ergebnis in besagter Tabelle4 Spalte AO auftauchen!

Könnte mir das jemand beschreiben?

1000 Dank schon einmal

mücke
02.08.2012, 13:36
Moin Jan,

... und einer genauen Beschreibung, wann und wo welcher Wert gesucht und gefunden werden soll.
Ich glaube mit dem "SVerweis" kommen wir hier nicht weiter.

mister_bean
02.08.2012, 14:36
Ich versuch mich mal an einer genaueren Beschreibung!

In Tabelle1 (von Zeile 5 bis 1396 laufend) hab ich eine Reihe von unterschiedlichen Flügen (erkennbar an unterschiedlichen Callsigns) und diese besitzen alle einen Peilwinkel zu einem Flughafen. Die Callsigns stehen in Spalte B und die dazugehörigen Winkel in Spalte AF.
Nun muss ich aber für ein paar andere Flüge einen neuen Winkel berechnen, die ich Tabelle5 berechnet habe. Diese Tabelle umfasst nur die Zeilen 5 und 6 und die Spalten von A bis AF (AF ist wieder Spalte des Winkels). Diese Winkel beziehen sich aber auf einen Wegpunkt und nicht mehr auf einen Flug/Callsign.
Deswegen die beiden unterschiedlichen Verweise aus Tabelle1 (hier Callsign zu Winkel) und Tabelle 5 (Wegpunkt zu Winkel).
Beides, sowohl Callsign und Wegpunkt sind in 2 Spalten (AM und AN) in Tabelle4 vorhanden. Wichtig ist, wenn die Wegpunkte "SU/SW3" oder "NO/NW3" in der Spalte AN in Tabelle4 auftreten dann muss der Winkel aus Tabelle5 genommen werden ansonsten soll der Winkel aus Tabelle1 genommen werden.

Ich hab mal das File stark verkürzt mit als Anhang zu getan. Die Zeilenangaben stimmen dann nicht mehr!

mücke
03.08.2012, 12:17
Moin Jan,

versuch es mal so:
Option Explicit

Sub doppelterSVerweis()

With Sheets("Tabelle4").Range("AO3:AO154")
.FormulaLocal = _
"=WENN((($AN3=""SU/SW3"")+($AN3=""NO/NW3""));SVERWEIS($AN3;Tabelle5!$A$5:$AF$6;32;0);SVERWEIS($AM3;Tabelle1!$B$4:$AF$8;31; 0))"
.Value = .Value
End With

End Sub

:sun: Wochenende

mister_bean
03.08.2012, 13:28
Die Werte welche sich auf die Spalte AN beziehen werden wunderbar in AO eingetragen aber für die Werte aus AM wird #NV ausgegeben

mücke
03.08.2012, 13:37
Moin Jan,

... in deiner Beispielmappe funktioniert es, schau mal hier:
<b>Tabelle4</b><br /><br /><table border="1" cellspacing="0" cellpadding="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >AM</td><td >AN</td><td >AO</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td style="background-color:#99cc00; ">ACA845</td><td > </td><td style="text-align:right; ">325,120475</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td style="background-color:#99cc00; ">DLH758</td><td > </td><td style="text-align:right; ">95,6068834</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td >DLH758</td><td >SU/SW3</td><td style="text-align:right; ">113,251359</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td >&nbsp;</td><td >&nbsp;</td><td >#NV</td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4 </a>

mister_bean
03.08.2012, 14:24
Seltsam!

Naja ich werd mal ein wenig tüfteln! Ich hab nun erst einmal den Code dann werde ich das andere Problem schon noch lösen können!

Danke vielmals!