Anderer Vorschlag: Automatik geht nur mit VBA, ...
10.05.2015 02:47:49
Luc:-?
…Sunny;
dann kannst du auch gleich die realen BlattNamen mit einer sog UDF (eigene Fkt) ermitteln und in die Fml einbauen. Die verschiedenen prinzipiellen FmlMöglichkeiten (vgl unten!) kannst du hier sehen:
| A | B | C | D | E | F |
1 | 25,99 | 25,99 | Formeln | | | |
2 | 13,78 | 13,78 | A1:A3: {=N(INDIREKT("'"&ShName(ZEILE(1:3))&"'!C33"))} |
3 | 36,49 | 36,49 | B1[:B3]:=INDIREKT("'"&ShName(ZEILE(A1))&"'!C33") |
4 | 13,78 | 36,49 | A4:B4: {=N(INDIREKT("'"&ShName(SPALTE(B:C))&"'!C33"))} |
5 | 13,78 | 36,49 | A5[:B5]:=INDIREKT("'"&ShName(SPALTE(B1))&"'!C33") |
6 | 25,99 | 25,99 | A6:A7: {=N(INDIREKT("'"&ShName({1;3})&"'!C33"))} |
7 | 36,49 | 36,49 | B6[:B7]:=INDIREKT("'"&ShName(INDEX({1;3};ZEILE(A1)))&"'!C33") |
8 | 25,99 | 36,49 | A8:B8: {=N(INDIREKT("'"&ShName({1.3})&"'!C33"))} |
9 | 25,99 | 36,49 | A9[:B9]:=INDIREKT("'"&ShName(INDEX({1.3};SPALTE(A1)))&"'!C33") |
Die Blauen sind mehrzellige MatrixFmln (besondere Eingabe, ggf in der Xl-Hilfe nachlesen).
Dazu musst du nur ein normales Modul in das im VBEditor gezeigte VBA-Projekt der Mappe einfügen und darin folgendes Pgm eintragen:
Rem Mxfml-fähige Fkt ermittelt BlattNamen aktMappe lt Vorgabe lfd Nrn
' Arg1: Einzel-RhfolgeNr bzw Vektor solcher Nrn, auch unzusammhängd
' als MxKonstante, ohne Arg1 wird d.Name d.letzt Blattes ermittelt.
' Vs1.0 -LSr -cd:20150509 -1pub:20150510herber -lupd:20150509n
Function ShName(Optional ByVal lfdNr)
Dim isVert As Boolean, aZr As Long, lZr As Long, shN() As String
On Error Resume Next
With ActiveWorkbook
If IsArray(lfdNr) Then
If IsError(LBound(lfdNr, 2)) Then
Else: Let isVert = UBound(lfdNr, 2) = 1
If Not isVert Then
lfdNr = WorksheetFunction.Transpose(lfdNr)
End If
lfdNr = WorksheetFunction.Transpose(lfdNr)
End If
aZr = LBound(lfdNr): lZr = UBound(lfdNr) - aZr
ReDim shN(lZr)
For lZr = 0 To lZr
shN(lZr) = .Sheets(lfdNr(aZr + lZr)).Name
Next lZr
If isVert Then
ShName = WorksheetFunction.Transpose(shN)
Else: ShName = shN
End If
ElseIf IsMissing(lfdNr) Then
ShName = .Sheets(.Sheets.Count).Name
Else: ShName = .Sheets(lfdNr).Name
End If
End With
End Function
Das Pgm ruft alle Blätter lt Argument lfdNr einzeln in ihrer Reihenfolge in der aktuellen Mappe auf. Diese können auch als Intervall (mit ZEILE/SPALTE) oder als Liste einzelner Nrn in Form eines MatrixKonstantenVektors angegeben wdn. Auf diese Weise können irrelevante Blätter ausgelassen wdn. Die WiedergabeOrientierung mehrzelliger MatrixFmln richtet sich nach der AusrichtungsForm des Arguments.
Die Datei muss als .xlsm bzw .xlsb gespeichert wdn. Als .xlsx kann sie nur gespeichert wdn, wenn die UDF in eine stets geöffnete externe Datei ausgelagert wird, idealerweise ein MS-Office-AddIn (Infos dazu im Archiv).
Gruß + schöSo, Luc :-?