Seite 2 von 2

Re: Suchen nach nächst kleinerer Zahl?

Verfasst: Mo, 24.03.2025 14:27
von Karolus
Ich hab das nochmal etwas angepasst und an das Ereignis »Inhalt geändert« von Tabelle3 gebunden:

Code: Alles auswählen

from bisect import bisect_left

def search_and_select(event):    
    if not event.AbsoluteName.endswith("$D$2"):
        return
    nummer = event.Value
    if not nummer:
        return    
    doc = XSCRIPTCONTEXT.getDocument()
    tab_2 = doc.Sheets[1]
    tab_3 = event.Spreadsheet
    ctrl = doc.CurrentController
    in_use = tab_3["B:B"].queryContentCells(7)[0].DataArray
    existing_nums = tab_2["A:A"].queryContentCells(7)[0].DataArray
    try:
        pos = in_use.index( (nummer,) )
        ctrl.select( tab_3[pos, 1] )
        return
    except ValueError:
        pos = bisect_left( existing_nums, (nummer,) )        
        if existing_nums[pos][0] == nummer:
            (t:=tab_3[len(in_use),1]).Value = nummer
            ctrl.select( t )
            return
        else:
            ctrl.select( tab_2[pos-1, 0] )
Zum Testen:
Artikelnummer_suche.ods
(16.89 KiB) 531-mal heruntergeladen

Re: Suchen nach nächst kleinerer Zahl?

Verfasst: Mo, 24.03.2025 15:07
von MT326
Faszinierend....
wie das auf einmal aussieht wenn jemand programmiert anstatt zu basteln.
meine Hochachtung...
Zu deinen Bedenken wegen dem ZählenWenn.
Sicherer ist auf jeden Fall >= aber die Zahlen in Tabelle 2 sind Artikelnummern die nur einmal vorkommen dürfen.
Gruß MT

Re: Suchen nach nächst kleinerer Zahl?

Verfasst: Mo, 24.03.2025 16:01
von Karolus
Damit ihr mal seht wie ein Benutzerfreundliches modernes interaktives Werkzeug ( Jupyter-notebook ) im Vergleich zur »BÄHSICK«-IDE aussieht: