Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


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
to top
#2
Hi Silke,

probier mal

Range("A4").FormulaArray = "=IF(SUMPRODUCT
to 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_beispiel..._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
to 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
to top
#5
Confused 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
to 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

Excel 2007
to 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
to 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

Excel 2007
to 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;3Wink) =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_beispiel..._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
to top
#10
... Frag mich nicht wie der Smiley in die Formel kommt...
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Xlsm Datei mit Office 2003 öffnen Thomas der Xte 7 127 19.11.2016, 17:51
Letzter Beitrag: Thomas der Xte
  Formel aus Excel 2010 in Excel 2003 übertragen Robert 2 275 12.07.2016, 16:01
Letzter Beitrag: Robert
  Matrixformel zur Auflistung von Zeilen Hawkeye 8 637 17.04.2016, 12:34
Letzter Beitrag: BoskoBiati
  Makro Excel 2003 funktioniert nicht richtig in Excel 2010 Nana2003 6 1.967 13.07.2015, 17:00
Letzter Beitrag: schauan
  Excel 2003 - Zeileninhalt 20 mal tauschen - VBA ??? Angelina 11 1.319 28.04.2015, 10:40
Letzter Beitrag: Angelina
  Zeilenvergleich VBA Excel 2003 ? Angelina 35 4.417 08.03.2015, 10:42
Letzter Beitrag: Angelina
  Formel von Excel 2010 auf Excel 2003 anpassen Orangegugu 3 1.421 06.03.2015, 13:23
Letzter Beitrag: atilla
  VBA - Excel 2003 - Bereich aus Datenbank kopieren und einfügen ? Angelina 32 4.611 06.02.2015, 15:41
Letzter Beitrag: Angelina
  VBA Excel 2003 - Leerzellen spaltenweise auswerten ? Angelina 10 1.924 28.01.2015, 14:22
Letzter Beitrag: Rabe
  Matrixformel Sven_1991 4 1.139 09.10.2014, 10:44
Letzter Beitrag: Sven_1991

Gehe zu:


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