Supportnet / Forum / Tabellenkalkulation
Zählen von Teilen des Feldinhaltes in diversen Zellen
Frage
Hallo,
mit Excel kenne ich mich nicht so gut aus. Jetzt brauchen wir im Verein für den Jahresplan eine Liste. Dort soll ersichtlich sein wer für was wie oft eingetragen ist.
[b]Problemstellung:[/b]
Hinweis: in Spalte A und B steht das Datum.
in Spalte C taucht in einigen Zellen ein Stichwort (z.B. "Unterricht" und noch 3 andere) im Text irgendwo auf.
Wenn dieses vorhanden ist, sind in der Zelle darunter zwischen 2 und 15 Namen mit Komma (oder Strichpunkt) getrennt.
Als Sonderfall gibt es gibt aber auch Stichworte die mit den Namen in einer Zelle stehen. Dort sind es aber immer 3 Namen.
Diese Namen sollen irgendwo (auf einem anderen Blatt) mit der Anzahl der Vorkommnisse (alphabetisch sortiert) aufgelistet werden.
[sup](ich denke da an 5 Spalten hinter den Namen mit der jeweiligen Zahl)[/sup]
Ist so etwas mit vertretbarem Aufwand zu erstellen?
Ich habe keine Ahnung wie ich da ansetzen könnte.
Formeln oder Makro oder beides?
Schon im Voraus Danke für eine Antwort
[i]Steffen[/i]
Antwort 1 von Saarbauer
Hallo,
stell mal ein Beispiel hier ein
http://www.netupload.de/
Link hier hinterlegen, vielleicht kommt man damit besser klar
Gruß
Helmut
stell mal ein Beispiel hier ein
http://www.netupload.de/
Link hier hinterlegen, vielleicht kommt man damit besser klar
Gruß
Helmut
Antwort 2 von steffen2
ich hatte mir fast gedacht dass es zu kompliziert zum erklären ist.
Link zum Muster
Die Datei existiert bisher nur im Kopf, deshalb ein Dummy-File wie es ungefähr aussieht
(es lässt sich (obwohl htm) auch mit Excel öffnen)
Gruß Steffen
Link zum Muster
Die Datei existiert bisher nur im Kopf, deshalb ein Dummy-File wie es ungefähr aussieht
(es lässt sich (obwohl htm) auch mit Excel öffnen)
Gruß Steffen
Antwort 3 von nighty
hi all :)
hilfe zur selbsthilfe sollte ein forum sein,ich seh nicht einmal einen ansatz von bemühungen
gruss nighty
hilfe zur selbsthilfe sollte ein forum sein,ich seh nicht einmal einen ansatz von bemühungen
gruss nighty
Antwort 4 von Saarbauer
Hallo @nighty ,
sei nicht so hartherzig. Aber in diesem Fall habe auch ich Probleme eine vernüftige Lösung zu finden.
@steffen2 wer hat eigentlich die bescheidene Tabelle aufgebaut? da dort kein System drin zu erkennen ist, ist es sehr schwierig eine Lösung zu finden
Gruß
Helmut
P.S. Wäöre auch eine andere Lösung möglich?
sei nicht so hartherzig. Aber in diesem Fall habe auch ich Probleme eine vernüftige Lösung zu finden.
@steffen2 wer hat eigentlich die bescheidene Tabelle aufgebaut? da dort kein System drin zu erkennen ist, ist es sehr schwierig eine Lösung zu finden
Gruß
Helmut
P.S. Wäöre auch eine andere Lösung möglich?
Antwort 5 von steffen2
@ Helmut,
Das ganze war/ist momentan ein Word-Text. Die Optik soll gleich bleiben.
Eine Alternative ist natürlich wie bisher einfach von Hand zu zählen. (wie die letzten 20 oder 30 Jahre)
Wenn es nicht geht habe ich auch kein Problem.
Gruß Steffen
Das ganze war/ist momentan ein Word-Text. Die Optik soll gleich bleiben.
Eine Alternative ist natürlich wie bisher einfach von Hand zu zählen. (wie die letzten 20 oder 30 Jahre)
Wenn es nicht geht habe ich auch kein Problem.
Gruß Steffen
Antwort 6 von Shaori
ohne Makro wirst du das schwer hinkriegen können, da du die Namen aus den Zellen filtern musst.
nur mal zum Verständnis: Die Sonderfälle sollen also zum beispiel die "Küche" sein? Wenn ja, gibts eine bestimmte Anzahl an Sonderfällen (wenn ja mal bitte schreiben) oder können das immer mehr werden?
ansonsten nur mal als Lösungsansatz, keine Ahnung ob ich heute noch zeit für sowas habe: man könnte per Makro die einzelnen Fälle aus der Tabelle unten herausziehen und dann die obige Tabelle danach durchsuchen, wenn er dann A-Unterricht zum Beispiel findet soll er in der Zeile darunter durchgehen welche Namen der Tabelle von der Tabelle unten da drin vorkommen. Wenn er Küche irgendwo findet soll er in derselben Zeile nach den Namen suchen
nur mal zum Verständnis: Die Sonderfälle sollen also zum beispiel die "Küche" sein? Wenn ja, gibts eine bestimmte Anzahl an Sonderfällen (wenn ja mal bitte schreiben) oder können das immer mehr werden?
ansonsten nur mal als Lösungsansatz, keine Ahnung ob ich heute noch zeit für sowas habe: man könnte per Makro die einzelnen Fälle aus der Tabelle unten herausziehen und dann die obige Tabelle danach durchsuchen, wenn er dann A-Unterricht zum Beispiel findet soll er in der Zeile darunter durchgehen welche Namen der Tabelle von der Tabelle unten da drin vorkommen. Wenn er Küche irgendwo findet soll er in derselben Zeile nach den Namen suchen
Antwort 7 von steffen2
@ Shaori
die "Küche" ist der einzige Sonderfall.
Aber falls das ganze mit viel Aufwand verbunden ist dann lass es bleiben.
Und für 2008 wird der Plan so umgestaltet dass er besser zu Excel passt. (Da muss ich denn noch jemand überzeugen, aber das klappt heoffentlich)
und dann werde ich es mir in Ruhe ansehen
Gruß Steffen
die "Küche" ist der einzige Sonderfall.
Aber falls das ganze mit viel Aufwand verbunden ist dann lass es bleiben.
Und für 2008 wird der Plan so umgestaltet dass er besser zu Excel passt. (Da muss ich denn noch jemand überzeugen, aber das klappt heoffentlich)
und dann werde ich es mir in Ruhe ansehen
Gruß Steffen
Antwort 8 von Shaori
Hallo Steffen,
hier der Link, damit du genau siehst was gemeint ist
http://www.netupload.de/detail.php?img=e8124d5370701f1e665946f138ab...
Makro:
Sub count()
Dim zelle As Range
Dim i As Integer
ActiveSheet.Range("C3:C19").Select
For Each zelle In Selection
If InStr(1, zelle.Value, Range("B26").Value) Then
For i = 27 To 36
If InStr(1, zelle.Offset(1, 0).Value, ActiveSheet.Range("A" & i).Value) Then
ActiveSheet.Range("B" & i).Value = ActiveSheet.Range("B" & i).Value + 1
End If
Next i
End If
If InStr(1, zelle.Value, Range("C26").Value) Then
For i = 27 To 36
If InStr(1, zelle.Offset(1, 0).Value, ActiveSheet.Range("A" & i).Value) Then
ActiveSheet.Range("C" & i).Value = ActiveSheet.Range("C" & i).Value + 1
End If
Next i
End If
If InStr(1, zelle.Value, Range("D26").Value) Then
For i = 27 To 36
If InStr(1, zelle.Offset(1, 0).Value, ActiveSheet.Range("A" & i).Value) Then
ActiveSheet.Range("D" & i).Value = ActiveSheet.Range("D" & i).Value + 1
End If
Next i
End If
If InStr(1, zelle.Value, Range("E26").Value) Then
For i = 27 To 36
If InStr(1, zelle.Offset(1, 0).Value, ActiveSheet.Range("A" & i).Value) Then
ActiveSheet.Range("E" & i).Value = ActiveSheet.Range("E" & i).Value + 1
End If
Next i
End If
If InStr(1, zelle.Value, Range("F26").Value) Then
For i = 27 To 36
If InStr(1, zelle.Value, ActiveSheet.Range("A" & i).Value) Then
ActiveSheet.Range("F" & i).Value = ActiveSheet.Range("F" & i).Value + 1
End If
Next i
End If
Next zelle
End Sub
kurze Erklärung: Das Makro sucht in dem Bereich der am Anfang selektiert wird (dann anpassen an die vollständige Datei) nach den 5 Schlüsselwörtern aus der Tabelle unten (A-Unterricht, B-Unterricht, usw.) und geht dann, wenn er ein Begriff gefunden hat die Namen durch und überprüft ob sie in der nächsten Zeile vorkommen (bei Küche dieselbe Zeile). Wenn dem so ist, wird in der Tabelle einfach entsprechend der Wert um 1 erhöht. Damit das bei dir in der vollständigen Variante läuft musst du schaun, dass du die Bezüge auf die Tabelle unten richtig anpasst. In der gelinkten Datei sind Kommentare im Quellcode, damit du siehst wo du es anpassen musst.
Das Makro befindet sich im Modul1
Falls du Fragen hast oder etwas geändert haben willst dann melde dich hier.
mfg
Shaori
hier der Link, damit du genau siehst was gemeint ist
http://www.netupload.de/detail.php?img=e8124d5370701f1e665946f138ab...
Makro:
Sub count()
Dim zelle As Range
Dim i As Integer
ActiveSheet.Range("C3:C19").Select
For Each zelle In Selection
If InStr(1, zelle.Value, Range("B26").Value) Then
For i = 27 To 36
If InStr(1, zelle.Offset(1, 0).Value, ActiveSheet.Range("A" & i).Value) Then
ActiveSheet.Range("B" & i).Value = ActiveSheet.Range("B" & i).Value + 1
End If
Next i
End If
If InStr(1, zelle.Value, Range("C26").Value) Then
For i = 27 To 36
If InStr(1, zelle.Offset(1, 0).Value, ActiveSheet.Range("A" & i).Value) Then
ActiveSheet.Range("C" & i).Value = ActiveSheet.Range("C" & i).Value + 1
End If
Next i
End If
If InStr(1, zelle.Value, Range("D26").Value) Then
For i = 27 To 36
If InStr(1, zelle.Offset(1, 0).Value, ActiveSheet.Range("A" & i).Value) Then
ActiveSheet.Range("D" & i).Value = ActiveSheet.Range("D" & i).Value + 1
End If
Next i
End If
If InStr(1, zelle.Value, Range("E26").Value) Then
For i = 27 To 36
If InStr(1, zelle.Offset(1, 0).Value, ActiveSheet.Range("A" & i).Value) Then
ActiveSheet.Range("E" & i).Value = ActiveSheet.Range("E" & i).Value + 1
End If
Next i
End If
If InStr(1, zelle.Value, Range("F26").Value) Then
For i = 27 To 36
If InStr(1, zelle.Value, ActiveSheet.Range("A" & i).Value) Then
ActiveSheet.Range("F" & i).Value = ActiveSheet.Range("F" & i).Value + 1
End If
Next i
End If
Next zelle
End Sub
kurze Erklärung: Das Makro sucht in dem Bereich der am Anfang selektiert wird (dann anpassen an die vollständige Datei) nach den 5 Schlüsselwörtern aus der Tabelle unten (A-Unterricht, B-Unterricht, usw.) und geht dann, wenn er ein Begriff gefunden hat die Namen durch und überprüft ob sie in der nächsten Zeile vorkommen (bei Küche dieselbe Zeile). Wenn dem so ist, wird in der Tabelle einfach entsprechend der Wert um 1 erhöht. Damit das bei dir in der vollständigen Variante läuft musst du schaun, dass du die Bezüge auf die Tabelle unten richtig anpasst. In der gelinkten Datei sind Kommentare im Quellcode, damit du siehst wo du es anpassen musst.
Das Makro befindet sich im Modul1
Falls du Fragen hast oder etwas geändert haben willst dann melde dich hier.
mfg
Shaori
Antwort 9 von Shaori
Nachtrag:
in den Anfangszeilen der If-Schleifen, also zum Beispiel:
If InStr(1, zelle.Value, Range("B26").Value) Then
schreibst du mal bitte
If InStr(1, zelle.Value, ActiveSheet.Range("B26").Value) Then
dann passt es auch mit den Kommentaren und ist sicherer...
am einfachsten ist es, wenn du die Tabelle auf dem gleichen Tabellenblatt lässt :-)
in den Anfangszeilen der If-Schleifen, also zum Beispiel:
If InStr(1, zelle.Value, Range("B26").Value) Then
schreibst du mal bitte
If InStr(1, zelle.Value, ActiveSheet.Range("B26").Value) Then
dann passt es auch mit den Kommentaren und ist sicherer...
am einfachsten ist es, wenn du die Tabelle auf dem gleichen Tabellenblatt lässt :-)
Antwort 10 von steffen2
@ Shaori
SUPER
genau so hab ich es mir vorgestellt.
Ich habe das Makro in meine Musterdatei rüberkopiert und die Zeilen und Spaltennummern angepasst und es ist sofort gelaufen.
Danke !!
Steffen
SUPER
genau so hab ich es mir vorgestellt.
Ich habe das Makro in meine Musterdatei rüberkopiert und die Zeilen und Spaltennummern angepasst und es ist sofort gelaufen.
Danke !!
Steffen