Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Dyn. Spaltenverweis

Betrifft: Dyn. Spaltenverweis von: Mischa Richter
Geschrieben am: 16.09.2004 11:43:15

hi alle zusammen, vor allem die formelfreaks:
wie könnte das gehen

hab ein sheet (als Sammeltabelle) mit seeeehr vielen Formlen in der Gestalt:
='\\SOK-003\fb0$\fd-edv\00 Controlling\_VWGliederung\fd\[31.xls]gvp'!$F$1

Diese Formeln ziehen aus ganz vielen anderen Sheets jeweils aus F1 den Wert.
es ändert sich nur der wert in den viereckigen klammern.

Nun soll evtl. in den anderen Sheets der Wert nicht nur aus F1, sondern auch mal aus G1 oder H1 gezogen werden - ich will aber nicht alle Formeln immer durchgehen und ändern müssen.
Kann ich in einer einzigen Zelle meiner Sammeltabelle nur den Buchstaben eintragen und meine Formel fragt diesen Buchstaben (für die Spalte) einfach mit ab?

danke, mischarichter
www.miaj.de

  


Betrifft: AW: Dyn. Spaltenverweis von: Magic
Geschrieben am: 16.09.2004 11:57:34

Hallo Mischa,

bei dem Spaltenbuchstaben in A1 versuch mal:

=indirekt("'\\SOK-003\fb0$\fd-edv\00 Controlling\_VWGliederung\fd\[31.xls]gvp'!$"&a1&"$1")

Gruß
Michael


  


Betrifft: geht noch nicht ... von: Mischa Richter
Geschrieben am: 16.09.2004 13:11:37

danke, aber geht aus folgendem Grund nicht:
die externen Mappen sind nicht geöffnet. Haste da ne Lösung?
Mischa

Hilfe-Text zu INDIREKT:
Verweist Verweis auf eine andere Arbeitsmappe (ein externer Bezug) muss diese Arbeitsmappe geöffnet sein. Ist die Quellarbeitsmappe nicht geöffnet, liefert die INDIREKT-Funktion den Fehlerwert #BEZUG!.


  


Betrifft: AW: Dyn. Spaltenverweis von: Dominic
Geschrieben am: 16.09.2004 14:00:35

Versuche es mal mit Ersetzen. Bereich makieren, dann Ersetzen / Alle ersetzen und nur die Zellbezüge: z.B.: $F$1 ins $G$1.

Dominic


  


Betrifft: gelöst - mit VBA von: Mischa Richter
Geschrieben am: 16.09.2004 14:07:47

warum einfach, wenns auch ....


Sub FDurchOErsetzen()
    SuchString = Cells(57, 2)
    NeuString = Cells(58, 2)
    
    Dim ZellFormel As String, tmp As String
    
    Dim Zeile As Long
    Dim Spalte As Long
    
    For Zeile = 1 To 100
        For Spalte = 1 To 100
            'Feststellen, ob Formel in dieser Zelle:
            If Cells(Zeile, Spalte).HasFormula = True Then
                
                'Umweg über Variable:
                ZellFormel = Cells(Zeile, Spalte).Formula
                
                'Ersetzen:
                If InStr(1, ZellFormel, SuchString, vbTextCompare) <> 0 Then
                    tmp = Replace(ZellFormel, SuchString, NeuString, , , vbTextCompare)
                    Cells(Zeile, Spalte).Formula = tmp
                    
                    Application.StatusBar = tmp
                End If
            
            End If
        Next Spalte
    Next Zeile
    
    
    MsgBox "Fertig mit dem Ersetzen von " & SuchString & vbCrLf & "durch " & NeuString, _
            vbExclamation, ""
End Sub