Das funktioniert doch schon prima! Ich habe das Makro aus der Daten-Datei in Mappe1 gepackt, da ich nur schwerlich an der Daten-Datei etwas ändern kann. Funktioniert aber auch so.
Jetzt teste ich mal mit meinen Original Daten.. Ich bin gespannt.
1000 Dank, jetzt schon!
- Falls jemand der "Profis" noch Anmerkungen hat, gern
hier mal der Ansatz mit ADO. Als Abfragebereich habe ich den Bereich Tabelle1$D5:AF23 festgelegt. Bei der Abfrage gibt es zwei Punkte zu beachten. Zum einen enthält die Spalte, wo die zweite Abfragebedingung steht, keine Überschrift. Da müsste was hin. Ich habe hier mal "Willi" als Überschrift genommen / eingetragen un ddie Datendatei damit gespeichert. Zum anderen sind die Daten als Spaltenüberschriften ungünstig. Ich habe daher eine Zeilenbereich abgefragt und für März 19 die Feldnummer 19 genommen (Spalte D = Feld 0). Wenn Du die Spaltennummer anhand des gesuchten Monats berechnen kannst, wäre das gut. Ansonsten :22:
Code:
Public Sub AdoTest() 'Variablendeklaration, Objekte fuer LateBinding Dim oAdoConnection As Object, oAdoRecordset As Object Dim sAdoConnectString As String, sPfad As String, sQuery As String Dim oZielStartRange As Range 'Bei Fehler weiter mit Fehlerbehandlung On Error GoTo Fehler 'Datendatei - hier im gleichen Pfad wie diese Datei sPfad = ThisWorkbook.Path & "\Daten.xlsx" 'Zielbereich festlegen Set oZielStartRange = ThisWorkbook.Worksheets("Ziel").Range("b2") 'Conection setzen Set oAdoConnection = CreateObject("ADODB.CONNECTION") 'Connectionstring bilden sAdoConnectString = "Provider=Microsoft.ACE.OLEDB.12.0;" _ & "Extended Properties=""Excel 12.0;HDR=YES"";" _ & "Data Source=" & sPfad & ";" 'Connection oeffnen oAdoConnection.Open sAdoConnectString 'Abfrage bilden - Pseudospaltenname "Willi" in Datendatei eingefuegt sQuery = "Select * from [Tabelle1$D5:AF23] where Standort='M?nchen' and Willi='CoS (%)'" 'Recordset setzen Set oAdoRecordset = CreateObject("ADODB.RECORDSET") 'Mit dem Recordset ... oeffnen und ein Feld auslesen With oAdoRecordset .Source = sQuery .ActiveConnection = oAdoConnection .Open MsgBox .Fields(19).Value 'Feldnummer (Spalte) ggf. berechnen? 'Ende Mit dem Recordset End With 'Sprungmarke zum beenden Aufraeumen: 'Bei Fehler weiter On Error Resume Next 'Verbindung schliessen und ruecksetzen oAdoRecordset.Close oAdoConnection.Close Set oAdoRecordset = Nothing Set oAdoConnection = Nothing 'Makro verlassen Exit Sub 'Sprungmarke fuer Fehlerbehandlung Fehler: MsgBox "Fehler: " & Err.Description Resume Aufraeumen End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)