".Find" findet gelegentlich den Suchstring nicht

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von mausi79.

    ".Find" findet gelegentlich den Suchstring nicht

    Hallo Profis,

    ich bin dabei einen Kalender mit unserem Schichtsystem zu verknüpfen.

    Dafür brauche ich u.a.die .find Funktion, um der Reihe nach die Kalenderwochen(KW1-52) zu suchen.
    Das funktioniert auch soweit, aber bei KW40 im September und bei KW49 im Dezember passieren merkwürdige Dinge. Obwohl "KW40" bzw. "KW49" als Wert in der Tabelle stehen, werden diese nicht am richtigen Orte gefunden.

    Ich habe eine verkürzte Version des Kalenders im Anhang beigefügt.
    Wäre cool, wenn einer den Fehler finden würde.
    Dateien
    • test.xls

      (89,09 kB, 214 mal heruntergeladen, zuletzt: )
    Wenn du deine Monate so in Blöcke anordnest, woher soll der Algorithmus bei Doppelvorkommen wissen, welche der beiden Adressen (firstaddress, secondaddress) zum späteren Monat gehört?
    Du musst deine If doppelkw-Berechnung etwas intelligenter gestalten und nicht grundsätzlich nur secondaddress zurückgeben..
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Der Algorithmus funktioniert so wie er ist. Fast jede KW kommt eben zweimal vor, daher auch zwei "Adressen". Jedoch findet er die KW40 im Sepemtber und die KW49 im Dezember gar nicht. Die Excelmappe ist übrigens nur eine abgespeckte Version fürs Forum, aber das mit der grundsätzlichen Monatszuordnung nach der Suche funktioniert, bis auf die zwei Problemchen, soweit recht gut.

    Ich suche die "kw40" in Zelle A26 und in J22 und das Programm findet dann "kw40" in Zelle J22 und A27. Zelle A27 ist aber leer!
    Ich suche die "kw49" in Zelle AB22 und das Programm findet "kw49" aber in Zelle AB23. AB23 ist aber schon kw50!
    Das verstehe ich halt nicht.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „mausi79“ ()

    .Find sucht wahlweise zeilenweise oder spaltenweise, nicht aber blockweise.
    Bei deiner 3x4-Aufteilung wird der spätere Monat einmal vor und einmal nach dem früheren Monat gefunden.
    Weil er sich entweder im Block darunter befindet oder im gleichen Block dahinter.
    Für beide Varianten gelten aber unterschiedliche Regeln.

    Du kannst ja testweise alle Monate untereinander schreiben, dann wird's sicher funktionieren.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Bei deiner 3x4-Aufteilung wird der spätere Monat einmal vor und einmal nach dem früheren Monat gefunden.

    Weil er sich entweder im Block darunter befindet oder im gleichen Block dahinter.

    Für beide Varianten gelten aber unterschiedliche Regeln.
    Ich hab den Fehler gefunden.
    ActiveSheet. musste vor den Range-Befehlen eingefügt werden, da Excel wohl mit mehreren Sheets Probleme hatte. Jetzt klappt es endlich wieder. Ansonsten musste ich, wie ich mir schon dachte, am Algorithmus nichts weiter ändern. THX

    *CLOSED*