Keresés

Részletes keresés

Sztai Creative Commons License 2011.01.07 0 0 13751

Jól értem a problémát?

Van két tömb pl.

x és y

0     1

4     9

2     5

3     7

y értéke függ x változótól és még két értéktől m és b, az egyenlet pedig y=m*x+b

és Te az m és b értékét szeretnéd meghatározni?

    

 

 

 

 

 

 

 

 

 

 

Előzmény: erdeiboroka (13736)
erdeiboroka Creative Commons License 2011.01.07 0 0 13750

Nemigen tudom csatolni. Ez egy icipici része egy jónagy (többezer sor) macronak.

Csak letisztítva ez a probléma lényege.

Közben lett egy ötletem, az Excel valami négyzetösszeges képlettel számolja a lineáris illesztést, azt kellene kiszámolnom nekem is. Rögtön látnám hol van nullával osztás. (Elméletem szerint a számoláskor valahol nullával osztásnak kell lennie, mire az Excel nem hibát ad, hanem nulla eredményt.)

Amúgy mérési adatokról van szó, akármi lehet. Valós számok.

Aztán akármit mérünk, azzal kell tudnom számolni, és kell tudnom ábrázolni.

Előzmény: Sznida (13744)
Sztai Creative Commons License 2011.01.07 0 0 13749

Szerintem ez nem megfelelő, mert az adatérvényesítésnél üres sorok is vannak és a kérdező pont ezt szerette volna elkerülni. Másodszor abba az oszlopba már alá nem lehet írni semmit, mert az is megjelenik a legördülő listában. Egyébként az Ofset nél is ez gondot jelent, mert egy lejjebb található adat módosítja a tartományt.

Én mindenkinek melegen ajánlom a listává ill. 2007-ben táblává történő konvertálást.

Üdv

 

Előzmény: Delila_1 (13746)
coniglio01 Creative Commons License 2011.01.07 0 0 13748

Szuper!!! Nagyon-nagyon köszönöm :)

 

Mennyit agyaltam rajta... Megkérdeztem a Microsoftot is.. Valószínűleg nem olvasták el rendesen, mertz "üres mezők mellőzése"-t javasolták kipipálásra...

 

Lehet még egy kérdésem? Le tudom védeni a munkalapot azért? Próbáltam az adott cellákat levédeni, úgyhogy engedélyeztem a nem védett cellákba a klikkelést, és úgy is, hogy új sorok létrehozását is engedélyeztem, de nem megy...

 

A cél az lenne, hogy max 40-et vihessenek be, és a formátumon, az érvényesítéseken (pl, hogy csak x hosszúságú szöveg, vagy csak 1 és 50 közötti szám legyen bevihető) ne tudjanak változtatni!

Előzmény: Sztai (13742)
Sztai Creative Commons License 2011.01.07 0 0 13747

Az OFSET fv is tökéletes (régen így tudtunk din. listát készíteni), de aki nem ismeri, annak nehéz az argumentumokat megadni a név managerben, hiszen fejből kell tudni. Ezt könnyíti meg a listának (2003), ill. a táblázatnak (2007-10) a használata.

Üdv

 

Előzmény: Delila_1 (13745)
Delila_1 Creative Commons License 2011.01.07 0 0 13746

Még egyszerűbb dinamikus lista:

 

Címsor nélkül beviszem az adatokat, a teljes oszlopot kijelölöm, és úgy adok nevet, akár a szerkesztőléc bal oldalán lénő Név mezőben.

 

Az érvényesítésnél mindig a teljes lista látszik, kevés adatnál plusz 3-4 üres sorral.

Előzmény: Sztai (13742)
Delila_1 Creative Commons License 2011.01.07 0 0 13745

A dinamikus listát (szerintem) egyszerűbben is létre lehet hozni.

A Munka1 A oszlopába bevittem az adatokat – címsor nélkül.

Adatok - Definiált nevek - Név megadása.

Név -> kiadványok, Hivatkozás -> =OFSZET(Munka1!A1;0;0;DARAB2(Munka1!A:A);1)

 

A beszúrandó helyre Adatok - Érvényesítés - Megengedve: Lista - Forrás: =kiadványok

 

Ha mégis akarsz címsort adni a Munka1!A1-be, a Hivatkozás képlete:

=OFSZET(Munka1!A1;0;0;DARAB2(Munka1!A:A)-1;1)

 

Úgy vettem észre, hogy a 2007-es verziónak van egy (?) betegsége. Miután bevittem az ofszetes függvényt a megadott névhez, önkényesen megváltoztatja a képletet. Ezt a Képletek - Definiált nevek - Névkezelőjében korrigálom, ezután már megmarad.

Előzmény: Sztai (13742)
Sznida Creative Commons License 2011.01.07 0 0 13744

Sikerült reprodukálnom, gondolkodom..... gondol...... :)

Előzmény: Sznida (13743)
Sznida Creative Commons License 2011.01.07 0 0 13743

Szia,

 

Milyen értékeid vannak abban a tömbben?

Tudsz csatolni egy képet erről a munkafüzetről?

Értem a kérdést, de nem sikerült még reprodukálnom.

 

Köszi!

Előzmény: erdeiboroka (13736)
Sztai Creative Commons License 2011.01.07 0 0 13742

1. Azon a mlapon ahol a kiadványok vannak és már elnevezted a tartományt (b1:B40) kiadványoknak de még nem írtál be könyveket, hozz létre egy táblát: jelöld ki a b1:b2 tartományt:

insert tab/tables csoport/table, jelöld be, hogy van fejléc és ok

Automatikusan kapsz egy formázott táblát, a jobb alsó sarkában egy kis háromszög jelzi, hogy addig tart. Ha most b2-be majd b3 ba beírsz valamit a tartományod  nő (a háromszög most már b3-ban van. Ha formátum nem kell, eltávolíthatod ill módosíthatod a Table tools - Design tab/Table Styles csoportban válassz mást.

2. módosítsd a már meglévő nevet pl. kiadványok: Formulas tab/Defined names/Name Manager. A névhez tartozó tartományt módosítsd kijelöléssel ($b$2:$b$3) ok.

Ettől kezdve a kiadványok tartomány dinamikus lesz.

3. A másik munkalapon, ahol rendezvények vannak, jelöld ki azt a tartományt, amelyikre az adatérvényesítést állítod be és a lista forrásaként a tartomány nevét add meg (F3-at nyomva megkapod a létező nevek listáját és onnan is beszúrhatod) List Data Source:=kiadványok

Ettől kezdeve a legördülő lista panelod mindíg azokat a könyveket ajánlja föl amelyek a névhez tartozó dinakus listában szerepelnek. Próbáld ki, írj be a kiadványok munkalapon a b4-be valamit-->enter és ellenőrizd a rendezvények munkalapon a legördülő listádat.

Ha nem működik, ellenőrizd a Name Manager-ben, hogy a Kiadványok tartomány ugyan az e mint a TableX (pl. Table1) Ha nem akkor a névhez tartozó tartományt módosítsd ugyan arra mint a TableX

4. A kiadványok mlapon kitörölheted a próbaként megadott három címet:

jelöld ki a b2:b4 tartományt-->jobb klikk és Delete-->Table rows

Ha mindent jól csináltál: a Name Managerben lesz TableX és Kiadványok és mindkettőnek a tartománya ua: $b$2:$b$2. Ez a lényeg és hogy az adatérvényesítésnél erre a névre hivatkozz.

 

 

Remélem sikerült világosan leírni

Üdv

 

Előzmény: coniglio01 (13741)
coniglio01 Creative Commons License 2011.01.07 0 0 13741

Jaj, nagyon köszönöm :)

2007-est.

Előzmény: Sztai (13740)
Sztai Creative Commons License 2011.01.07 0 0 13740

Leírom lépésenként a megoldást de előtte mond meg lszives, hogy milyen excel verziót használsz.

Üdv

Előzmény: coniglio01 (13739)
coniglio01 Creative Commons License 2011.01.07 0 0 13739

Nagyon köszönöm a segítséget!

 

Az a baj viszont, hogy mivel ez űrlapként funkcionál, amit kiküldünk egy-két helyre, a 40 üres mező már adva van az az elején. Ezt a 40-et neveztem el "kiadvanyok"-nak (mondjuk B1:B40). Viszont, amikor eljut a felhasználóhoz, vagy bevisz 40-et, vagy csak 10-et. A többi üresen marad. Hogy mennyit, azt előre nem tudom. (Azaz csak B1:B10-ig lesz benne kiadvány, B11:B40-ig semmi.) De mivel a legördülő lista a "kiadvenyok"-ra(B1:B40) vonatkozik, ezért kijön a listában egy rahedli üres sor :(((

 

Ezért tűmik számomra megoldhatatlannak a dolog...

 

 

Előzmény: Sztai (13738)
Sztai Creative Commons License 2011.01.07 0 0 13738

2003-as verzióban:

A beírt könyvcímeket jelöld ki és rendelj hozzá nevet, majd alakítsd át listává úgy, hogy a fejléc is legyen kijelölve. Ha ezek után az adatérvényesítésnél a listát választod és forrásként a lista nevét adod meg az csak a listában meglévőket fogja mutatni. Ha a lista bővül, akkor a legördülőben is megjelennek az újab címek.

2007-ben annyi a különbség, hogy a listát táblázatnak nevezi Create List helyett format vagy insert table.

Üdv

Előzmény: coniglio01 (13737)
coniglio01 Creative Commons License 2011.01.07 0 0 13737

Sziasztok!!!

 

Erre nem tudtok egy logikai függvényt?

 

Adott egy táblázat 2 munkalappal. Az egyikben a felhasználónak lehetősége van 40 egymás alatti mezőbe 40 könyvcímet (vagy akár kevesebbet, ha nem tölti ki az összes mezőt) bevinni.
A másik munkalapba bevezetheti a rendezvényeit, és azokhoz legördülő menüvel hozzárendelheti a kiadványok címeit (1 rendezvényhez 1 kiadványt).
A kérdésem az, hogy hogyan tudnám megoldani, hogy az Adatok/Érvényesítés paranccsal létrehozott legördülő menüben a 40 mezőből csak azok jelenjenek meg, amelyek nem üresek. (A felhasználó ugyanis ha bevisz 15 kiadványt a 40 helyett, akkor 25 üres sor jelenik meg a listában a 15 kiadvány mellett.)

 

Van egy olyan opció az adatok/érvényesítés /beállítások fül alatt, hogy "Egyéni" ide elvileg logikai függvényt be lehet írni a legödülő lista tartalmának megállapításához. Erre nem tudtok esetleg valamit?

 

Ha tudtok, segítsetek légyszi, mert megakadtam ennél... :(

 

Előre is nagyon köszönöm Nektek!

erdeiboroka Creative Commons License 2011.01.07 0 0 13736

Az a megoldás a profibb :-)

 

Az én kérdésem:

x,y adatokkal vannak megadva pontok egy x,y síkon, az Xtomb, Ytombben találhatóak.

Keresem az ezekre a pontokra illesztett trendvonal meredekségét.

Az egyenes egyenlete y=mx+b, ahol m a meredekség.

 

m = Application.index(Application.LinEst(Xtomb, YBtomb), 1)

 

Ha cellákban számolok, egy ilyen képlettel próbálkoztam 3 mintaadaton:

=INDEX(LIN.ILL(S[-4]O[-1]:S[-2]O[-1];S[-4]O:S[-2]O);1)

 

Az a problémám, hogy az Excel mind a két módszerrel nullát ad a függőleges egyenes meredekségére, ami ugye végtelen lenne egyébként.

Ez jó, mert nem száll el a program ilyen estetben, viszont nem tudom megkülönböztetni attól, amikor az m tényleg nulla és az egyenes vizszintes.

Ez pedig fontos lenne, márcsak a diagramon ábrázolás kedvéért is.

 

Kérdés:

Van valami ötlet, hogyan tudnám a két esetet megkülönböztetni?

Van valami belső hibakód, vagy valami error változó ami igazba áll, ha m= végtelen lenne?

Nem biztos, hogy elég érthető voltam :-(

 

Előzmény: Sznida (13735)
Sznida Creative Commons License 2011.01.07 0 0 13735

Szia Erdeiboroka,

 

Köszönöm szépen a fáradozásaid, szép megoldásaid voltak, tetszik a logikád!

Bár a Jimmy the Hand megoldása rövidebb, és talán rugalmasabb, de ügyesen megoldottad Te is a feladatot! :)

 

Köszi még egyszer!

 

Szép napot!

 

Üdv: Sznido

Előzmény: erdeiboroka (13731)
Sznida Creative Commons License 2011.01.07 0 0 13734

Szia Jimmy the Hand,

 

Csak ámulok bámulok! Tökéletes megoldás, nagyon tetszik! Megtartom :)

 

Nagyon szépen köszönöm!!!!!

Ismét sikerült megtanulnom valamit. :)

 

Szép napot!

 

Üdv: Sznido

Előzmény: Törölt nick (13733)
Törölt nick Creative Commons License 2011.01.07 0 0 13733

Sőt, ez még jobb:

 

Function Rendezett_tomb(bemeneti_tomb)
    Dim Result, i As Integer
    
    ReDim Result(LBound(bemeneti_tomb) To UBound(bemeneti_tomb))
    For i = LBound(bemeneti_tomb) To UBound(bemeneti_tomb)
        Result(i) = Application.WorksheetFunction.Small(bemeneti_tomb, i)
    Next
    Rendezett_tomb = Result
End Function

Előzmény: Törölt nick (13732)
Törölt nick Creative Commons License 2011.01.07 0 0 13732

Próbáld ki ezt is:

 

Function Rendezett_tomb(bemeneti_tomb)
    Dim Result(1 To 50) As Integer, i As Integer
    
    For i = 1 To 50
        Result(i) = Application.WorksheetFunction.Small(bemeneti_tomb, i)
    Next
    Rendezett_tomb = Result
End Function

 

 

Előzmény: Sznida (13707)
erdeiboroka Creative Commons License 2011.01.07 0 0 13731

Na, azért csak összeszedtem magam és írtam egy olyan algoritmust, ami már tetszik is :-)))

Ez sokkal egyszerűbb és rövidebb is.

 

Sub TombRendezesCsereBerevel()

Dim tomb(1 To 50) As Integer
Dim adat As Integer
'beolvassuk az adatokat az elso oszlop első 50 sorából
    For i = 1 To 50
        tomb(i) = Cells(i, 1)
    Next i
' 49-szer csereberélünk
    For j = 1 To 49
' végignézzük a tömböt, ha van szomszédos elem rossz sorrendben, megcseréljük
        For i = 1 To 49
            If (tomb(i) > tomb(i + 1)) Then
                adat = tomb(i)
                tomb(i) = tomb(i + 1)
                tomb(i + 1) = adat
            End If
        Next i
    Next j
' a rendezett adatokat visszaírjuk a 3. oszlopba
        For i = 1 To 50
            Cells(i, 3) = tomb(i)
        Next i
End Sub

Előzmény: Sznida (13730)
Sznida Creative Commons License 2011.01.06 0 0 13730

Gyönyörű megoldás! Örülök, hogy sikerült megoldanod!

 

Köszönöm szépen! :)

 

Üdv: Tom!

Előzmény: erdeiboroka (13729)
erdeiboroka Creative Commons License 2011.01.06 0 0 13729

Írtam egy még bonyolultabb megoldást.

Kicsit szépséghibás, de nekem működött :-)

 

Sub TombRendezes()

Dim tomb(1 To 50) As Integer
Dim rendezetttomb(1 To 50) As Integer
Dim kesz(1 To 50) As Boolean
Dim min As Integer
Dim ind As Integer
'beolvassuk az adatokat az elso oszlop első 50 sorából
    For i = 1 To 50
        tomb(i) = Cells(i, 1)
    Next i
' a kesz tomb osszes elemét hamisra állítjuk
    For i = 1 To 50
        kesz(i) = False
    Next i
' 50-szer megkeressük a legkisebb elemet
    For j = 1 To 50
'a min változó kezdeti értéke legyen nagyobb, mint bármelyik adat
    min = 10000
' megkeressük a legkisebb elemet a tömbben
        For i = 1 To 50
            If ((min > tomb(i)) And Not kesz(i)) Then
                min = tomb(i)
                ind = i
            End If
        Next i
'ezt elmentjük a rendezettombbe
        rendezetttomb(j) = min
'a kesz tombben ezen indexű elemet megjelöljük
        kesz(ind) = True
    Next j
' a rendezett adatokat visszaírjuk a 3. oszlopba
        For i = 1 To 50
            Cells(i, 3) = rendezetttomb(i)
        Next i
End Sub

Előzmény: Sznida (13700)
Sznida Creative Commons License 2011.01.06 0 0 13728

OK, de tudjuk, igaz én nem szeretem, mert egy időpontról van szó, ami a dátummal együt teljes.

Ettől függetlenül olyanra csinálom, ahogy szeretnéd! :)

 

Holnap e-mail-ben jelentkezem!

 

Üdv: Sznido

Előzmény: Törölt nick (13727)
Törölt nick Creative Commons License 2011.01.06 0 0 13727

igen!

Köszi, jó éjt!

Amúgy a dátumot és az órát nem tudjuk külön oszlopba rakni?

De csak holnap:)

 

Péter

Előzmény: Sznida (13726)
Sznida Creative Commons License 2011.01.06 0 0 13726

A 0:30, az fél órának számít? A többi egyértelmű.

Holnap küldöm!

 

Üdv: Sznido

Előzmény: Törölt nick (13725)
Törölt nick Creative Commons License 2011.01.06 0 0 13725

Igen!

Ezt én is el felejtettem:))

0:29-ig lefele,0:31-től felfele keekítünk

Amúgy pont olyan mint amit szerettem volna

Köszönöm!

Előzmény: Sznida (13724)
Sznida Creative Commons License 2011.01.06 0 0 13724

Elküldtem!

 

Ja, azt elfelejtettem, hogy sajnos csak egész órákat számol, azaz nem számolja a tört órákat! :( Ha gondolod, akkor lehet még fejleszteni, de azt már csak holnapra! :)

 

Szép estét!

 

Üdv: Sznido

Előzmény: Törölt nick (13723)
Törölt nick Creative Commons License 2011.01.06 0 0 13723

Na erre mondtam,hogy tök sötét vagyok az excelhez. fogalmam sincs mit kezdjek ezzel amit írtál. ha elküldöd az excel file-t akkor tudom,hogy ezt akartam vagy nem.

persze ezzel nem követelni szeretnék csak másképp nem értem amit írsz:))

Előzmény: Sznida (13722)
Sznida Creative Commons License 2011.01.06 0 0 13722

Szóval, csatoltam egy képet, remélem látszik majd. Csak azért, hogy a hivatkozott celláim egyértelműek legyenek.

 

B2 és a C2-es cella formátuma "éééé.hh.nn ó:pp"

 

D2 cella képlete: =HA(NAP(B2)=NAP(C2);HA(ÓRA(B2)>=6;HA(ÓRA(B2)<22;HA(ÓRA(C2)>=22;22-ÓRA(B2);ÓRA(C2)-ÓRA(B2))));HA(NAP(C2)-NAP(B2)>1;16;0))+HA(NAP(B2)=NAP(C2);0;HA(ÓRA(C2)>6;HA(ÓRA(C2)<22;ÓRA(C2)-6;16);0)+(NAP(C2)-NAP(B2)-1)*16)

 

E2 cella képlete: =HA(ÓRA(B2)<6;HA(NAP(B2)=NAP(C2);HA(ÓRA(C2)>6;6-ÓRA(B2));6-ÓRA(B2));HA(ÓRA(B2)>=22;HA(NAP(C2)>NAP(B2);24-ÓRA(B2);ÓRA(C2)-ÓRA(B2));0))+HA(NAP(C2)>NAP(B2);HA(ÓRA(C2)<=6;ÓRA(C2);HA(ÓRA(C2)>22;24-ÓRA(C2)+6;6));0)+HA(NAP(C2)-NAP(B2)=0;0;(NAP(C2)-NAP(B2)-1)*8)

 

F2 cella képlete: =D2+E2

 

G2 cella képlete: =D2*750+E2*1000

 

Ezután ezt lemásolhatod a többi cellákba is.

 

Teszteltem, és nem találtam hibát benne, de ez nem jelenti azt, hogy tljesen tökéletes.

Teszteld, és javítom, ha van még benne hiba! :)

 

Üdv: Sznido

Előzmény: Sznida (13719)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!