Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Formeln in Zellbereich eintragen per VBA-Array

Formeln in Zellbereich eintragen per VBA-Array
31.01.2013 16:48:57
Herbert
Hallo,
eine Formel kann ich mit VBA in eine Zelle mit folgendem Code eintragen:
ActiveCell.FormulaR1C1 = "=IF(RC[-64]="""","""",maxBlock2(ADDRESS(ROW()-1,COLUMN()-63)&"":""&ADDRESS(ROW()-1,54)&"",""&ADDRESS(ROW(),7)&"":""&ADDRESS(ROW(),COLUMN()-64),1)/2)"
Da ich aber über 1500 dieser Formeln gleichzeitig einsetzen muss, möchte ich diese Formeln nun per VBA in ein Array einlesen und dann in einem Rutsch in das Tabellenblatt schreiben. Dies habe ich mit dem folgenden Code vergeblich versucht:
Sub FormelnEintragen()
Dim ArrRestBlock1, c, r
Application.EnableEvents = False
ArrRestBlock1 = Range("BT19:DL20").Value
For r = 0 To 1
For c = 1 To 45
ArrRestBlock1(r, c) = _
"=IF(ADDRESS(ROW()19+r),COLUMN()-" & 63 & ")="""","""",maxBlock2(ADDRESS(ROW()-1, _
COLUMN()-" & 62 + c & ")&"":""&ADDRESS(ROW()-1,54)&"",""&ADDRESS(ROW(),7)&"":""&ADDRESS(ROW(),COLUMN()-" & 63 + c & "),1)/2)"
Next c
Next r
Range("BT19:DL20").Value = ArrRestBlock1
Application.EnableEvents = True
End Sub
Kann mir bitte jemand sagen, wo da der Fehler sitzt?
Dafür vielen Dank im Voraus!
Servus

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA : Funktion in Zellbereich eintragen
31.01.2013 17:06:04
NoNet
Moin Herbert,
Verstehe ich das richtig : Du möchtest in den Bereich BT19:DL20 jeweils die gleiche funktion eintragen ?
Das ginge direkt so :
Range("BT19:DL20").FormulaR1C1 = "=IF(RC[-64]="""","""",maxBlock2(ADDRESS(ROW()-1,COLUMN()-63)&"":"" & ADDRESS(ROW()-1,54)&"",""&ADDRESS(ROW(),7)&"":""&ADDRESS(ROW(),COLUMN()-64),1)/2)"
Der Funktionsstring in Deinem Makro entspricht jedoch nicht ganz der dargestellten Funktion.
Die Arithmetik habe ich nicht so ganz verstanden, kannst Du sie mir bitte kurz erklären ?
Gruß, NoNet

Anzeige
AW: VBA : Funktion in Zellbereich eintragen
31.01.2013 18:26:43
Herbert
Hallo NoNet,
danke für Deine Mühe, doch nun bin ich selbst drauf gekommen. Die Sequenz muss lauten:
ArrRestBlock1(r, c) = "=IF(ADDRESS(ROW(),COLUMN()-64)="""","""",maxBlock2(ADDRESS(ROW()-1,COLUMN()-63)&"":""&ADDRESS(ROW()-1,54)&"",""&ADDRESS(ROW(),7)&"":""&ADDRESS(ROW(),COLUMN()-64),1)/2)"
Diese Formel wird dann mittels Array in 45 Spalten mal 32 Zeilen geschrieben. Das Ganze ist übrigens mal wieder für AzSee.
Servus
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige