PDA

Vollständige Version anzeigen : Funktion via VBA


Mazze
16.03.2009, 13:29
Hallo,

kann mir jemand erklären wie ich folgende Formeln in VBA erstelle?

=SUMMEWENN($A$3:$A$1000;D1;$B$3:$B$1000)

=WENN(D$1=$A4;D$2/D$3*$B4;0)

pefeu
16.03.2009, 13:52
Hallo,

das könnte z. B. so aussehen:
<FONT FACE="Arial,FixedSys"Size=2>
<Blockquote>
<FONT COLOR=#0000FF>Option Explicit</FONT>

<FONT COLOR=#008000>'&nbsp;&nbsp;&nbsp;=SUMMEWENN($A$3:$A$1000;D1;$B$3:$B$1000)</FONT>
<FONT COLOR=#008000>'&nbsp;&nbsp;&nbsp;=WENN(D$1=$A4;D$2/D$3*$B4;0)</FONT>

<FONT COLOR=#0000FF>Public Sub</FONT>&nbsp;Formeln_VBA()

&nbsp;&nbsp;&nbsp;Range("F1").Value&nbsp;=&nbsp;Application.SumIf(Range("A3:A1000"),&nbsp;Range("D1"),&nbsp;Range("B3:B1000"))

&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>If</FONT>&nbsp;Range("D1").Value&nbsp;=&nbsp;Range("A4").Value&nbsp;<FONT COLOR=#0000FF>Then</FONT>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Range("H1").Value&nbsp;=&nbsp;Range("D2").Value&nbsp;/&nbsp;Range("D3").Value&nbsp;*&nbsp;Range("B4").Value
&nbsp;&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>Else</FONT>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Range("H1").Value&nbsp;=&nbsp;0
&nbsp;&nbsp;&nbsp;<FONT COLOR=#0000FF>End If</FONT>

<FONT COLOR=#0000FF>End Sub</FONT>&nbsp;

</Blockquote>
<FONT FACE="Courier New,FixedSys"Size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Code eingefügt mit <b><a href="http://rtsoftwaredevelopment.de" target="_blank">Syntaxhighlighter 4.4</a></b></FONT>
<FONT FACE="Arial,FixedSys"Size=2>
Gruß Peter

jinx
16.03.2009, 15:50
Moin, Peter,

meiner Meinung nach ist das eine ideale Aufgabenstellung für Funktionen, denen die Bereich als Parameter übergeben werden.

@Mazze:
Formel in Tabelle schreiben, Makro-Rekorder starten, Zellen per F2 editieren, Makro-Rekorder stoppen, Ergebnis im Editor ansehen und nachbearbeiten.... ;)

NoNet
16.03.2009, 17:09
Hallo Mazze,

Deine Frage ist nicht ganz eindeutig interpretierbar. Ich frage mich, ob Du...

1.) Diese Berechnung dieser Funktionen anstatt im Tabellenblatt lieber per VBA durchführen möchtest ?
=&gt; dann wäre pefeus Lösung passend

oder :
2.) Diese Funktionen per VBA in eine Zelle schreiben möchtest ?
Das klappt mit diesem VBA-Code :
Sub FunktionenPerVBAinTabelleSchreiben()
'Schreibt folgende Funktionen in das Tabellenblatt (Zellen E1:E2) :
'=SUMMEWENN($A$3:$A$1000;D1;$B$3:$B$1000)
'=WENN(D$1=$A4;D$2/D$3*$B4;0)

[E1].Formula = "=Sumif($A$3:$A$100,D1,$B$3:$B$100)"
[E2].Formula = "=If(D$1=$A4,D$2/D$3*$B4,0)"
End Sub