Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: WENN bestimmte Zahl, DANN Zahl, SONST Eingabe

VBA: WENN bestimmte Zahl, DANN Zahl, SONST Eingabe
ernst
Hallo VBA Experten
Ich bin Lehrer und kenne mich mit xls recht gut aus, kann jedoch leider kein VBA. Ich habe nun ein Problem, dass m.M. nach nur mit VBA zu lösen ist. Vielleicht kann mir ja wer von Euch helfen:
Ich habe 2 Tabellenblätter (es geht um Skikursteilnahme und -verwaltung):
Tabellenblatt 1:
Hier befinden sich typische Personendaten (Indexnummer, Vorname, Name, etc...) und eine Spalte mit einer Kennzahl (3 mögliche Kennzahlen: 1: nimmt teil, 88: nimmt bedingt teil, oder 99: nimmt nicht teil)) .

Tabellenblatt 2:

Hier werden mittels SVerweis über die Indexnummer die Personendaten einiger Spalten übernommen. Soweit allles klar.
Nun möchte ich, dass in Blatt 1 nachgesehen wird, ob eine Person bedingt oder nicht teilnimmt (88 oder 99) und wenn dem so ist, soll die 88 oder 99 in eine Zelle des Datensatz in Blatt 2 übernommen werden. Wenn jedoch eine 1 übergeben wird (also: nimmt teil), dann soll in der entsprechenden Zelle KEINE Übernahme der 1 stattfinden, sondern eine Zahlen- oder TextEINGABE in dieser Zelle möglich sein.
Also kann keine Formel in der Zelle stehen, da diese ja überschrieben werden soll.
Die Auswahl (1, 88, 99) in Tabellenblatt 1 soll außerdem jederzeit änderbar sein (sodaß eine automatische Aktualisierung in Blatt 2 erfolgt).
Klingen tut das ja wie: "WENN 88 oder 99, DANN 88 oder 99, SONST lasse Eingabe zu"
aber ob sowas geht....?
Ich kann leider überhaupt kein VBA und wäre sehr dankbar, wenn mit jemand helfen könnte.
Vilen herzlichen Dank
Ernst
Anzeige
AW: VBA: WENN bestimmte Zahl, DANN Zahl, SONST Eingabe
22.12.2009 14:26:44
ede
Hallo Ernst,
wenn ich Dich richtig verstanden habe, dann hier mal ein Beispiel mit rein nur sverweis().
gruss
https://www.herber.de/bbs/user/66773.xls
AW: VBA: WENN bestimmte Zahl, DANN Zahl, SONST Eingabe
22.12.2009 14:34:08
Daniel
HI
das würde ich so nicht machen, mach die Eingabe in einer seperaten Spalte.
innerhalb einer Spalte sollten in Tabellen immer nur gleichartige Werte vorkommen, dh entweder Text, Zahlen oder die gleiche Formel (nie unterschiedliche Formeln innerhalb der gleichen Spalte).
alles andere vekompliziert die Sache nur in Bezug auf Erstellung, Erweiterung, und Korrektur der Datenbank.
auch mit VBA wäre der Aufwand, das umzusetzen erheblich und wesentlich komplexer als 1 oder 2 zusätzliche Spalten.
Gruß, Daniel
Anzeige
AW: VBA: WENN bestimmte Zahl, DANN Zahl, SONST Eingabe
22.12.2009 15:01:56
Holger
Hallo,
ich würde das auch - aus den schon angeführte Gründen - mit zusätzlichen "Hilfsspalten" machen. Wenn dann das Ergebnis unbedingt in einer Spalte stehen soll, kann man diese ja auch in einer weiteren Spalte verketten.
Gruß
Holger
AW: VBA: WENN bestimmte Zahl, DANN Zahl, SONST Eingabe
22.12.2009 19:08:45
ernst
Vielen Dank für Eure Hilfe!
Die Lösung von ede finde ich gar nicht schlecht. Das einzige Problem dabei ist, wenn zB "Eingabe" übernommen wird, und ich dann in dieser Zelle tatsächlich eine Eingabe mache, die Formel dabei überschrieben wird und eine Aktualisierung nicht mehr möglich ist.
Mir geht es dabei in erster Linie darum, dass die Schüler die am Kurs nicht teilnehmen (99 bzw. 88) in allen Tabellenblättern (zb Anmeldung, Gruppeneinteilung, Zimmereinteilung, etc..) automatisch auch mit 99 bzw 88 markiert werden und bei allen anderen Schülern aber eine Eingabe möglich ist.
Bisher habe ich die 88/99 in allen Blättern manuell eingegeben, was schon zu Fehlern geführt hat.
Ich hab mal eine Datei angehängt um das besser zu veranschaulichen.
https://www.herber.de/bbs/user/66780.xls
Bitte euch nochmal um Hilfe
Anzeige
Noch offen! Haken setzen, Ernst! Gruß owT
22.12.2009 21:06:02
Luc:-?
:-?
AW: Noch offen! Haken setzen, Ernst! Gruß owT
22.12.2009 22:48:34
ernst
AW: Noch offen! Haken setzen, Ernst! Gruß owT
22.12.2009 22:56:41
Josef
Hallo Ernst,
diese Art der reduntanten Datenhaltung schreit ja geradezu nach Fehlern.
Warum machst du nicht eine einzelne Tabelle in der ALLE Daten eines Schülers erfasst werden,
egal ob Anmeldung, Skipass, Zimmer, usw. die Auswertung kannst du dann ja bei Bedarf
auf mehrere Tabellen aufteilen.
Gruß Sepp

