Ich habe ein Excel-Tabellenblatt mit Werten darin (dieses Tabellenblatt wird von einem benutzerdefinierten Perl-Skript generiert, aber ich glaube nicht, dass dort das Problem liegt). Darin habe ich eine Formel:
=sum(indirect(concatenate(address(6,column()),":",address(17,column()))))
Der Zweck dieser Formel ist es, mir die SUM()
der Zellen in der aktuellen Spalte zwischen den Zeilen 6 und 17 zu geben. InGnumeric-Tabelle, sobald ich die Datei öffne, funktioniert das. Aber in Excel (sowohl 2003Und2007) werden beim Öffnen der Datei #VALUE!
in den Feldern mit dieser Formel Fehler ausgegeben, die besagen, dass der INDIRECT
Aufruf mit den Werten $B$6:$B$17
zu einem Fehler führen wird.
Hier ist der Haken an der Sache. Wenn ich das Feld bearbeite (über F2
) undNEINÄnderungen vornehmen und die Eingabetaste drücken, werden die Werte aktualisiert. Außerdem scheinen die Werte beim Öffnen aktualisiert zu werden, wenn ich die Datei als .xlsx (Excel 2007-Format) speichere. Leider bin ich mir nicht sicher, ob die Erstellung einer xlsx
mit den von mir verwendeten Modulen möglich ist, und viele unserer Kunden könnten sie wahrscheinlich sowieso nicht verwenden.
Irgendwelche Vorschläge? Es ist nicht machbar, jeden Monat für jeden Kunden mehr als 200 Dateien zu bearbeiten. Wenn ich also etwas übersehen habe, lassen Sie es mich bitte wissen.
Antwort1
Funktioniert eine einfache Summenfunktion, wenn Sie sie einfügen – kann das Problem also auf eine Komponente der indirekten/Adresskombination zurückgeführt werden?
Haben Sie versucht, mit OFFSET den zu summierenden Bereich zu erstellen? Beispiel:
=SUM(OFFSET(B6,0,0,12,1))
Antwort2
Vielleicht ist es ein Strohhalm, aber Sie könnten es mit einer Referenz im R1C1-Stil versuchen.
=SUM(INDIRECT("R["&7-ROW()&"]C:R["&17-ROW()&"]C",FALSE))
Oder wenn die Formeln immer in Zeile 19 stehen, setzen Sie den Referenzstil auf R1C1
Application.ReferenceStyle = xlR1C1
Anschließend können Sie die Formel wie folgt einfügen:
=SUM(R[-13]C:R[-2]C)
Aktualisieren:
Sie können die Notwendigkeit des Festlegens von ReferenceStyle vermeiden, indem Sie
<YourCellReference>.FormulaR1C1 = "=SUM(R[-13]C:R[-2]C)"
Antwort3
Vielleicht könntest Du hiermit eine Neuberechnung der gesamten Tabelle erzwingen:
http://msdn.microsoft.com/en-us/library/bb687891.aspx
Ein Makro, das umbenannt und dann die Tabelle erneut umbenannt, sollte problemlos funktionieren. Vielleicht könnten Sie es am Ende des Pearlscripts ausführen? Tut mir leid, ich weiß wirklich nicht viel über Pearl.
Oder verwenden Sie die Tastenkombination STRG+ALT+F9. Wenn dies funktioniert, verwenden Sie VBA mit dieser Funktion:Anwendung.Vollständig berechnen
Antwort4
Unter Excel Tools | Calculations
können Sie den Berechnungsmodus einstellen. Wenn dieser auf „Automatisch“ eingestellt ist, sollte Excel die Formelergebnisse aller Felder automatisch aktualisieren, auch beim Öffnen der Datei.
Die Berechnungseinstellungen können auch für einzelne Arbeitsblätter festgelegt werden. Daher ist es möglicherweise möglich, dass das Perl-Skript den manuellen Aktualisierungsmodus einstellt.