Guten Abend,
ich habe mehrere xls-Dateien mit Werten, z.B. januar.xls , februar.xls , maerz.xls , usw.
Nun kann ich in einer Master.xls mit der Formel:
=[april.xls]Tabelle1!$A$1
den Wert von A1 in der April.xls auslesen.
Nun will ich es aber so machen, daß in einer Zelle der Master.xls der Monatsnameeingegeben wird und dann eine enstprechende Formel mir dann den Wert von A1 in Monatsname.xls liefert.
Z.B.: in b2 steht „april“
und die Formel sehe dann in etwa so aus:
=[indirekt(b2).xls]Tabelle1!$A$1
Leider geht es so nicht, auch nicht wenn ich mit Verketen arbeite.
Welche Funktion muß ich nehmen?
Danke
Reinhard
Lösung bei mir nur mit Makro
Moin Reinhard,
möglicherweise suchtest Du nur nach einer Nicht-Makro-Lösung und hättest die folgende auch selbst gewusst.
Aber was besseres fällt mir da auch nicht ein.
Das Makro kannst Du ja auch von einer Zelle aus aufrufen, als wäre es eine normale Excel-Funktion,
es bleibt aber leider ein Makro, einschließlich Warnmeldung am Anfang. Die kann man nur unterdrücken,
indem das Makro in eine XLA-Datei kommt, also ausgelagert wird.
Viele Grüße,
Kristian
Function GibMirDenWert(strArbeitsmappe As String, strArbeitsblatt As String, strZelle As String) As Variant
GibMirDenWert = Workbooks(strArbeitsmappe).Worksheets(strArbeitsblatt).Range(strZelle).Value
End Function 'GibMirDenWert
Function GibMirDenWertXY(strArbeitsmappe As String, strArbeitsblatt As String, intX As Integer, intY As Integer) As Variant
GibMirDenWertXY = Workbooks(strArbeitsmappe).Worksheets(strArbeitsblatt).Cells(intY, intX).Value
End Function 'GibMirDenWertXY
Sub Test()
Dim Monat As String
Dim Blatt As String
Dim Zelle As String
Dim x As Integer
Dim y As Integer
Monat = "April"
Blatt = "Tabelle1"
Zelle = "B5"
x = 2
y = 5
Debug.Print
Debug.Print "[" & Monat & ".xls]" & Blatt & "!" & Zelle & " = " & GibMirDenWert(Monat & ".xls", Blatt, Zelle)
Debug.Print "[" & Monat & ".xls]" & Blatt & "!.Zelle(" & x & ", " & y & ") = " & GibMirDenWertXY(Monat & ".xls", Blatt, x, y)
End Sub 'Test
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]