Supportnet / Forum / Tabellenkalkulation
Exel 2000 - Wenn dann nicht möglich!?
Frage
Hallo,
wer kann mir wieder einmal helfen-
ich habe eine einfache Liste (für den Steuerberater). In der Spalte D4 : D55 werden untereinander ca. 20 verschiedene Namen aufgelistet. z.B.: Privat , Wolle & Kurzwaren, Bankeinzahlungen,Lohn, u.s.w.(wechselnd)
In der Spalte J4 : J55 möchte ich nun die Kontennummern zuordnen.
Mit einer -WENN- Formel klappt dies auch ab halt nicht bis zu 20 Möglichkeiten.
z.B.: WENN(D4="Privat";4400)
-mit "WAHL" schon probiert - aber habe es nicht geschafft
WER KANN MIR HELFEN ?
Ich möchte mich im voraus ganz herzlich bedanken.
Rudolfo
Antwort 1 von coros
Moin Rudolfo,
das ist sicherlich mit einer verschachtelten WENN/ODER Formel machbar. Da ich allerdings nicht der Formelianer hier bin, kommt von mir eine VBA Lösung. Kopiere nachfolgenden Code in das VBA Projekt der Tabelle, in der Du die Daten im Bereich D4:D55 eingibst und in der die Zahlen dann in Spalte J angezeigt werden sollen.
Bei dem Code wird immer, wenn man in einer Zelle in dem Bereich D4:D55 etwas eingibt, die aktive Zeile in der Variablen "Aktive_Zeile " gespeichert. Wird dann noch in dem Bereich das Wort Lohn, Bankeinzahlungen, Kurzwaren, Privat oder Wolle in dem Bereich eingegeben, wird in der gleichen Zeile in Spalte J der dazugehörige Wert ausgegeben. Also bei "Privat" z.B. die Zahl "4400" oder bei dem Wort "Kurzwaren" die Zahl "4600".
Um noch bei Eingabe von weiteren Begriffen die automatische Ausgabe von den dazugehörigen Zahlen zu erhalten musst Du in dem VBA Code z.B. die Zeilen
Case "Privat"
Cells(Aktive_Zeile, 10) = "4400"
kopieren, und vor der Zeile
End Select
wieder einfügen. Dann musst Du das Wort, das hinter Case in Anführungsstrichen ("") steht, gegen das neue Wort ersetzen und eine Zeile tiefer die Zahl ebenfalls in den Anführungszeichen gegen die Zahl tauschen, die dann bei Eingabe des Begriffes in Spalte J ausgegeben werden soll.
Wenn Du den Bereich D4:D55 erweitern bzw. verändern möchtest, dann musst Du die Zeile
If Target.Column = 4 And Target.Row >= 4 And Target.Row <= 55 Then
anpassen. Die Anweisung "Target.Column = 4" sagt die Spalte aus. Bei wäre es eine 1, bei der Saplte B müsste die Zahl in eine 2 bei C in eine 3 usw. geändert werden. Die Anweisungen "Target.Row >= 4" und "Target.Row >=55" sagen die Zeilen aus.
So, das war´s für den Moment. ich hoffe, Dir hilft der Code und meine Anleitung dazu etwas weiter. Bei Fragen oder Problemen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
das ist sicherlich mit einer verschachtelten WENN/ODER Formel machbar. Da ich allerdings nicht der Formelianer hier bin, kommt von mir eine VBA Lösung. Kopiere nachfolgenden Code in das VBA Projekt der Tabelle, in der Du die Daten im Bereich D4:D55 eingibst und in der die Zahlen dann in Spalte J angezeigt werden sollen.
Public Aktive_Zeile As Long
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Target.Column = 4 And Target.Row >= 4 And Target.Row <= 55 Then
Select Case Target
Case ""
Cells(Aktive_Zeile, 10).ClearContents
Case "Privat"
Cells(Aktive_Zeile, 10) = "4400"
Case "Wolle"
Cells(Aktive_Zeile, 10) = "4500"
Case "Kurzwaren"
Cells(Aktive_Zeile, 10) = "4600"
Case "Bankeinzahlungen"
Cells(Aktive_Zeile, 10) = "4700"
Case "Lohn"
Cells(Aktive_Zeile, 10) = "4800"
End Select
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 4 And Target.Row >= 4 And _
Target.Row <= 55 Then Aktive_Zeile = ActiveCell.Row
End SubBei dem Code wird immer, wenn man in einer Zelle in dem Bereich D4:D55 etwas eingibt, die aktive Zeile in der Variablen "Aktive_Zeile " gespeichert. Wird dann noch in dem Bereich das Wort Lohn, Bankeinzahlungen, Kurzwaren, Privat oder Wolle in dem Bereich eingegeben, wird in der gleichen Zeile in Spalte J der dazugehörige Wert ausgegeben. Also bei "Privat" z.B. die Zahl "4400" oder bei dem Wort "Kurzwaren" die Zahl "4600".
Um noch bei Eingabe von weiteren Begriffen die automatische Ausgabe von den dazugehörigen Zahlen zu erhalten musst Du in dem VBA Code z.B. die Zeilen
Case "Privat"
Cells(Aktive_Zeile, 10) = "4400"
kopieren, und vor der Zeile
End Select
wieder einfügen. Dann musst Du das Wort, das hinter Case in Anführungsstrichen ("") steht, gegen das neue Wort ersetzen und eine Zeile tiefer die Zahl ebenfalls in den Anführungszeichen gegen die Zahl tauschen, die dann bei Eingabe des Begriffes in Spalte J ausgegeben werden soll.
Wenn Du den Bereich D4:D55 erweitern bzw. verändern möchtest, dann musst Du die Zeile
If Target.Column = 4 And Target.Row >= 4 And Target.Row <= 55 Then
anpassen. Die Anweisung "Target.Column = 4" sagt die Spalte aus. Bei wäre es eine 1, bei der Saplte B müsste die Zahl in eine 2 bei C in eine 3 usw. geändert werden. Die Anweisungen "Target.Row >= 4" und "Target.Row >=55" sagen die Zeilen aus.
So, das war´s für den Moment. ich hoffe, Dir hilft der Code und meine Anleitung dazu etwas weiter. Bei Fragen oder Problemen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von Rudolfo
Hallo coros,
hat alles bestens geklappt -
besten Dank dafür !!!!!!
Eine Frage dazu wäre noch offen ?
Da ich in meinem Kassenbuch für jeden Monat ein Tabellenblatt habe muss ich dann in jedes Blatt dieses Makro einfügen ??
Verschiedene Möglichkeiten probiert - bin aber selbst nicht dahintergestiegen.
Vielen Dank
Rudolfo
hat alles bestens geklappt -
besten Dank dafür !!!!!!
Eine Frage dazu wäre noch offen ?
Da ich in meinem Kassenbuch für jeden Monat ein Tabellenblatt habe muss ich dann in jedes Blatt dieses Makro einfügen ??
Verschiedene Möglichkeiten probiert - bin aber selbst nicht dahintergestiegen.
Vielen Dank
Rudolfo
Antwort 3 von coros
Hi Rudolfo,
theoretisch schon. Du kannst aber auch den nachfolgenden Code in das VBA Projekt "DieseArbeitsmappe kopieren. Der gilt dann für alle Blätter in der Datei.
Die Code sehen optisch genau so aus und sie machen auch das gleiche wie der erste. Der einzige Unterschied ist das Ereignis, bei dem sie ausgeführt werden. Zum Einen ein Workbook_SheetChange-Ereignis anstelle des Worksheet_Change-Ereignisses und dann ein Workbook_SheetSelectionChange anstelle eines Worksheet_SelectionChange-Ereignisses. Beide Ereignisse bedeuten, dass sie auf allen Blättern der Datei wirken. Einfügen musst Du die Code genauso wie die alten. Allerdings nicht in das VBA Projekt der Tabelle, sondern wie oben beschrieben in "DieseArbeitsmappe".
Ich hoffe, Du kommst klar.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
theoretisch schon. Du kannst aber auch den nachfolgenden Code in das VBA Projekt "DieseArbeitsmappe kopieren. Der gilt dann für alle Blätter in der Datei.
Public Aktive_Zeile As Long
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Target.Column = 4 And Target.Row >= 4 And Target.Row <= 55 Then
Select Case Target
Case ""
Cells(Aktive_Zeile, 10).ClearContents
Case "Privat"
Cells(Aktive_Zeile, 10) = "4400"
Case "Wolle"
Cells(Aktive_Zeile, 10) = "4500"
Case "Kurzwaren"
Cells(Aktive_Zeile, 10) = "4600"
Case "Bankeinzahlungen"
Cells(Aktive_Zeile, 10) = "4700"
Case "Lohn"
Cells(Aktive_Zeile, 10) = "4800"
End Select
End If
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column = 4 And Target.Row >= 4 And _
Target.Row <= 55 Then Aktive_Zeile = ActiveCell.Row
End Sub
Die Code sehen optisch genau so aus und sie machen auch das gleiche wie der erste. Der einzige Unterschied ist das Ereignis, bei dem sie ausgeführt werden. Zum Einen ein Workbook_SheetChange-Ereignis anstelle des Worksheet_Change-Ereignisses und dann ein Workbook_SheetSelectionChange anstelle eines Worksheet_SelectionChange-Ereignisses. Beide Ereignisse bedeuten, dass sie auf allen Blättern der Datei wirken. Einfügen musst Du die Code genauso wie die alten. Allerdings nicht in das VBA Projekt der Tabelle, sondern wie oben beschrieben in "DieseArbeitsmappe".
Ich hoffe, Du kommst klar.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von Rudolfo
Hallo coros,
so schnell Antwort -
ich bin begeistert.
Alles fehlerlos geklappt!!!!
Auch für einen "Anfänger" super verständlich und ausführlich erklärt.
Herzlichen Dank
mfg.
Rudolfo
so schnell Antwort -
ich bin begeistert.
Alles fehlerlos geklappt!!!!
Auch für einen "Anfänger" super verständlich und ausführlich erklärt.
Herzlichen Dank
mfg.
Rudolfo
Antwort 5 von coros
Moin Rudolfo,
freut mich, wenn alles so ist, wie Du es Dir vorgestellt hast. Danke Dir auch für Deine Rückmeldung.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
freut mich, wenn alles so ist, wie Du es Dir vorgestellt hast. Danke Dir auch für Deine Rückmeldung.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

