Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1336to1340
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

Formel per VBA einfügen

Formel per VBA einfügen
20.11.2013 11:57:26
Daniel
Hallo zusammen,
ich habe eine Datei, die automatisch verschiedene Makros ausführt sobald ein neues Tabellenblatt erstellt wird.
Die Datensätze variieren von Blatt zu Blatt.
Nun möchte ich, dass das Makro in Zelle H6 die Formel "Teilergebnis(9;H7:H?)" einfügt.
Wobei H? davon abhängig ist, wie viele Zeilen mit Daten gefüllt sind.
Hat jemand eine Lösung parat?
Vielen Dank schon mal!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel per VBA einfügen
20.11.2013 12:30:37
Rudi
Hallo,
cells(6,8).formulalocal="=teilergebnis(9;h7:h" &cells(rows.count,8).end(xlup).row &")"
Gruß
Rudi

AW: Formel per VBA einfügen
20.11.2013 12:36:16
Daniel
Ein Traum! Vielen Dank und noch einen schönen Tag :)

@Rudi, ich Springe mal mit auf den fahrenden Zug..
21.11.2013 00:50:57
Thorben
Hallo Rudi,
Hallo Daniel,
das ist ja mal ne klasse Sache.
Rudi, kannst Du mir vielleicht zeigen wie ich das auf folgende Formeln anwenden kann und wie bzw. wo es eingebaut werden muss:
=SUMME(N(HÄUFIGKEIT(ZEILE(1:9852);TEILERGEBNIS(3;INDIREKT("V"&ZEILE(1:9852)))*VERGLEICH(E1:E9852&""; E1:E9852&"";))>0)) -2
-E9852 soll durch rows.count / xlup genau ermittelt werden
-ZEILE($1:$9852 wenn möglich auch!?
=SUMMENPRODUKT((G4:G9852>=100000)*(G4:G9852<=350000))+SUMMENPRODUKT((H4:H9852>=100000) *(H4:H9852<=350000)) &" - Projekte"
-G9852 & H9852 soll durch rows.count / xlup genau ermittelt werden
MATRIXFORMEL:
{=SUMMENPRODUKT((LINKS($G$1:$G$9852;3)="DDT")*(VERGLEICH($E$1:$E$9852&LINKS($G$1:$G$9852;3); $E$1:$E$9852&LINKS($G$1:$G$9852;3);0)=ZEILE($1:$9852));TEILERGEBNIS(103;INDIREKT("V"&ZEILE($1:$9852) ))) }
-G9852 & E9852 soll durch rows.count / xlup genau ermittelt werden
-ZEILE($1:$9852 wenn möglich auch!?
Für Deine Hilfe schon einmal vielen Dank.
MfG
Thorben

Anzeige
AW: @Rudi, ich Springe mal mit auf den fahrenden Zug..
21.11.2013 09:17:57
Luschi
Hallo Thorben,
für die 1. Forbel geht das so:

Sub FormelSchreiben()
Dim ws As Worksheet, _
n As Long, s As String
'Arbeitstabelle
Set ws = ActiveSheet
'letzte beschriebene Zeile in Spalte 'E'
n = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row
'Formel als String zusammensetzen
'Chr(34) & Chr(34) entspricht "" in der Formel
s = "=SUMME(N(HÄUFIGKEIT(ZEILE(1:" & n & ");TEILERGEBNIS(3;INDIREKT(""V""&ZEILE(1:" & n & _
")))*VERGLEICH(E1:E" & n & "&" & Chr(34) & Chr(34) & "; E1:E" & n & "&" & Chr(34) & _
Chr(34) & ";))>0)) -2"
'Formel schreiben in Zelle 'K1'
ws.Range("K1").FormulaLocal = s
'Objektvariable zerstören
Set ws = Nothing
End Sub
Gruß von Luschi
aus klein-Paris

Anzeige
s As String als MtrxFormel in Zelle!Bitte um Hilfe
22.11.2013 00:27:02
Thorben
Hallo Luschi,
vielen Dank für Deine Hilfe.
Jetzt weiß ich wie und auf welche weise ich die Formeln anpassen kann.
Was ich jetzt aber nicht verstehe ist, wie extrahiere ich einen String wieder als String und schreibe ihn als MtrxFormel in eine Zelle.
Ich denke das Problem ist hier dass die Formel als String zusammengesetzt wird und nun nicht mehr als Mtrx Formel für "FormulaArray" deklariert werden kann. Jedenfalls klappt es nicht und ich finde im www nichts derartiges für VBA, nur in Foren für C#, MATLAB, JAVA o.Ä. gibt es derartige Fragen wie "String als String bzw StringArray übergeben"
Vieleicht geht das irgendwie mit ActiveCell.Address(ReferenceStyle:=xlA1)
Möglicherweise bin ich aber auf dem Holzweg und die Lösung ist simpel!
Mag hier mal einer von Euch helfen.
Vielen Dank
MfG
Thorben

Anzeige
AW: s As String als MtrxFormel in Zelle!Bitte um Hilfe
22.11.2013 12:44:47
Luschi
Hallo Thorben,
hier die FormulaArray-Variante:

Sub ArrayFormelSchreiben()
Dim ws As Worksheet, _
n As Long, s As String
'Arbeitstabelle
Set ws = ActiveSheet
'letzte beschriebene Zeile in Spalte 'E'
n = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row
'Formel als String zusammensetzen
'Chr(34) & Chr(34) entspricht "" in der Formel
s = "=SUMPRODUCT((LEFT($G$1:$G" & n & ",3)=""DDT"")*(MATCH($E$1:$E$" & n & _
"&LEFT($G$1:$G$" & n & ",3), $E$1:$E$" & n & _
"&LEFT($G$1:$G$" & n & ",3),0)=ROW($1:$" & n & _
")),SUBTOTAL(103,INDIRECT(""V""&ROW($1:$" & n & "))))"
'Formel als Array schreiben in Zelle 'K2'
'bei FormulaArray gibt es keine länderspezifische Local-Variante,
'deshalb die amerikanischen Funktionsnamen
ws.Range("K2").FormulaArray = s
'Objektvariable zerstören
Set ws = Nothing
End Sub
Gruß von Luschi
aus klein-Paris

Anzeige
dieses Ding Mensch sitzt immer 40cm vor dem TFT..
22.11.2013 19:41:19
Thorben
danke Luschi,
manchmal könnt ich heulen vor Blindheit...
Gruß aus Bremen
Thorben

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige