Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Frank,
das Einzige was ich verstanden habe, ist das Du in Zelle E10 eine Summenformel stehen hast. Den Rest habe ich nicht verstanden. Könntest Du die Datei hier hochladen bzw einen Tabellenausschnitt hier darstellen?
Gruß Stefan Win 10 / Office 2016
Registriert seit: 15.04.2014
Version(en): Office 2007
Hallo Stefan, genau das habe ich befürchtet, aus diesem Grund hier eine Tabelle, aber nur Daten keine Code.
Formeln in Makro reinlegen oder woanders.xlsx (Größe: 12,47 KB / Downloads: 6)
Im übrigen Danke für die aufopfernde Zeit deinerseits (eurer allen) mfg
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Frank, ich hatte jetzt viele vergebliche Versuche um deine Array-Formel angepaßt zu kriegen bis ich bemerkt habe. Es geht auch ohne Array. Ob da unbedingt eine Array-Formel benötigt wird, weiß ich nicht. Zumindest komme ich in deiner Beispieldatei auf dasselbe Ergebnis wie Du. Ich habe bei den Formel die Abfrage nach den 2 Neunen und den Hausnummern entfernt. Aber teste mal selber. Code: Sub prcFranksFormelnEintragen() Dim lngC As Long With Worksheets("Tabelle1") For lngC = 2 To .Cells(.Rows.Count, 4).End(xlUp).Row Select Case .Cells(lngC, 4).Value Case "2 auf die Vollen" .Cells(lngC, 32).FormulaR1C1 = "=IF(RC[-25]=""AA"",4,IF(RC[-25]=""s"",3,IF(RC[-25]=""x"",0,IF(RC[-25]=""k"",8,RC[-25]))))+IF(RC[-24]=""AA"",4,IF(RC[-24]=""s"",3,IF(RC[-24]=""x"",0,IF(RC[-24]=""k"",8,RC[-24]))))" Case "gr.H.Nr.", "kl.H.Nr." .Cells(lngC, 32).FormulaR1C1 = "=IF(RC[-25]=""AA"",4*100,IF(RC[-25]=""s"",3*100,IF(RC[-25]=""x"",0*100,IF(RC[-25]=""k"",8*100,RC[-25]*100))))+IF(RC[-24]=""AA"",4*10,IF(RC[-24]=""s"",3*10,IF(RC[-24]=""x"",0*10,IF(RC[-24]=""k"",8*10,RC[-24]*10))))+IF(RC[-23]=""AA"",4,IF(RC[-23]=""s"",3,IF(RC[-23]=""x"",0,IF(RC[-23]=""k"",8,RC[-23]))))" Case Else .Cells(lngC, 32).Value = "" End Select Next lngC End With
End Sub
PS: Die Formel werden in der Spalte AF eingetragen. Ist kein passender Auswahl in der Spalte D drin, ist die Zelle leer.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 15.04.2014
Version(en): Office 2007
PHP-Code: Sub prcFranksFormelnEintragen() ' Spieleberechnung ' Suchspalte ist C ' Suchspalte ist 3 ' von AE auf E ; F ; G ; H ; I ; J ; K ; L ; M ; N ; O ; P ; Q ; R ; S ; T ; U ; V ; W ; X ' von 31 auf 26 ; 25 ; 24 ; 23 ; 22 ; 21 ; 20 ; 19 ; 18 ; 17 ; 16 ; 15 ; 14 ; 13 ; 12 ; 11 ; 10 ; 9 ; 8 ; 7 ' von AE = 31 aus nach links gezählt ' ########### Spiele ############ ' # 2 auf die Vollen # ' # gr.H.Nr. # ' # kl.H.Nr. # ' # Plus Plus Minus Mal Geteilt # ' ########### Spiele ############ Dim lngC As Long With Worksheets("26.08.2014") For lngC = 3 To .Cells(.Rows.Count, 3).End(xlUp).Row Select Case .Cells(lngC, 3).Value Case "2 auf die Vollen" .Cells(lngC, 31).FormulaR1C1 = "=IFERROR(IF(RC[-26]=""a"",4,IF(RC[-26]=""s"",3,IF(RC[-26]=""x"",0,IF(RC[-26]=""k"",8,RC[-26]))))+IF(RC[-25]=""a"",4,IF(RC[-25]=""s"",3,IF(RC[-25]=""x"",0,IF(RC[-25]=""k"",8,RC[-25])))),"""")" Case "gr.H.Nr." .Cells(lngC, 31).FormulaR1C1 = "=IFERROR(((SUMPRODUCT(IF(ISNUMBER(RC[-26]),RC[-26],LOOKUP(RC[-26],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*100))+SUMPRODUCT(IF(ISNUMBER(RC[-25]),RC[-25],LOOKUP(RC[-25],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*10))+SUMPRODUCT(IF(ISNUMBER(RC[-24]),RC[-24],LOOKUP(RC[-24],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*1),"""")" Case "kl.H.Nr." .Cells(lngC, 31).FormulaR1C1 = "=IFERROR(((SUMPRODUCT(IF(ISNUMBER(RC[-26]),RC[-26],LOOKUP(RC[-26],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*100))+SUMPRODUCT(IF(ISNUMBER(RC[-25]),RC[-25],LOOKUP(RC[-25],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*10))+SUMPRODUCT(IF(ISNUMBER(RC[-24]),RC[-24],LOOKUP(RC[-24],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*1),"""")" Case "Plus Plus Minus Mal Geteilt" .Cells(lngC, 31).FormulaR1C1 = "=IFERROR(SUM((((IF(RC[-26]=""a"",4,IF(RC[-26]=""s"",3,IF(RC[-26]=""x"",0,IF(RC[-26]=""k"",8,RC[-26]))))+IF(RC[-25]=""a"",4,IF(RC[-25]=""s"",3,IF(RC[-25]=""x"",0,IF(RC[-25]=""k"",8,RC[-25])))))-IF(RC[-24]=""a"",4,IF(RC[-24]=""s"",3,IF(RC[-24]=""x"",0,IF(RC[-24]=""k"",8,RC[-24])))))*IF(RC[-23]=""a"",4,IF(RC[-23]=""s"",3,IF(RC[-23]=""x"",0,IF(RC[-23]=""k"",8,RC[-23])))))/IF(RC[-22]=""a"",4,IF(RC[-22]=""s"",3,IF(RC[-22]=""x"",0,IF(RC[-22]=""k"",8,RC[-22]))))),"""")" Case Else .Cells(lngC, 31).Value = "" End Select Next lngC End With End Sub
Hallo Stefan & @all Wie kann ich verhindern das der Makrocode immer über die ganze Liste berechnen will. Eingetragenes ist ja schon berechnet, es soll aber nur letzte aktuelle Zeile berechnet werden. Mit PHP-Code: Application.ScreenUpdating = False Application.EnableEvents = False
kenne ich mich noch nicht aus, geschweige wo muss das eingesetzt werden? Direkt im UserForm_Initialize oder im Makro? Problem Nr. 2: PHP-Code: Dim lngC As Long With Worksheets("26.08.2014")
Wie auf das aktuelle Tabellenblatt fokusieren? Ich bitte euch um Hilfe, hab wieder mal nen Wald vor Augen... mfg
Registriert seit: 13.04.2014
Version(en): 365
Hallo, wie wäre es mit dieser einfachen Formel: =WENN(LINKS(D2;3)="2 a";WENN(ISTTEXT(G2);VERWEIS(G2;{"AA";"k";"s";"x"};{4;8;3;0});G2)+WENN(ISTTEXT(H2);VERWEIS(H2;{"AA";"k";"s";"x"};{4;8;3;0});H2);WENN(LINKS(D2;3)="gr.";WENN(ISTTEXT(G2);VERWEIS(G2;{"AA";"k";"s";"x"};{4;8;3;0});G2)&WENN(ISTTEXT(H2);VERWEIS(H2;{"AA";"k";"s";"x"};{4;8;3;0});H2)&WENN(ISTTEXT(I2);VERWEIS(I2;{"AA";"k";"s";"x"};{4;8;3;0});I2);WENN(ISTTEXT(G2);VERWEIS(G2;{"AA";"k";"s";"x"};{4;8;3;9});G2)&WENN(ISTTEXT(H2);VERWEIS(H2;{"AA";"k";"s";"x"};{4;8;3;9});H2)&WENN(ISTTEXT(I2);VERWEIS(I2;{"AA";"k";"s";"x"};{4;8;3;9});I2))) Arbeitsblatt mit dem Namen 'Tabelle1' | | A | B | C | D | E | F | G | H | I | J | K | L | AF | 2 | 24.08.2014 | 14:16 | Egon | 2 auf die Vollen | 01 | 01 | k | 4 | | | | | 12 | 3 | 24.08.2014 | 14:17 | Bertha | 2 auf die Vollen | 02 | 01 | 3 | 7 | | | | | 10 | 4 | 24.08.2014 | 14:19 | Egon | gr.H.Nr. | 01 | 02 | 7 | 5 | 3 | | | | 753 | 5 | 24.08.2014 | 14:20 | Bertha | gr.H.Nr. | 02 | 02 | 4 | 2 | 3 | | | | 423 | 6 | 24.08.2014 | 14:22 | Egon | kl.H.Nr. | 01 | 03 | aa | s | 4 | | | | 434 | 7 | 24.08.2014 | 14:23 | Bertha | kl.H.Nr. | 02 | 03 | k | 1 | x | | | | 819 |
Zelle | Formel | AF2 | =WENN(D2="";"";WENN(LINKS(D2;3)="2 a";WENN(ISTTEXT(G2);VERWEIS(G2;{"AA";"k";"s";"x"};{4;8;3;0});G2)+WENN(ISTTEXT(H2);VERWEIS(H2;{"AA";"k";"s";"x"};{4;8;3;0});H2);WENN(LINKS(D2;3)="gr.";WENN(ISTTEXT(G2);VERWEIS(G2;{"AA";"k";"s";"x"};{4;8;3;0});G2)&WENN(ISTTEXT(H2);VERWEIS(H2;{"AA";"k";"s";"x"};{4;8;3;0});H2)&WENN(ISTTEXT(I2);VERWEIS(I2;{"AA";"k";"s";"x"};{4;8;3;0});I2);WENN(ISTTEXT(G2);VERWEIS(G2;{"AA";"k";"s";"x"};{4;8;3;9});G2)&WENN(ISTTEXT(H2);VERWEIS(H2;{"AA";"k";"s";"x"};{4;8;3;9});H2)&WENN(ISTTEXT(I2);VERWEIS(I2;{"AA";"k";"s";"x"};{4;8;3;9});I2)))) |
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg |
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
29.08.2014, 16:23
(Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2014, 16:28 von schauan.)
Hallo Frank, in Excel - VBA ist das aktive Blatt clevererweise ActiveSheet Wenn Du Deinen code in einer Schleife über alle Zeilen legst, dann wird auch alles gemacht. For lngC = 3 To .Cells(.Rows.Count, 3).End(xlUp).Row Wenn Du nur die letzte bearbeiten willst, dann nimm auch nur die letzte. .Cells(.Rows.Count, 3).End(xlUp).Row Zusammengefasst also With ActiveSheet.Cells(.Rows.Count, 3).End(xlUp).Row und unten das zur Schleife gehörende Next entfernen.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 15.04.2014
Version(en): Office 2007
Hallo @all Danke an Edgar & André, für eure Beiträge/Lösungsansätze Habe die Formel noch nicht eingepflegt bzw. auf Active geändert. sind dann somit die Anweisungen hinfällig mit einzubauen?
Application.ScreenUpdating und .EnableEvent
mfg
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Frank, Du tust nur die Schleife weg, es wäre schon clever, die Formeleinträge in dein Excelblatt einzutragen.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 15.04.2014
Version(en): Office 2007
Hallo André bekomme Fehlermeldung: Fehler beim Kpmpilieren Unzulässiger oder nicht ausreichend definierter Verweis With ActiveSheet.Cells(. Rows.Count, 3).End(xlUp).Row da nochmal der Code PHP-Code: Private Sub prcFranksFormelnEintragen_Click() 'Spieleberechnung 'Dim lngC As Long richtig wenn deaktiviert ? With ActiveSheet.Cells(.Rows.Count, 3).End(xlUp).Row ' With ActiveSheet 'Worksheets("29.08.2014") Application.ScreenUpdating = False ' For lngC = 3 To .Cells(.Rows.Count, 3).End(xlUp).Row Select Case .Cells(lngC, 3).Value Case "2 auf die Vollen" .Cells(lngC, 31).FormulaR1C1 = "=IFERROR(IF(RC[-26]=""a"",4,IF(RC[-26]=""s"",3,IF(RC[-26]=""x"",0,IF(RC[-26]=""k"",8,RC[-26]))))+IF(RC[-25]=""a"",4,IF(RC[-25]=""s"",3,IF(RC[-25]=""x"",0,IF(RC[-25]=""k"",8,RC[-25])))),"""")" Case "gr.H.nr." .Cells(lngC, 31).FormulaR1C1 = "=IFERROR(((SUMPRODUCT(IF(ISNUMBER(RC[-26]),RC[-26],LOOKUP(RC[-26],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*100))+SUMPRODUCT(IF(ISNUMBER(RC[-25]),RC[-25],LOOKUP(RC[-25],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*10))+SUMPRODUCT(IF(ISNUMBER(RC[-24]),RC[-24],LOOKUP(RC[-24],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*1),"""")" Case "kl.H.nr." .Cells(lngC, 31).FormulaR1C1 = "=IFERROR(((SUMPRODUCT(IF(ISNUMBER(RC[-26]),RC[-26],LOOKUP(RC[-26],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*100))+SUMPRODUCT(IF(ISNUMBER(RC[-25]),RC[-25],LOOKUP(RC[-25],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*10))+SUMPRODUCT(IF(ISNUMBER(RC[-24]),RC[-24],LOOKUP(RC[-24],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}))*1),"""")" Case "Plus Plus Minus Mal Geteilt" .Cells(lngC, 31).FormulaR1C1 = "=IFERROR(SUM((((IF(RC[-26]=""a"",4,IF(RC[-26]=""s"",3,IF(RC[-26]=""x"",0,IF(RC[-26]=""k"",8,RC[-26]))))+IF(RC[-25]=""a"",4,IF(RC[-25]=""s"",3,IF(RC[-25]=""x"",0,IF(RC[-25]=""k"",8,RC[-25])))))-IF(RC[-24]=""a"",4,IF(RC[-24]=""s"",3,IF(RC[-24]=""x"",0,IF(RC[-24]=""k"",8,RC[-24])))))*IF(RC[-23]=""a"",4,IF(RC[-23]=""s"",3,IF(RC[-23]=""x"",0,IF(RC[-23]=""k"",8,RC[-23])))))/IF(RC[-22]=""a"",4,IF(RC[-22]=""s"",3,IF(RC[-22]=""x"",0,IF(RC[-22]=""k"",8,RC[-22]))))),"""")" Case Else .Cells(lngC, 31).Value = "" End Select ' Next lngC richtig wenn deaktiviert ? Application.ScreenUpdating = True End With End Sub
Hallo Edgar wie bekomme ich nun die Formel in meinen obrigen (geposteten) Code hinein? Code: =WENN(D2="";"";WENN(LINKS(D2;3)="2 a";WENN(ISTTEXT(G2);VERWEIS(G2;{"AA";"k";"s";"x"};{4;8;3;0});G2)+WENN(ISTTEXT(H2);VERWEIS(H2;{"AA";"k";"s";"x"};{4;8;3;0});H2);WENN(LINKS(D2;3)="gr.";WENN(ISTTEXT(G2);VERWEIS(G2;{"AA";"k";"s";"x"};{4;8;3;0});G2)&WENN(ISTTEXT(H2);VERWEIS(H2;{"AA";"k";"s";"x"};{4;8;3;0});H2)&WENN(ISTTEXT(I2);VERWEIS(I2;{"AA";"k";"s";"x"};{4;8;3;0});I2);WENN(ISTTEXT(G2);VERWEIS(G2;{"AA";"k";"s";"x"};{4;8;3;9});G2)&WENN(ISTTEXT(H2);VERWEIS(H2;{"AA";"k";"s";"x"};{4;8;3;9});H2)&WENN(ISTTEXT(I2);VERWEIS(I2;{"AA";"k";"s";"x"};{4;8;3;9});I2))))
allen ein trockenes Wochenende mfg
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
30.08.2014, 19:44
(Dieser Beitrag wurde zuletzt bearbeitet: 30.08.2014, 19:51 von schauan.)
Hallo Frank, Sorry, nicht nur das .row war zu viel. Schreibe nur with activesheet und dann Select Case .cells(rows.count,3)...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|