Formel richtig setzen

Hallo zusammen,

habe mir über VBA ein Modul zur Quersummenberechnung erstellt. Nun möchte ich mittels Quersumme iene bestimmte Zelle prüfen,ob die Quersumme z.B. 3 ist.

Meine Vorstellung sieht so aus: =WENN(Quersumme(F8)=3,dann G8=100, sonst leer. Wie formuliere ich diese Formel richtig? Alle meine Versuche sind bisher gescheitert.

LG Blondie

Hallo,

Du kannst keine Zahl mittels einer Formel in eine andere Zelle schreibseln. Daher muss Deine Formel in G8!

=WENN(Quersumme(F8)=3;100;"")

VG René

Hallo Rene,

danke für die schnelle Antwort. Das ist aber doof,dass die Formel in G8 muss, da ich dort überwiegend Zahlen per Hand eingeben muss. Gibt es keine andere Möglichkeit?

Nun sagt Excel mir in Zelle G8 „Name“ und mein Modul scheint auch nicht mehr zu funzen. Woran kann das liegen?

Hallo,

danke für die schnelle Antwort. Das ist aber doof,dass die
Formel in G8 muss, da ich dort überwiegend Zahlen per Hand
eingeben muss. Gibt es keine andere Möglichkeit?

Entweder EINGABE oder FORMEL in die Zelle. Beides geht nicht (so einfach! Mittels Daten/Gültigkeit kann ne Krücke gebaut werden.).

Nun sagt Excel mir in Zelle G8 „Name“ und mein Modul scheint
auch nicht mehr zu funzen. Woran kann das liegen?

NAME wird wohl mit der QUERSUMME zusammen hängen. Erkennt das liebe Excel nicht als Formel!
Bin für VBA zu doof und muss mich daher auf Formeln beschränken.
Um die Quersumme von F8 zu ermitteln, würde ich folgende Formel in G8 schreiben:
=WENN(SUMMENPRODUKT((0&TEIL(F8;SPALTE(1:1);1))*1)=3;100;"")

VG René

Hallo Blondie,

danke für die schnelle Antwort. Das ist aber doof,dass die
Formel in G8 muss, da ich dort überwiegend Zahlen per Hand
eingeben muss.

tja nun, ist so und macht auch Sinn *find* Egal, Silex hats dir korrekt gesagt, Formel oder Wert.

Gibt es keine andere Möglichkeit?

Ja. Nicht mit einer Function sondern z.B. mit einer Sub.

Nun sagt Excel mir in Zelle G8 „Name“ und mein Modul scheint
auch nicht mehr zu funzen. Woran kann das liegen?

Mir nicht bekannt, daß ein Modul in Vba funzt :smile:
Du siehst in Vba das Projekt (erkennbar am Dateinamen).
Darunter alle seine Module.

Es gibt drei Modularten.
Standarmodul (Modul1, Modul1, usw, auch oft als basmain beziechnet
Klassenmodul (DieseArbeitsmappe, Tabelle1, Tabelle2, usw, eigene Klassenmodule)
Userformmodul (kann letzlich auch ein Klassenmodul sein, weiß nicht, aber egal)

In jedem Modul kannst du drei Prozedurarten haben:
Sub
Function
Property

Als äh, ich sag mal, noch kein Vba-Geselle, mußt du nur wissen, welche Prozeduren in die Module gehören die du brauchst, das ist einmal das Standardmodul (Modul1), sowie die (Klassen-)Module DieseArbeitsmappe, Tabelle1, Tabelle2 usw.

Grundsätzlich gehören in das Standardmodul alle Prozeduren rein.

Nur Ereignisprozeduren wie
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
gehören z.B. in Tabelle1.
Also auch deine Funktion.

Wenn „#Name?“ kommt, kann die Prozedur der Function schlichtweg im falschen Modul stehen, Schreibfehler, oder ?.

Wie soll denn eine evtl. Sub gestartet werden?

Gruß
Reinhard

1 „Gefällt mir“

Hallo Reinhard,

ich glaube, ich habe den Fehler gefunden. Ich habe das Modul umbenannt und habe den gleichen Namen gewählt wie die Funktion(Quersumme).

Wie sie gestartet werden soll, keine Ahnung. Mir hat mal vorgeschwebt, formeln aus einem Listenfeld anklicken zu können.

Hallo Blondie,

ich glaube, ich habe den Fehler gefunden. Ich habe das Modul
umbenannt und habe den gleichen Namen gewählt wie die
Funktion(Quersumme).

okay, wieder haste was gelernt, nie Namen vergeben die Excel schon von sich aus kennt oder du ihm sogar selbst gelehrt hast.
(Dabei weiß ich gar nicht sicher ob das der Grund wahr *gg*)

Wie sie gestartet werden soll, keine Ahnung. Mir hat mal
vorgeschwebt, formeln aus einem Listenfeld anklicken zu
können.

*hmmh* man kann keine Formel/Funktion durch Anklicken starten, das geht mit einer SUB.
Das was du anklickst (bzw. auswählst) kann ein Element aus Symbolleiste Steuerelementtoolbox, Formular, letztlich vielen sein, oder Eine Zelle, oder ein Doppelklick auf eine Zelle oder Eingabe eines bestimmten Wertes in eine zelle
U.v.m sein.

Dann kommt die Frage was soll die Sub dann genau machen? Immer Quersumme von G8 nach E8 schreiben? Bissi langweilig für so einen Aufwand.
Die Quersumme der grad aktiven Zelle in die gleiche Zeile aber 7 Spalten weiter reinschreiben.
u.v.m.

Mach dir darüber mal paar Gedanken.
Die einzig brauchbare Information von dir ist bislang:
„Meine Vorstellung sieht so aus: =WENN(Quersumme(F8)=3,dann G8=100
Schaltfläche“

Dafür eine Sub zu basteln ist Blödsinn. Ergo fehlt mir/uns komplett der dazugehörige Hintergrund.

Ich glaub ich habe dir jetzt viel Anregung dazu gegeben, deine Sache ob du sie nur überfliegst oder durchliest.

Gruß
Reinhard

Hallo Reinhard,

leider ist es für mich immer ein wenig schwierig, es mit den richtigen Worten auszudrücken.

Aber deine Anregung, mit einer Sub die aktive Zelle zu prüfen und einen Wert von z.B in die Zelle rechts daneben zu setzen ist eine gute Idee.

Ich werd im nächsten Post mal versuchen genau zu schildern,was ich genau möchte

Gruss Frank

Hallo Frank,

leider ist es für mich immer ein wenig schwierig, es mit den
richtigen Worten auszudrücken.

mir sehr klar, deshalb gab ich mir ja Mühe mir dir ein bißchen bei den Begriffen Module usw. zu erläutern.

Wie sehr sehr vieles in Excel, auf den ersten Blick ui, kapier ich nie, aber Gemach Gemach.
Deshalb habe ich auch versucht zusammenzufassen was du aktuell schon kapieren solltest. das mit Properties, Klassenmodulen Userformskommt später.

Es beschränkt sich derzeit auf die kenntnis was ein Modul ist, eine Prozedur, eine Sub, eine Function, was es bedeutet wenn ich oder nadere dir Code geben und sagen, der gehört in ein Standardmodul oder der gehört in das Modul „tabelle1“.

Das ist nun in der Summe gar nicht mehr so viel.

Aber deine Anregung, mit einer Sub die aktive Zelle zu prüfen
und einen Wert von z.B in die Zelle rechts daneben zu setzen
ist eine gute Idee.

Ach, ist ja gar nicht so meine Idee, ich kenne halt zig Arten eine Sub (ein makro) zu starten und auch viele Möglichkeiten was es dann machen könnte mit z.B. der Quersumme die es natürlich berechnen kann.

Dieses Wissen fehlt dir, ist auch klar.

Ich werd im nächsten Post mal versuchen genau zu schildern,was
ich genau möchte

Das freut mich. Wenn es hift daß ich/wir aufgrund einer Beipielmappe die die gleiche Sruktur wie das origanl hat, dir besser/genauer zu helfen, lade eine hoch mit file-upöoad , s. FAQ:2606

Paar daten zu anonymisieren ist ja wohl kein Akt. Völlig unwesentliche Spalten löschen. !0000 Zeilen sind auch nicht notwendig usw.

Gruß
Reinhard

Gruss Frank

Huhu ich bins wieder,

ich versuche nun mal den ersten Schritt zu erklären.

Ausgangspunkt sind die Zellen F8-F12,F13-F16,F18-F21 usw. bis F158-F161.

In diesen Zellen stehen beliebige Werte. Diese Werte möchte ich nun über eine Auswahlliste diversen Prüfungen unterziehen.

Mal möchte ich prüfen, ob diese Zahlen die Quersumme 8 bilden,ein anderes mal,ob die Zahlen durch 3 teilbar ist und ein anderes mal ob die zahlen eine Primzahl ist. Wenn dass der Fall ist soll in die Zelle rechts daneben,also die G-Spalte 100 eingetragen werden.

In die entsprechenden Zellen der G-Spalte darf aber keine Formel stehen,da ich dort bei Bedarf Zahlen manuell eingebe.

Das ist also mein Gedanke,wie ich mir das vorstelle.

Ist sowas überhaupt zu realisieren?

LG Frank

Hallo Frank,

das sieht doch schonmal sehr informationsreicher aus.

Ausgangspunkt sind die Zellen F8-F12,F13-F16,F18-F21 usw. bis
F158-F161.

In diesen Zellen stehen beliebige Werte. Diese Werte möchte
ich nun über eine Auswahlliste diversen Prüfungen unterziehen.

Also die Auswahlliste bestimmt ob Quersumme, Primzahl usw.?
EINE Auswahlliste für alle oder für jede Zelle eine oder eine für jeden 3-4er Block?

Mal möchte ich prüfen, ob diese Zahlen die Quersumme 8
bilden,ein anderes mal,ob die Zahlen durch 3 teilbar ist und
ein anderes mal ob die zahlen eine Primzahl ist. Wenn dass der
Fall ist soll in die Zelle rechts daneben,also die G-Spalte
100 eingetragen werden.

In die entsprechenden Zellen der G-Spalte darf aber keine
Formel stehen,da ich dort bei Bedarf Zahlen manuell eingebe.

Was in G steht ist egal, wird bei Bedarf überschrieben :smile:

Ist sowas überhaupt zu realisieren?

Ja, zu 99% was aber so zu deuten ist, wenn das eine Prozent auftritt gehts SO nicht.

Gruß
Reinhard

Hallo Reinhard,

Also die Auswahlliste bestimmt ob Quersumme, Primzahl usw.?
EINE Auswahlliste für alle oder für jede Zelle eine oder eine
für jeden 3-4er Block?

Eine Auswahlliste für alle Zellen. Irgendwann möchte ich mal,dass es auf mehrere Möglichkeiten erweitert wird(z.B. F8,F9,F10,F11 alleine oder F8+F10 oder F9+F11 oder auch alle 4 Zellen zusammen).

Gruß
Frank

Hallihallo,

hier nunmal der Link für meine Excel-Mappe:

http://www.file-upload.net/download-3092132/Tabbi-On…

hier nunmal der Link für meine Excel-Mappe:

http://www.file-upload.net/download-3092132/Tabbi-On…

Hallo Frank,

nicht daß du glaubst ich hätt nix gemacht.
Dummerweise war ich so beim Programmiern daß ich da das mit der 100 usw. glatt vergessen hatte *grins*

Ist aber egal, prinzipiell würde das dann so ablaufen:

http://www.file-upload.net/download-3092867/kwTabbi-…

Das Hilfsblatt was ja nur die Füllung für die CoboBox=Kombinationsfeld ist kannste ja später ausblenden, dann störst nich.

Gruß
Reinhard

Hallo Reinhard,

danke für die schnelle Hilfe. Muss mich jetzt erstmal damit auseinandersetzen.

Ich wünsche Dir einen guten Rutsch und ein frohes und gesegnetes Jahr 2011

LG Frank

Hallo Reinhard, habe mir deine Tabbi mal angeschaut…schön schön,nur verstehen müsste man das jetzt auch…löl

Werd nochaml schauen und dann die Fragen stellen. Hast du meine Nachricht bekommen?

LG Frank

Hallo Reinhard, habe mir deine Tabbi mal angeschaut…schön
schön,nur verstehen müsste man das jetzt auch…löl

Werd nochaml schauen und dann die Fragen stellen. Hast du
meine Nachricht bekommen?

Hallo Frank,

nimm mal den nachstehenden Code. Alten Code auskommentieren oder löschen.

Im Blatt in P3 habe ich die 8 reingeschrieben für den Quersummenvergleich, damit man die Zahl leicht abändern kann.
Kannst auch jede beliebige andere Zelle nehmen oder Schriftfarbe auf weiß, dann mußt du im Code nur
" & .Parent" & .Parent.Range(„P3“) & "
ersetzen durch
" & worksheets(„Blattname“).Range(„P3“) & "
oder ohne Zelle nur mit
8

Ansicht—Symbolleisten, nimm die Steuerelementtoolbox, klicke da auf das Geodreick, dann biste im Entwurfsmodus, nun Rechtsklick auf die Combobox im Blatt, Eigenschaften, dort gibst du bei ListFillRange ein
Extras!A1:A4.
Wieder aufs geodreick klicken.

In Extras fügst du in A4 dazu
Nix machen

Ja, die Mail kam an.

Gruß
Reinhard

Sub Berechne(Was As String)
With Worksheets("Tabbi").Range("G8:G161")
 Application.ScreenUpdating = False
 Select Case Was
 Case "Quersumme"
 .FormulaLocal = "=WENN(UND(F8"""";Quersumme(F8;" & .Parent.Range("P3") & "));100;"""")"
 Case "Durchdrei"
 .FormulaLocal = "=WENN(UND(F8"""";DurchDrei(F8));100;"""")"
 Case "Primzahl"
 .FormulaLocal = "=WENN(UND(F8"""":stuck\_out\_tongue\_winking\_eye:rimzahl(F8));100;"""")"
 Case "Nix machen"
 .ClearContents
 Case Else
 'nix
 End Select
 .Value = .Value
 Application.ScreenUpdating = True
End With
End Sub

Function Quersumme(Zelle As Range, QS As Integer) As Boolean
Dim intI As Integer, Summe As Integer
For intI = 1 To Len(Zelle.Value)
 Summe = Summe + CInt(Mid(Zelle.Value, intI, 1))
Next
Quersumme = IIf(Summe = QS, True, False)
End Function

Function DurchDrei(Zelle As Range) As Boolean
DurchDrei = IIf(Zelle.Value Mod 3 = 0, True, False)
End Function

Function Primzahl(Zelle As Range) As Boolean
Dim N As Integer
For N = Zelle.Value - 1 To 2 Step -1
 If Zelle.Value Mod N = 0 Then
 Primzahl = True
 Exit For
 End If
Next N
Primzahl = Not Primzahl
End Function

Hallo Reinard,

nimm mal den nachstehenden Code. Alten Code auskommentieren
oder löschen.

habe den alten Code auskommentiert.Jetzt aber nach den Unteschieden zu fragen(von Integer nach Boolean usw.) wäre zu verfrüht.

Im Blatt in P3 habe ich die 8 reingeschrieben für den
Quersummenvergleich, damit man die Zahl leicht abändern kann.
Kannst auch jede beliebige andere Zelle nehmen oder
Schriftfarbe auf weiß, dann mußt du im Code nur
" & .Parent" & .Parent.Range(„P3“) & "
ersetzen durch
" & worksheets(„Blattname“).Range(„P3“) & "
oder ohne Zelle nur mit
8

Ich habe das so gelassen,da die Zelle dort schon angebracht ist. Ich hoffe nur,dass ich es jetzt richtig verstanden habe,wenn ich die Zahl in P3 ändere, wird der Bereich F8-F161 erneut geprüft.

Ansicht—Symbolleisten, nimm die Steuerelementtoolbox, klicke
da auf das Geodreick, dann biste im Entwurfsmodus, nun
Rechtsklick auf die Combobox im Blatt, Eigenschaften, dort
gibst du bei ListFillRange ein
Extras!A1:A4.
Wieder aufs geodreick klicken.

In Extras fügst du in A4 dazu
Nix machen

Das hatte ich vorher schon rausgefunden. Alles in allem muss ich sagen,dass der neue Code nicht so verwirrend für mich ist als der alte,mal abgesehen von den 4 Gänsefüsschen,da ich bisher nur 2 kannte.

LG Frank

Hallo Frank,

nimm mal den nachstehenden Code. Alten Code auskommentieren
oder löschen.

habe den alten Code auskommentiert.Jetzt aber nach den
Unteschieden zu fragen(von Integer nach Boolean usw.) wäre zu
verfrüht.

nie zu früh mal in die Hilfe zu schauen :smile:

Boolean ist True/Falsch bzw. Wahr/Falsch.
In Vba: True entspricht -1 , False entspricht 0
In dt. Excel: Wahr entspricht 1 , Falsch entspricht 0

Ich habe das so gelassen,da die Zelle dort schon angebracht
ist. Ich hoffe nur,dass ich es jetzt richtig verstanden
habe,wenn ich die Zahl in P3 ändere, wird der Bereich F8-F161
erneut geprüft.

Nein, kann man aber einbauen. Die 8 wird ja nur bei Quersumme als Vergleich gebraucht.

In Extras fügst du in A4 dazu
Nix machen

Das hatte ich vorher schon rausgefunden. Alles in allem muss
ich sagen,dass der neue Code nicht so verwirrend für mich ist
als der alte,mal abgesehen von den 4 Gänsefüsschen,da ich
bisher nur 2 kannte.

Das ist immer so in Vba, Gänsefüßchen bei Formulalocal bzw. Formula werden verdoppelt.
Aus
=WENN(A1=7;„okay“;"")
wird
.FormulaLocal = „=WENN(A1=7;“„okay“";"""")"
bzw.
.Formula = „=IF(A1=7;“„okay“";"""")"

Gruß
Reinhard

Hallo Reinhard,

hatte nur nachgefragt,weil ich die Zahl in P3 einfach mal geändert habe und nix passierte(Neugierde). So wie es jetzt ist,entspricht es schon meinen Vorstellungen.

Habe mir mal die Offline-Version vom Wiki-VBA-Buch von Hans Herber runtergeladen…Hilfe, das soll ein Neuling verstehen? Naja, zumindest mit den Gänsefüsschen habe ich wieder was gelernt,was ich mir auch gut einprägen werde.

LG Frank