Matrixformel per VBA (Excel 2003)
#1
Hallo an Alle,

wie kann ich eine sehr lange Matrixformel per VBA in eine Zelle schreiben?

Mein Test ohne die bei Matrixformeln üblichen Klammern:
Code:
Sub test()

Range("A4").Formula = "=IF(SUMPRODUCT((myElementHauptFest:myElementHauptRel=myElementHauptRel)*(myElementUnterFest:myElementUnterRel=myElementUnterRel)*(myAuswahlFest:myAuswahlRel=myAuswahlRel))=1,myAuswahlRel&TEXT(IF(ISERROR(SUMPRODUCT((myAuswahlFest:myAuswahlRel=myAuswahlRel)*(MATCH(myElementHauptFest:myElementHauptRel&myElementUnterFest:myElementUnterRel&myAuswahlFest:myAuswahlRel,myElementHauptFest:myElementHauptRel&myElementUnterFest:myElementUnterRel&myAuswahlFest:myAuswahlRel,0)=ROW($1:1))*1)),1,SUMPRODUCT((myAuswahlFest:myAuswahlRel=myAuswahlRel)*(MATCH(myElementHauptFest:myElementHauptRel&myElementUnterFest:myElementUnterRel&myAuswahlFest:myAuswahlRel,myElementHauptFest:myElementHauptRel&myElementUnterFest:myElementUnterRel&myAuswahlFest:myAuswahlRel,0)=ROW($1:1))*1)),""00""),INDEX($N$3:N3,MATCH(myElementHauptRel&myElementUnterRel&myAuswahlRel,$E$3:E3&$F$3:F3&$H$3:H3,0)))"

End Sub

Nur wie kriege ich da jetzt noch die geschweiften Klammern hin?

Sinn des Ganzen: Es soll in Spalte A eine Nummerierung eingefügt werden, dabei werden drei Spalten verglichen - bei gleichem Inhalt sollen sie jeweils die gleiche Nummer bekommen. Und das möchte ich per VBA realisieren.


Gruß
Silke
Top
#2
Hi Silke,

probier mal

Range("A4").FormulaArray = "=IF(SUMPRODUCT
Überlegen macht überlegen
Gruss aus dem schönen Hunsrück
_______ Klaus-Martin _______
Top
#3
Hallo Klaus,

das funktioniert irgendwie nicht - die Formel ist zu lang und es wird die R1C1-Schreibweise verlangt, wenn ich das in der Hilfe richtig gelesen habe...

Vielleicht geht es auch einfacher ohne Matrixformel?? Hier nochmal was eigentlich gewollt ist, dabei habe ich jetzt das Ganze mal auf eine Spalte beschränkt (ich werde einfach mit einer Hilfsspalte arbeiten):



Tabelle2
ABC
1NummerPrüfelementBewertung
2NA01Führungsprozesse Kommunikation und DokumentationNA
3NA01Führungsprozesse Kommunikation und DokumentationNA
4NA01Führungsprozesse Kommunikation und DokumentationNA
5NA01Führungsprozesse Kommunikation und DokumentationNA
6NA01Führungsprozesse Kommunikation und DokumentationNA
7H+01Beschaffungsprozesse LieferantenmanagementAH+
8H+01Beschaffungsprozesse LieferantenmanagementAH+
9NA02Beschaffungsprozesse LieferantenmanagementNA
10NA02Beschaffungsprozesse LieferantenmanagementNA
11NA03Führungsprozesse ControllingNA
12H01Führungsprozesse Geschäftsplanung strat.H
13H02D10 - Anlagen für brennbare Flüssigkeiten H
14H02D10 - Anlagen für brennbare Flüssigkeiten H
15H02D10 - Anlagen für brennbare Flüssigkeiten H
16NA04D15 - Flurförderzeuge NA
17NA04D15 - Flurförderzeuge NA
18H+02D22 - Medizinprodukte H+
19H+03E4 - Wassermischbare bzw. wassergemischte Kühlschmierstoffe H+
20NA01Führungsprozesse Kommunikation und DokumentationNA
21NA01Führungsprozesse Kommunikation und DokumentationNA
22H+02D22 - Medizinprodukte H+
23H+02D22 - Medizinprodukte H+

http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://hajo-excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 14.11 einschl 64 Bit


Die Liste ist unsortiert und es soll in Spalte A eine Nummerierung eingefügt werden. Dabei sollen gleiche Inhalte in Spalte B auch die gleiche Nummer bekommen (habe das in Spalte A mal manuell nachgebaut) zur Nummer soll vornedran der Wert aus Spalte C dazugeschrieben werden.

