Anzeige
Archiv - Navigation
1308to1312
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

SVERWEIS-Formel mittels VBA

SVERWEIS-Formel mittels VBA
24.04.2013 13:24:29
Nico
Hallo zusammen,
ich habe ein Workbook mit 2 Tabelle. Ich möchte von der Tabelle1 anhand von Suchkriterien aus der Tabelle2 Daten aus der Tabelle1 in Tabelle2 schreiben (ein ganz normaler SVERWEIS!). Dies habe ich in folgendem Code dargestellt und in ein separates Modul reingeschrieben:
Sub Übertrag()
Dim MyDic As Object
Dim Matrix As Variant
Dim Suchkriterium As Variant
Dim L As Long
Dim Ausgabe As Variant
Set MyDic = CreateObject("Scripting.Dictionary")
Matrix = Sheets("Tabelle1").Range("A:G")
Suchkriterium = Sheets("Tabelle2").Range("D:D")
For L = 1 To UBound(Matrix)
MyDic(Matrix(L, 1)) = Array(Matrix(L,7))
Next
ReDim Ausgabe(1 To UBound(Suchkriterium), 1 To 7)
On Error Resume Next
For L = 1 To UBound(Suchkriterium)
Ausgabe(L, 1) = MyDic(Suchkriterium(L, 1))(0)
Next
Sheets("Tabelle2").Range("M:M").Resize(UBound(Suchkriterium), 7) = Ausgabe
End Sub
()
Dies funktioniert auch einwandfrei. Was jetzt mein Problem ist: Das Makro löscht mir alle anderen Werte aus der Spalte M in der Tabelle2 und setzt diese auf blank. In dieser Spalte stehen nämlich noch Zwischentotale und Währungen. Ich möchte, dass das Makro nur die Werte in Tabelle2/Spalte M schreibt, die er auch anhand des Suchkriteriums findet und alle anderen Zellen nicht berührt. Ich habe es schon mit einem IF-Befehl versucht, hat leider nicht geklappt.
Weiss jemand rat?
Besten Dank!

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SVERWEIS-Formel mittels VBA
25.04.2013 08:02:05
fcs
Hallo Nico,
da wird dir nichts anderes übrig bleiben, als das Ergebnis zellenweise in der Zieltabelle einzufügen. Nachfolgend mein ungetesteter Änderungsvorschlag.
Gruß
Franz
Sub Übertrag_Original()
Dim MyDic As Object
Dim Matrix As Variant
Dim Suchkriterium As Variant
Dim L As Long, S As Long
Dim Ausgabe As Variant
Set MyDic = CreateObject("Scripting.Dictionary")
Matrix = Sheets("Tabelle1").Range("A:G")
Suchkriterium = Sheets("Tabelle2").Range("D:D")
For L = 1 To UBound(Matrix)
MyDic(Matrix(L, 1)) = Array(Matrix(L, 7))
Next
ReDim Ausgabe(1 To UBound(Suchkriterium), 1 To 7)
On Error Resume Next
For L = 1 To UBound(Suchkriterium)
Ausgabe(L, 1) = MyDic(Suchkriterium(L, 1))(0)
Next
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
With Sheets("Tabelle2")
For L = 1 To UBound(Suchkriterium)
If IsEmpty(Ausgabe(L, 1)) Then 'Diese Prüfung ggf. anpassen
For S = 1 To 7
.Cells(L, 13 + S - 1) = Ausgabe(L, S)
Next
End If
Next
End With
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub

Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige