Clever-Excel-Forum

Normale Version: [VBA] Index & Vergleich aus geschlossener Datei
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5
Hey Schauan & andere,

ich habe nachfolgendes Script, welches nun doch mit Excel4Macro arbeitet. Sollte also doch funktionieren?
Code:
Option Explicit

Private Sub CommandButton1_Click()
Dim strPfad$, strTabelle$, sSuchbereich$, sAusgabe$
Dim strSuchWert$
Dim Suchwert As String
Dim Ausgabe1 As String
Dim Ausgabe2 As String
Suchwert = Worksheets("Tabelle1").Range("Suchwert")

If Suchwert <> "" Then
   strSuchWert = Suchwert
   
   If IsNumeric(strSuchWert) Then
    strSuchWert = Replace(strSuchWert, ",", ".")
   Else
    strSuchWert = Chr(34) & strSuchWert & Chr(34)
   End If
           
   strPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
     
   strPfad = "'" & strPfad & "[Test.xls]"
       
   strTabelle = "Tabelle1" & "'!"
     
   sAusgabe = Range("A1:B65536").Address(ReferenceStyle:=xlR1C1)
   
   sSuchbereich = Range("F1:F65536").Address(ReferenceStyle:=xlR1C1)
   
   On Error Resume Next
 
   Worksheets("Tabelle1").Range("Ausgabe_1") = ExecuteExcel4Macro( _
   "INDEX(" & strPfad & strTabelle & sAusgabe & ",MATCH(" & strSuchWert & "," & strPfad & strTabelle & sSuchbereich & ",0),1)" _
   )
   If Err.Number <> 0 Then Worksheets("Tabelle1").Range("Ausgabe_1") = ""
   Err.Clear
   
    Worksheets("Tabelle1").Range("Ausgabe_2") = ExecuteExcel4Macro( _
   "INDEX(" & strPfad & strTabelle & sAusgabe & ",MATCH(" & strSuchWert & "," & strPfad & strTabelle & sSuchbereich & ",0),2)" _
   )
   If Err.Number <> 0 Then Worksheets("Tabelle1").Range("Ausgabe_2") = ""
   On Error GoTo 0
Else
   Worksheets("Tabelle1").Range("Ausgabe_1") = "": Worksheets("Tabelle1").Range("Ausgabe_2") = ""
End If
End Sub

Fraglich halt, ob ich hier wie in meiner Ausgangsformel meinen Index-Vergleich mit mehreren Suchkriterien verwenden kann  Confused

Code:
INDEX(Blatt!I715:AF854;VERGLEICH(Standort;Blatt!D715:D854;0);VERGLEICH(Vormonat;Blatt!I8:AF8;0))

LG
Hallöchen,

Zitat:Fraglich halt, ob ich hier wie in meiner Ausgangsformel meinen Index-Vergleich mit mehreren Suchkriterien verwenden kann

Das Ergebnis müsstest Du ja nun schon gesehen haben. Und?
Nö. Ich bekomm's nicht hin .. :16:
Hast du einen Tipp?
Hallöchen,

dachte ich mir. Nicht umsonst schrieb ich

Zitat:Deswegen die Alternativvorschläge.
Im Online-Excel ist einer ganz genau beschrieben. Das kann man alles nachbauen, da steht, was man dazu für Beispieldateien mit welchen Daten füllen soll usw.

Da könntest Du erst mal grundlegend die Funktion von ADO anschauen und dann schauen wir, wie wir es für Dich hinbekommen.
Ok, aber ADO ist doch wieder etwas völlig anderes. Das von mir eben gepostete Script verstehe ich wenigstens halbwegs  :19:
Kannst du mir dabei nicht helfen?
Hallo jules,

Du arbeitest ja schon mit VBA. Was ist der Grund, die externe Datei nicht zu öffnen?

Gruß Uwe
Hi Uwe,

genau genommen handelt es sich um zwei externe Dateien, dessen (gesuchte) Werte in meine Hauptmappe eingefügt werden sollen. Die Hauptmappe besteht als 8-10 einzelnen, geschlossenen Mappen aus denen verschiedene Werte gezogen werden. Die meisten hierbei wie gehabt über Excel4Macro mit bestimmter Zeilen/Spalten angabe. Nur bei den letzten zwei Dateien ist eine Suche mit mehreren Bedingungen notwendig, da sich die Datei öfters updated und sich die Zeilen/Spalten verschieben. Es wäre mühsam die Dateien vorab zu öffnen und im Hintergrund laufen zu lassen. Des weiteren arbeiten auch andere Kollegen mit der Datei. Ohne sie zu öffnen wäre es kompakter  und es schleichen sich weniger Fehler ein.

VG
Da es anscheinend mit einer geschlossenen Datei nicht möglich ist .. 
hat jemand eine Idee, wie ich meine Abfrage durchführen kann, indem die Datei sich im Hintergrund öffnet?  Huh
Hallo Jules,

da hat keiner was gesagt, dass es nicht möglich ist. Ich hatte aber weiter oben schon auf fehlenden Input hingewiesen. Solange der Aufbau Deiner Datei nicht 100% klar ist, kann man auch nur auf die Theorie verweisen und nichts konkretes programmieren.

Ansonsten, wenn Deine Formel bei geöffneter Datei funktioniert, ist es doch relativ easy. Das sind dann diese 3 Schritte:

'beide Dateien öffnen
Workbooks.Open …
Workbooks.Open …
'Formel berechnen
ThisWorkbook.Calcukate
'Dateien schließen
ActiveWorkbook.Close
ActiveWorkbook.Close

Die Dateien sollten sich bei rückwärtiger Reihenfolge entsprechend aktivieren und geschlossen werden können. Sicherer wäre aber in jedem Fall, die Dateien konkret anhand ihres Namens zu schließen.
Grüß dich mein Lieber,

danke für deine Antwort.
Ich versteh langsam nur noch Bahnhof :)
Beispiel Mappen hatte ich hier hochgeladen. Vielleicht sagt dir das etwas mehr?

Grüße
Seiten: 1 2 3 4 5