Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Tabellenblattstruktur mit VBA erstellen
#31
Hallo @all
Danke für den Tipp André
kann im Moment nicht drauf zugreifen sitze bei der Buckligen, leider nur am Läppi.
Aber Morgen, da wird'z was geben...

man liest sich ...
Top
#32
Hallo Frank,
Bin gerade auch nur im Smartphone - Modus, ...:17:
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#33
Hallo @all & André

weitere Fehlermeldungen erhalten:
zum einen Anweisungsende
oder
Eigenschaft RowSource konnte ...
Code:
With ActiveSheet.Select.Case.Cells(Rows.Count, 3)
'   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
    Application.ScreenUpdating = True
   End With
End Sub
Was stimmt hier oder da nicht, ich bitte um Aufklärung

man liest sich ... :s
mfg
Top
#34
Hallo Frank,

da bringst Du jetzt aber ganz schön was durcheinander. Die Struktur vom code solltest Du nicht verändern. Das Select Case gehört nicht in die With - Anweisung, sondern dorthin, wo es vorher stand ;-( Jetzt schreib ich's mal zeilenweise:

Schreibe nur
With ActiveSheet

und dann
Select Case .cells(rows.count,3).End(xlUp).Value

Also
Code:
With ActiveSheet
'   With ActiveSheet 'Worksheets("29.08.2014")
    Application.ScreenUpdating = False
'      For lngC = 3 To .Cells(.Rows.Count, 3).End(xlUp).Row
         Select Case .cells(rows.count,3).End(xlUp).Value
...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#35
Hallo André & @all
Danke für die Hilfe, Code wird eingepflegt.

mfg
Top
#36
Hallo Frank,

meine Formel ist zum Eintragen in die Tabelle. Für VBA müsste Sie erst mal umgeschrieben werden.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#37
Hallo Edgar & @all

Da habe ich aber jetzt ein Problem.
Wenn ich die Formel in eine Zelle, über den Makrorekorder packe, und mit Ok abschliesse, ist alles korrekt.
Wenn aber die Formel erweitert wird, siehe unten:
Klartext
Code:
=WENN(C11="";"";WENN(LINKS(C11;3)="Plu";SUMME((((WENN(ISTTEXT(E11);VERWEIS(E11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});E11)+WENN(ISTTEXT(F11);VERWEIS(F11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});F11))-WENN(ISTTEXT(G11);VERWEIS(G11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});G11))*WENN(ISTTEXT(H11);VERWEIS(H11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});H11))/WENN(ISTTEXT(I11);VERWEIS(I11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});I11));WENN(LINKS(C11;3)="2 a";WENN(ISTTEXT(E11);VERWEIS(E11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});E11)+WENN(ISTTEXT(F11);VERWEIS(F11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});F11);WENN(LINKS(C11;3)="gr.";WENN(ISTTEXT(E11);VERWEIS(E11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});E11)&WENN(ISTTEXT(F11);VERWEIS(F11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});F11)&WENN(ISTTEXT(G11);VERWEIS(G11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});G11);WENN(ISTTEXT(E11);VERWEIS(E11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});E11)&WENN(ISTTEXT(F11);VERWEIS(F11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});F11)&WENN(ISTTEXT(G11);VERWEIS(G11;{"a";"k";"o";"s";"x"};{4;8;9;3;0});G11)))))


Makro = Fehlermeldung > Zeile zu lang
Code:
Sub Makro3()
' Makro3 Makro
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-28]="""","""",IF(LEFT(RC[-28],3)=""Plu"",SUM((((IF(ISTEXT(RC[-26]),LOOKUP(RC[-26],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-26])+IF(ISTEXT(RC[-25]),LOOKUP(RC[-25],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-25]))-IF(ISTEXT(RC[-24]),LOOKUP(RC[-24],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-24]))*IF(ISTEXT(RC[-23]),LOOKUP(RC[-23],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-23]))/IF(ISTEXT(RC[-22]),LOOKUP(RC[-22],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-22])),IF(LEFT(RC[-28],3)=""2 a"",IF(ISTEXT(RC[-26]),LOOKUP(RC[-26],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-26])+IF(ISTEXT(RC[-25]),LOOKUP(RC[-25],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-25]),IF(LEFT(RC[-28],3)=""gr."",IF(ISTEXT(RC[-26]),LOOKUP(RC[-26],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-26])&IF(ISTEXT(RC[-25]),LOOKUP(RC[-25],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-25])&IF(ISTEXT(RC[-24]),LOOKUP(RC[-24],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-24]),IF(ISTEXT(RC[-26]),L

------------------------- Hier ist die Zeile umbrochen -----------------

OOKUP(RC[-26],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-26])&IF(ISTEXT(RC[-25]),LOOKUP(RC[-25],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-25])&IF(ISTEXT(RC[-24]),LOOKUP(RC[-24],{""a"";""k"";""o"";""s"";""x""},{4;8;9;3;0}),RC[-24])))))"
End Sub

Da noch etliche Spiele folgen sollen mit Berechnungsformeln, glaube ich ist die Case-Geschichte hier wohl am angebrachtesten.

Oder hat jemand eine andere Lösungsidee ?
Top
#38
Hallo Frank,

eine codezeile darf in Excel / VBA wohl > 25.500 Zeichen enthalten. Wenn ich mir Deine Zeile anschaue, dürfte das noch nicht erreicht sein.
Allerdings darf eine Formelzeile nicht so lang sein, da liegt die Grenze bei 1024 Zeichen. Deine "deutsche" Formel hat schon ca. 1014, die "englische" ist deutlich länger. Eine clevere Lösung wirst Du da wohl nicht finden.

Falls die Formel in deutsch ausreichend wäre, könnte man sie auch als Text eintragen, dann in eine Formel umwandeln und von der Zelle aus in die anderen kopieren. Alternativ könnte man auch mit Zwischenergebnissen arbeiten.

Oder Du lässt VBA das ausrechnen Huh
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#39
(01.09.2014, 20:08)schauan schrieb: ...Oder Du lässt VBA das ausrechnen...
Hallo André, deine Zeilen lesen sich fast wie Balsam, aber (großes) ABER.
Es gibt 20 - 27 Spiele unterschiedlichster Rechenart:
2 auf die Vollen =_______________________________nur addieren
Plus Plus Minus Mal Geteilt =______________________((((9+9)-1)*9)/2)
301 oder 501 =_________________________________9*10;8*9;7*8 usw bis auf annähernd 0 runter. (Sieger mit den Wenigsten Holz)
grosse H.Nr. = __________________________________9_8_7
kleine H.Nr. = ___________________________________0_0_1

und so weiter
Das eben versuch ich mittels VBA abzudecken.
Für mich am besten geeignet (nach jetzigen Wissensstand) wohl die Variante per "Case"
Oder jedes Spiel bekommt seine eigene Summenspalte, hab ja jede Menge hinten frei. :21:
Anschließend nur die Zahlen in die betreffende Summenspalte AE reinkopieren :05: Idea

Arrrrrggggg...IdeaBlushIdeaExclamationIdeaExclamation
un fast in die Heija Früh-früh
Top
#40
Hallo @all,
gib es eventuell noch andere Lösungsansätze, wegen der Beschränkung der (1024 Zeichen) in der Formellänge
Top


Gehe zu:


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