Anzeige
AW: VBA: WENN bestimmte Zahl, DANN Zahl, SONST Eingabe
23.12.2009 13:37:42
ernst
Hallo Sepp
Danke für Deine Anregung.
Diese Datei ist in den letzten Jahren gewachsen und hat insgesant so an die 20 Tabellenblätter.
Ich möchte nur sehr ungern alles komplett neu erstellen.
Es ist auch so, dass bei einigen Blättern gleich eine Art Auswertung dabei ist (zB Gruppeneinteilung).
Da möchte ich die Auswertung gleich neben der Tabelle haben um herumjonglieren zu können.
Ich gebe dir recht, dass die Lösung nicht optimal ist, aber wenn man einmal ein System gewohnt ist.....
Für mich wäre im Moment die beste Lösung, eine Formelausgabe in einer anderen Zelle machen zu können. Das würde mir sehr weiterhelfen. Vieeleicht hat ja wer noch eine Idee :-)
lg Ernst
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

WENN bestimmte Zahl, DANN Zahl, SONST Eingabe in Excel mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und wechsle zu dem Tabellenblatt, in dem du die Eingabewerte für die Skikursteilnahme verwalten möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (deineDatei.xlsm)".
    • Wähle "Einfügen" und dann "Modul".
  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub UpdateParticipation()
       Dim ws1 As Worksheet, ws2 As Worksheet
       Set ws1 = ThisWorkbook.Sheets("Tabelle1") ' Tabelle mit den Kennzahlen
       Set ws2 = ThisWorkbook.Sheets("Tabelle2") ' Tabelle zur Übernahme der Daten
    
       Dim i As Long
       For i = 2 To ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
           Select Case ws1.Cells(i, 2).Value ' Spalte mit der Kennzahl
               Case 1
                   ws2.Cells(i, 3).Value = "" ' Eingabe zulassen
               Case 88, 99
                   ws2.Cells(i, 3).Value = ws1.Cells(i, 2).Value ' Kennzahl übernehmen
           End Select
       Next i
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle UpdateParticipation und klicke auf "Ausführen".

Jetzt sollte die Excel-Tabelle aktualisiert werden, basierend auf den Bedingungen, die in den Kennzahlen definiert sind.


Häufige Fehler und Lösungen

  • Fehler: Das Makro funktioniert nicht.

    • Stelle sicher, dass die Tabellennamen korrekt sind. Überprüfe die Namen der Arbeitsblätter in deinem VBA-Code.
  • Fehler: Werte werden nicht aktualisiert.

    • Überprüfe, ob die Kennzahlen in der richtigen Spalte stehen und ob die verwendete Spalte in der Ziel-Tabelle korrekt ist.

Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch mit Hilfsspalten arbeiten. Lege in Tabellenblatt 2 eine separate Spalte an, in der du die Eingaben machst, und verwende eine Formel, die die Werte aus Tabellenblatt 1 übernimmt.

Ein Beispiel für eine Formel könnte so aussehen:

=WENN(Tabelle1!B2=1;"";Tabelle1!B2)

Diese Formel ermöglicht es dir, eine Eingabe zu machen, wenn der Wert 1 ist, und übernimmt ansonsten die Kennzahl.


Praktische Beispiele

Angenommen, du hast die folgende Struktur in deinen Arbeitsblättern:

Tabellenblatt 1: Indexnummer Kennzahl
1 1
2 88
3 99
Tabellenblatt 2: Indexnummer Ergebnis
1
2
3

Nach dem Ausführen des Makros wird die Tabelle 2 wie folgt aussehen:

Indexnummer Ergebnis
1
2 88
3 99

Tipps für Profis

  • Verwende Datenvalidierung in den Eingabezellen, um sicherzustellen, dass nur zulässige Werte eingegeben werden.
  • Erstelle eine Schaltfläche, um das Makro auszuführen, sodass es für andere Benutzer einfacher wird.
  • Denke daran, deine Excel-Datei als Makro-enabled (.xlsm) zu speichern, um die VBA-Funktionalität zu erhalten.

FAQ: Häufige Fragen

1. Wie kann ich das Makro automatisch ausführen lassen? Du kannst das Makro bei Änderungen in den Zellen auslösen, indem du die Worksheet_Change-Ereignisprozedur im VBA-Editor verwendest.

2. Kann ich das VBA-Skript anpassen, um mehr Kennzahlen hinzuzufügen? Ja, du kannst einfach weitere Case-Bedingungen im Select Case-Block hinzufügen, um zusätzliche Kennzahlen zu berücksichtigen.

3. Muss ich VBA lernen, um diese Funktion zu nutzen? Ein grundlegendes Verständnis von VBA kann hilfreich sein, aber du kannst auch alternative Methoden wie Formeln nutzen, um ähnliche Ergebnisse zu erzielen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige