Microsoft Excel

Herbers Excel/VBA-Archiv

Daten übertragen nach Prüfung mehreren Kriterien | Herbers Excel-Forum


Betrifft: Daten übertragen nach Prüfung mehreren Kriterien von: Peter
Geschrieben am: 21.02.2012 13:08:25

Hallo Ihr aus dem Forum, evtl. Hallo Franz,

für eine Einsatzplanung für ein kleines Team benötige ich nochmals Eure Unterstützung.

Ich habe eine Tabelle ("Planung_Forum" (angepasst)) in der in einer Wochenübersicht Testpersonen vorgeplant werden durch Verschieben der Textfelder. Diese sind von der Größe her auf die Dauer des jeweiligen Einsatzes ausgerichtet am betreffenden Wochentag und an der Uhrzeit an der der Einsatz stattfinden soll.
In einer anderen, mit der als Testperson benannten Datei soll quasi automatisch eine Übersicht für die Testperson erstellt werden, wann welche Therapiegruppe zum Einsatz kommt. Bisher wird dies manuell getan, was aber eine Fehlerquelle darstellt.
Zu diesem Zweck soll in der Zieldatei am entsprechenden Tag und Uhrzeit aus Reihe 3 der Quelltabelle die Bezeichnung der Therapiegruppe automatisch übertragen werden.
Ich denke durch die hochgeladenen Dateien wird es deutlich werden.

https://www.herber.de/bbs/user/79017.xls (Stört euch nicht an den Fehlern in den verschiedenen Zellen drumherum. Ich musste die Datei von der Größe her anpassen.)

https://www.herber.de/bbs/user/79018.xls

Ich habe angefangen selbst zu basteln (Modul 8 der Zieldatei), bin aber leider nicht weit gekommen. Mir fehlt immer noch der gedankliche Zugang, wie man es am besten angeht.

Wie gesagt: für Eure Hilfe wäre ich dankbar, wenn es überhaupt machbar ist.
Bin schon auf die Lösungsansätze gespannt.
Herzliche Grüße

Peter

  

Betrifft: AW: Daten übertragen nach Prüfung mehreren Kriterien von: Dirk
Geschrieben am: 21.02.2012 21:22:27

Hallo Peter,
ich hoffe ich habe dich Richtig verstanden.

https://www.herber.de/bbs/user/79028.xls

der Code ist doch etwas länger geworden als ich dachte.
Bemerkungen habe ich drangeschrieben.

Gruß
Dirk
p.s. Ich hasse verbundene Zellen :-D


  

Betrifft: AW: Daten übertragen nach Prüfung mehreren Kriterien von: Peter
Geschrieben am: 22.02.2012 01:11:08

Hallo Dirk,
danke dass Du Dich mit meiner Frage beschäftigst.

Leider hat Dein Code nicht funktioniert. Ich habe die anzupassenden Daten angepasst. Der Code lief zunächst bis zur Prüfung, ob die Quelldatei offen ist. Wenn Sie geöffnet ist kommt die Abfrage, ob sie erneut geöffnet werden soll. Nach Bestätigung wird die Quelldatei geöffnet, bricht dann aber hier ab. Ist die quelldatei noch nicht geöffnet wird sie geöffnet und bricht dann ab.
Ich habe diesen Bereich deines Codes deaktiviert, dann läuft der Code weiter, löscht die Inhalte des Zielblattes läuft weiter, trägt aber nichts neues ein.
Ich kann leider den Code nicht "entschlüsseln", um nachvollziehen zu können, woran es hängt.
Ich werd morgen nochmal versuchen nachzuvollziehen.
Erstmal Gute Nacht
Peter


  

Betrifft: komm wir gehen auf Fehlersuche von: Dirk
Geschrieben am: 22.02.2012 07:40:31

Moin Peter,
hier nochmal eine neue Datei.

https://www.herber.de/bbs/user/79030.xls

ich habe hier 3 Msgboxen eingesetzt, um die Variablen abzufragen.
Lass das mal laufen und Poste die Ergebnisse der Boxen.

-Zu bedenken das Programm läuft natürlich nur, wenn der Patientanname in beiden Dateien absolut gleich geschrieben ist

Gruß
Dirk


  

Betrifft: AW: komm wir gehen auf Fehlersuche von: Peter
Geschrieben am: 22.02.2012 13:48:49

Hallo Dirk,
ich werd´s mal probieren und anschl. posten.
Aber ich denke, Du has schon den entscheidenden Hinweis am Ende angesprochen.
In Zelle D1 steht der vollständige Namen (Zu- und Vorname mit Komma getrennt samt Geburtsdatum), in der Wochenübersicht (bunte Tabelle) steht nur der Nachname drin.
Ich habe in einer Zelle eine Abfragefunktion drin wo excel nur eine vorgegebene Buchstabenanzahl, von links beginnend berücksichtigt (LINKS(R8;SUCHEN(",";R8;1)-1)) und so richtig erkennt. Geht doch bestimmt auch in vba, oder?
Bis später und Gruß
Peter


  

Betrifft: AW: komm wir gehen auf Fehlersuche von: Dirk
Geschrieben am: 22.02.2012 14:22:59

Hallo Peter,

ja kein Problem
du hast ja "Müller, Peter" in der Patientenübersicht und "Müller" in der Algemeinen Übersicht.
man kann (so würde ich das machen) mit der Split funktion arbeiten.

Die Trennt eine Zeichenfolge bei einem Bestimmten Zeichen z.b. ", ".
dann hat man Vor und Nachnamen Seperat.

Heißt für dich

Tausche die Zeile

such = ActiveSheet.Range("d1")

durch
such = Split(ActiveSheet.Range("d1"), ", ")(0)
Dann sollte alles Laufen

Gruß
Dirk


  

Betrifft: AW: komm wir gehen auf Fehlersuche von: Peter
Geschrieben am: 22.02.2012 16:07:33

Hallo Dirk,

ich hatte heute Zeit zum Ausprobieren und bin mit ein paar kleinen Änderungen so weit gekommen, dass die Einträge an der richtigen Stelle erscheinen. Es lag an der Tatsache, dass er die Namen nicht gefunden hatte. Mit folgendem Eintrag:
such = Mid(ActiveSheet.Range("D1"), 1, InStr(ActiveSheet.Range("D1"), ",") - 1) 'Patientenname
findet er die entsprechenden Einträge und schreibt sie in die Tabelle rein.

Einige Fragen dazu:

1. Du schreibst am Anfang deines Codes, dass keine doppelte Zuplanung beim selben Therapiebereich an einem Tag möglich ist. Weshalb?

2. Wie Du im farbigen Wochenplan sehen kannst, kommt es vor, dass zwei Therapiebereiche zur selben Zeit zusammen beim Patienten geplant werden müssen. Kann man das evtl. mit einer IF-Abfrage lösen, dass er im Patientenplan bspw. "Physio/Ergo" in die entsprechenden Felder einträgt?

3. Der Code setzt voraus, dass ich in der Patiententabelle drin bin und dort auf einen Click-Button o.ä. drücke und der Code durchläuft.
Indem ich mich jetzt seit einigen Stunden mit der Problematik auseinandergesetzt habe scheint es mir eigentlich idealer, wenn ich in der Planungsübersicht auf einen Button klicken würde und er von hier aus alle in der Planungsübersicht befindlichen Einträge automatisch in die zugehörigen Patiententabellen eintragen würde. (??!!)
Ich hoffe es wirkt jetzt nicht unverschämt mit solchen Wünschen nachzukommen. Ich kann auch überhaupt nicht abschätzen, ob es überhaupt möglich wäre und was es für einen Aufwand bedeuten würde. Ich wäre Dir hierbei um eine Einschätzung Deinerseits sehr dankbar.

Bis dahin schon mal herzlichen Dank und liebe Grüße
Peter


  

Betrifft: AW: komm wir gehen auf Fehlersuche von: Dirk
Geschrieben am: 22.02.2012 19:35:05

Hallo Peter,

