Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array Formelergebnis in Zellen schreiben

Array Formelergebnis in Zellen schreiben
06.05.2023 14:46:19
Astiss

Hallo zusammen,

ich möchte mit dem folgenden Code Daten aus einem Array ins Tabellenblatt schreiben:
Sub Aray()
Dim arr()
Dim Size As Integer
Dim i As Integer
Size = WorksheetFunction.CountA(Worksheets(1).Columns(1))

ReDim arr(Size)

For i = 0 To Size

arr(i) = "=VERGLEICH(RECHTS(F3;6)*1;RECHTS('[Datenbasis.xlsm]Datenbasis'!$B:$B;6)*1;0)"

Next i

Worksheets(1).Range("AB3").Resize(Size).FormulaLocal = arr

End Sub

Dabei kommt es zu einem Fehler - nämlich die Formel wird nicht 1zu1 in die Zelle geschrieben sondern es wird ein @-Zeichen mit eingefügt, wo auch immer dies herkommt.
Also:
=VERGLEICH(RECHTS(F3;6)*1;RECHTS(@'[Datenbasis_RD119 .xlsm]Datenbasis'!$B:$B;6)*1;0)
statt
=VERGLEICH(RECHTS(F3;6)*1;RECHTS('[Datenbasis_RD119 .xlsm]Datenbasis'!$B:$B;6)*1;0)

Es gibt doch sicherlich eine Erklärung wo das @-Zeichen herkommt und wie ich das unterdrücken kann ohne
dass ich jetzt im Nachgang das @-Zeichen durch eine weitere Funktion löschen muss.

Und dann noch generell die Frage, kann ich eigentlich die Formel im Array selbst berechnen lassen/ eintragen lassen, also dass nicht die Formel an sich selbst sondern deren Ergebnis direkt in Excel bzw. ins Array eingetragen wird.

Über eine Hilfestellung wäre ich sehr dankbar.
Gruß Astis

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array Formelergebnis in Zellen schreiben
06.05.2023 16:56:10
Alwin WeisAngler
Hallo,

das @ wird bei mir nicht (Office 2019) nicht gesetzt, auch nicht, wenn der Bereich eine formatierte Tabelle ist.
Berechnen im Array lässt sich Vieles. Dazu braucht es beide Beispieldateien. Es wird wohl kaum einer Lust haben das Rohmaterial für die Formel selbst in den Tabellen anzulegen.
Wobei hier zu überlegen wäre, dass mit der Formel man die Werte aus der geschlossenen Tabelle (Datenbasis_RD119 .xlsm) ziehen kann. Um es im Array zu verarbeiten muss diese Datei geöffnet werden und die Werte eingelesen werden.
Da dürfte das Schreibe der Formeln sinnvoller sein.

Gruß Uwe


Anzeige
Erklärungsversuch...
06.05.2023 20:14:18
Case
Hallo, :-)

nimm statt "ForlulaLocal "Formula2Local". ;-)

Erklärungsversuch mit Links: :-)

Impliziter Schnittmengenoperator...
Range.Formula2-Eigenschaft...
Formel im Vergleich zu Formel2...

Direktes Auswerten einer Formel geht über "Evaluate".

Application.Evaluate-Methode...

Nehmen wir - nur als Beispiel - an, du hast in A1 eine 1 stehen, in A2 eine 2 und in A3 eine 3. Die Formel "=SUMME(A1:A3)" könntest du in VBA dann so auswerten:
Dim lngTMP As Long
lngTMP = Evaluate("=Sum(A1:A3)")
MsgBox lngTMP 
Mit Evaluate musst du die Formel aber in der Englischen Schreibweise angeben. Also Match statt Vergleich. Statt Semikolon ein Komma. Das Internet ist voll von Beispielen.

Excel-Translator...
Übersetzung von Excel-Funktionen...

Servus
Case


Anzeige
AW: Erklärungsversuch...
07.05.2023 00:33:38
Astis
Hallo Case und vielen Dank für die Erklärung und die Links.
Es hat nun tatsächlich geklappt, nur steht jetzt logischer weise in jeder Zelle die selbe Formel.
Es sollte ja aber so sein dass F3, F4, F5 etc. eingetragen wird--- also Range("F" & i) --- oder so in der Art. da muss ich noch bissel
tüfteln.
Mit der Evaluate Funktion ist mir völlig neu, somit werde ich mich da mal etwas reinlesen.
Daher nochmals vielen Dank für die Ansätze und die durchaus nützlichen Links!

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige