Keresés

Új hozzászólás Aktív témák

  • Mutt

    senior tag

    válasz Nyomdász #19486 üzenetére

    Hello,

    A #NÉV? azt jelenti, hogy adott névvel nem talál függvényt. pl. az FKERES-t ha FKEREK-re elütöd, akkor ezt kapod. Mivel ez egy saját függvény, nem beépített ezért még az is gond lehet, hogy abban a füzetben ahol használod ott nem érhető el az Excelnek.
    Ha mindig elérhetőnek akarod, akkor vagy a saját makrófüzetbe teszed vagy addin-ként használod. (Ha addinként is jó, akkor átírjuk.)

    Az #ÉRTÉK hiba sokminden lehet, de inkább arra tippelek hogy valamelyik bemenő paramétert nem szereti.
    Nézd, meg hogy melyik paraméter esetén még jó és mikor nem.

    Excel 2010 és 2003-ban nekem műkődik, persze ez nem jelenti, hogy minden más esetben is kell hogy menjen. Csak emiatt még nem javaslom, hogy egy bevált rendszert cseréljél.
    Ha lehetséges, akkor osszd meg az eredeti fájlodat és megnézem.

    Kérdés, hogy a mintám amit letöltöttél az rendben megy?
    Ha abba bemásolod az adataidat, akkor is működik?

    üdv.

  • Mutt

    senior tag

    válasz Nyomdász #19484 üzenetére

    Hali,

    Töltsd le újra a fájlt, javítottam rajta kicsit.

    Ha kevés adatod van (kb. 5000 egyedi szám), akkor még elfogadható sebességgel megy.

    üdv

  • Mutt

    senior tag

    válasz Nyomdász #19454 üzenetére

    Hello,

    Tömbfüggvénnyel esetleg megoldható, illetve az újabb változatokban van GYAKORISÁG függvény, de ez sem segít sokat.

    A javaslatom egy saját függvény használata. Feltöltöttem ide egy mintával:
    https://www.sugarsync.com/pf/D0303523_164_627981888

    A függvénnyel mind a legtöbbször, mind a legkevesebbszer használt számokat meg lehet kapni.

    A kód a pedig:
    Function GYAKORI(Tartomany As Range, Elem As Long, Optional Kicsi As Boolean = False, Optional Rendezetlen As Boolean = False)
    Dim Adatok As New Collection 'egyedi számok tömbje
    Dim arryAdatok() 'végső tömb
    Dim rngAdatsor As Range 'adatokat tartalmazó terület
    Dim cell As Range
    Dim i As Long

    'csak a kijelölt és számokat tartalmazó terület metszetét vizsgáljuk
    Set rngAdatsor = Intersect(Tartomany, ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlNumbers))

    'a collection-be felvesszük a számokat, mivel csak egyedi értékeket
    'tud fogadni, ezért ki kell kapcsolni a hibakezelést
    On Error Resume Next
    'végigmegyünk az adatterületen és felvesszük a collection-be
    For Each cell In rngAdatsor
    Adatok.Add cell.Value, CStr(cell.Value)
    Next cell
    'hibakezelés visszakapcsolása
    On Error GoTo 0

    'létrehozunk egy két dimenziós tömböt: számokat és gyakoriságukat fogjuk tárolni
    ReDim arryAdatok(1 To Adatok.Count, 1 To 2)

    'feltöltjük a tömböt
    For i = 1 To UBound(arryAdatok, 1)
    'számérték
    arryAdatok(i, 2) = Adatok.Item(i)
    'számérték gyakorisága - DARABTELI-vel határozzuk meg
    arryAdatok(i, 1) = WorksheetFunction.CountIf(rngAdatsor, Adatok.Item(i))
    Next i

    'sorbarendezzük a számokat alapból (ha a rendezetlen IGAZ-ra van állítva akkor nem fut le)
    If Not Rendezetlen Then
    BubbleSort arryAdatok, 2
    End If

    'a gyakoriság (első dimenzió) szerint növekvő sorrendbe tesszük a tömböt
    'buborék rendezés kódja innen származik
    'http://social.msdn.microsoft.com/Forums/en-US/320f3328-cb4f-43ce-aedf-c0f00f253b64/sorting-a-2-dimension-array-in-excel-vba?forum=isvvba
    BubbleSort arryAdatok, 1

    'ha KICSI-ként használjuk a függvényt, akkor a tömb első elemei kellenek
    'ha NAGY-ként akkor viszont az utolsók
    If Not Kicsi Then
    Elem = UBound(arryAdatok, 1) - Elem + 1
    End If

    'eredmény
    GYAKORI = arryAdatok(Elem, 2)

    End Function

    üdv.

  • Nyomdász

    csendes tag

    válasz Nyomdász #19440 üzenetére

    Sziasztok!

    Kiegészítésként az előző kérdésemhez annyit hozzátennék hogy nem fontos képlettel, képletekkel megoldani a problémát, tanácsokat szeretnék kérni ti hogyan keresnétek ki a leggyakrabban és a legkevesebbszer előforduló számokat? Én ezt most úgy csinálom hogy emelkedő sorba állítom az összes számot majd beírom egy mezőbe hogy: =módusz(A:G) így ugyebár megkapom az itt található számok közül azt az egy számot ami a legtöbbször fordul elő, majd az összes oszlopból kitörlöm a módusz alapján kapott számot, így a képlet a következő leggyakrabban előfordult számot adja meg és így tovább ameddig meg nem kapom a kellő mennyiségű adatot. De ez sajnos nagyon lassú, valami gyorsabb hatékonyabb dolog kéne. Előre is köszönöm.

Új hozzászólás Aktív témák

Hirdetés