zu 1.
Das habe ich in dem Code einfach nicht vorgesehen währe aber theoretisch möglich.
Ich geh ja mit einer Suchfunktion set zl=.find(........ her und suche in dem vorher definiertem Bereich nach dem Patenten. man müsste dann halt schauen wie man dort noch einen findnext befehl implementieren kann.
Ist das den erforderlich? Wir reden gerade davon, das ein Patient 2x an einem Tag zu Pysio geht.

zu 2.
ja ist möglich
ersetzte ganz weit unten den Block Do while szz<=.... bis loop
durch den hier

Do While szz <= ezz
If Cells(szz, spz) = "" Then
Cells(szz, spz) = was
Else
Cells(szz, spz) = Cells(szz, spz) & "/" & was
End If
szz = szz + 1
Loop
zu 3.
ohh Ha sowas in der art hatte ich befürchtet.
prizipiel ist das möglich setzt abe einige Sachen vorraus.
1. Die Datei (Patientenblatt)müssen alle am gleichen speicherort liegen.
2. Die Dateien müssen einen Dateinamen haben, der aus der übersicht auszulesen ist.
3. Das Makro muss von Grund auf umgeschrieben werden.

Aufwand??? Gute Frage mit der Übersicht, wie sie mom Aussieht ist es ein heidenaufwand Alle Namen auszulesen. Würdest du aber hergehen und eine "Hilstabelle" machen z.B. neben der Wochenübersicht, die Alle Patientennamen, die in der Woche eine Behandlung haben aufführst würd der Aufwand schlagartig sinken.
Wie lange ich dafür brauchen würde kann ich aber schlecht abschätzen.

Gruß
Dirk


  

Betrifft: AW: komm wir gehen auf Fehlersuche von: Peter
Geschrieben am: 23.02.2012 15:29:09

Hallo Dirk,

zu 1: hat mich zunächst nur interessiert. Derzeit sehe ich hier keinen Handlungsbedarf

zu 2: Danke für die Ergänzung. Ich hab sie eingebaut und es funktioniert auch.

zu 3: Ich habe es tatsächlich geschafft, selbst einen Code zusammenzubekommen. Habe aus verschiedenen Codes von Franz und Dir ne Möglichkeit gefunden, die auch funktioniert. Was mir noch fehlt sind Fehlerroutinen, bspw. wenn es das aufgerufene sheet, sprich die erforderliche Kalenderwoche in der Zieltabelle nicht gibt.

Wenn Du Zeit und Lust hast kannst Du mir gerne einen Tip geben.

Was mich grundsätzlich interessieren würde: wie gehst Du an eine solche Fragestellung ran, um zu wissen, mit wie vielen Variablen Du arbeiten musst, dass ein so super funktionierender Code am Ende rauskommt?

Noch eine Frage: Wäre es sinnvoll oder möglich, es so einzurichten, dass der Code automatisch bei jeder Änderung in der Übersicht auch die Zieltabelle gleich ändert? Habs mal probiert mit worksheet.selection, hat aber nicht funktioniert.
Hier "mein" Code:
https://www.herber.de/bbs/user/79049.xls

Bis hierhin auf jeden Fall ganz, ganz herzlichen Dank für Deinen Unterstützung

Herzliche Grüße
Peter


  

Betrifft: AW: komm wir gehen auf Fehlersuche von: Dirk
Geschrieben am: 23.02.2012 17:36:18

Hallo Peter,

zu3. Fehlerabfrage
Meiner Menung nach kommt es hier auf ein select auch nicht mehr an.
Das Bild wird so oder so Flackern (wenn man nicht das Display vorrübergehend deaktiviert)
daher würd ich das einfach so machen

On Error GoTo Fehler
Sheets(blnam).Select
Fehler:
 If Err > 0 Then
 Sheets("KW vorlage").Copy Before:=Sheets(2)
    ActiveSheet.Name = blnam
 End If
Das setzt aber vorraus, das du in den Patentendateien eine "Vorlage" hinterlegst hier "KW Vorlage" genannt.
Diese kann einfach eine kopie irgendeiner KW sein.
sollte dann mal die Aktuelle Fehlen wird von dieser Vorlage eine Kopie angefertigt und umbenannt.
(blnam müsstest du noch anpassen, wenn du bei deinem Code bleiben willst)

dein Code funktioniert prizipel.
ABER du gehst her und versuchst jede Datei, die in deinem Verzeichniss liegt zu verarbeiten.
Ob er nun gebraucht wird oder nicht.

ich hab mich gestern auch nochmal hingesetzt und das Programm umgeschrieben.
der Code ist Vielleicht nicht schön läuft aber sauber durch.
ich bin da aber davon augegangen, das du eine Hilfsliste erstellst, in der Die Namen der Patienten aufgeführt werde, die einen Termin in der Woche haben UND das deine Übersichten den Patentennamen als Dateinamen haben.

https://www.herber.de/bbs/user/79053.xls

Ich würde meine Tipperei nicht als Maßstab nehmen (ich Programier auch noch offt schwachsinn oder zu lang)

Ich geh grundsätzlich bei einer solchen aufgabenstellung her und unterteil mir das in einzelne Bereiche.
Hier z.B.
1. 1 Patient mit einem Termin für einen Tag
2. Schleife einbauen für 1 Patient mit mehreren Terminen für einen Tag
3. Schleife einbauen für 1 Patienten mit allen Terminen der Woche
4. Schleife Alle Patienten mit allen Terminen

ich hoffe man kann das verstehen
Die Variablen Definier ich hierfür immer Pro "stufe" und ergänze diese dann bei Bedarf.
zum Schluss überprüfe ich noch mehr oder minder ordentlich, ob ich Variablen "über" habe oder einsparen kann/möchte
dann wird der Code ggf nochmal kurz angepasst.

Gruß
Dirk


Beiträge aus den Excel-Beispielen zum Thema "Daten übertragen nach Prüfung mehreren Kriterien"