Diese Nummerierung möchte ich per VBA in Spalte A einfügen, das ist der Knackpunkt an der Sache. Ich hoffe das geht auch irgendwie ohne Matrixformel??

Ich hoffe das Ganze ist einigermaßen verständlichHuh

Gruß
Silke
Top
#4
Oh Sorry..... hatte die Frage nicht richtig gelesen :16:
Hi Silke,
das mit den geschweiften klammern geht so
Nach der Eingabe der Formel mit
STRG + ALT + ENTER
abschließen.
Die { } werden dann automatisch gesetzt
Gruß
DeBabba
Top
#5
:s ok ich glaube das überschneidet sich jetzt....

Hallo DeBabba,

die geschweiften Klammern einzugeben ist nicht das Problem.

Das Problem ist diese Formel in VBA umzusetzen.

Aber trotzdem Danke!

Gruß
Silke
Top
#6
Hallo Silke,

Möchtest Du die Nummerierung auf Knopfdruck per Vba realisieren?

Wenn Du es per Formel lösen möchtest, dann müsste es mit den Funktionen Zählenwenn, Vergleich und Index machbar sein.

Ich kann Dir aber erst heute Abend eine Lösung anbieten.
Gruß Atilla
Top
#7
Hi Atilla,

bist du es wirklich ??? :18:

Also die Nummer soll in Spalte A eingetragen werden, wenn in Spalte C eine Auswahl getroffen wurde.

Gruß
Silke
Top
#8
Hallo Silke,


ja, ich glaube, ich bin es.Blush

Bin jetzt Unterwegs, ich schau mir das heute Abend an.
Eine Vba Lösung kommt also in Frage?!
Können unterhalb der Eingabe auch schon Nummern vorhanden sein?
Gruß Atilla
Top
#9
Hallo Atilla,

wenn ich jetzt nicht (vom vielen rumprobieren) total auf dem Holzweg bin - dann habe ich glaube ich die Lösung gefunden - schau mal:



Tabelle3
ABCD
1NummerPrüfelementBewertungHilfsspalte
2NA01Führungsprozesse Kommunikation und DokumentationNA1
3NA01Führungsprozesse Kommunikation und DokumentationNA1
4NA01Führungsprozesse Kommunikation und DokumentationNA1
5NA01Führungsprozesse Kommunikation und DokumentationNA1
6NA01Führungsprozesse Kommunikation und DokumentationNA1
7H+02Beschaffungsprozesse LieferantenmanagementAH+2
8H+02Beschaffungsprozesse LieferantenmanagementAH+2
9NA03Beschaffungsprozesse LieferantenmanagementNA3
10NA03Beschaffungsprozesse LieferantenmanagementNA3
11NA04Führungsprozesse ControllingNA4
12H05Führungsprozesse Geschäftsplanung strat.H5
13H06D10 - Anlagen für brennbare Flüssigkeiten H6
14H06D10 - Anlagen für brennbare Flüssigkeiten H6
15H06D10 - Anlagen für brennbare Flüssigkeiten H6
16NA07D15 - Flurförderzeuge NA7
17NA07D15 - Flurförderzeuge NA7
18H+08D22 - Medizinprodukte H+8
19H+09E4 - Wassermischbare bzw. wassergemischte Kühlschmierstoffe H+9
20NA01Führungsprozesse Kommunikation und DokumentationNA1
21NA01Führungsprozesse Kommunikation und DokumentationNA1
22H+08D22 - Medizinprodukte H+8
23H+08D22 - Medizinprodukte H+8

verwendete Formeln
Zelle Formel Bereich R1C1 für Add In
A2:A23=C2&TEXT(D2;"00") =RC[2]&TEXT(RC[3],"00")
D2: D23=WENN(ZÄHLENWENN(B$2:B2;B2)=1;MAX(D$1: D1)+1;SVERWEIS(B2;B$1: D1;3;)) =IF(COUNTIF(R2C[-2]:RC[-2],RC[-2])=1,MAX(R1C:R[-1]C)+1,VLOOKUP(RC[-2],R1C[-2]:R[-1]C,3,))

http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://hajo-excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 14.11 einschl 64 Bit


Mit einer Hilfsspalte D scheint es zu funktionieren. Und so kann ich dann die Formeln auch per VBA eintragen lassen.

Oder, was denkst du?

Gruß
Silke
Top
#10
... Frag mich nicht wie der Smiley in die Formel kommt...
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste