Keresés

Részletes keresés

Törölt nick Creative Commons License 2011.05.19 0 0 14890

Ajánlom figyelmedbe az InStrRev függvényt

;-)

Előzmény: Delila10 (14888)
Delila10 Creative Commons License 2011.05.19 0 0 14889

Robbantómester hozzászólását csak most láttam, miután leírtam a függvényt.

Delila10 Creative Commons License 2011.05.19 0 0 14888

Kihasználva, hogy SQLkerdes még nem szerezte meg a világuralmat (#14850-es hsz.), egy másik megoldást javaslok. Ebben egy függvénnyel megkapod az utolsó szót.

Szóköz nélküli szövegnél a teljes szót írja ki.

 

Function UtoSzo(szoveg As String) As String
    Dim sor%
    For sor% = Len(szoveg) To 1 Step -1
        If Mid(szoveg$, sor%, 1) = " " Then
            UtoSzo = Right(szoveg, Len(szoveg) - sor%)
            Exit Function
        End If
    Next
    UtoSzo = szoveg
End Function



Előzmény: wawabagus (14883)
Törölt nick Creative Commons License 2011.05.18 0 0 14887

pl.:

=ExtractElement(B1;WordCount(B1);" ")

 

 

Function ExtractElement(str, n, sepChar)

' Returns the nth element from a string,
' using a specified separator character
Dim x As Variant
x = Split(str, sepChar)
If n > 0 And n - 1 <= UBound(x) Then
ExtractElement = x(n - 1)
Else
ExtractElement = ""
End If
End Function

 

 

Function WordCount(txt) As Long
' Returns the number of words in a string
Dim x As Variant
txt = Application.Trim(txt)
x = Split(txt, " ")
WordCount = UBound(x) + 1
End Function

 

 

 

Ezt a kettőt sokat használom magam is.

forrás:

 

http://spreadsheetpage.com/index.php/tip/the_versatile_split_function/

Előzmény: wawabagus (14883)
wawabagus Creative Commons License 2011.05.18 0 0 14886

szia!

dzsiiz...jó bonyolúltnak tűnik :-DDD.

Átelemzem lépésről lépésre :-).

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

Előzmény: SQLkerdes (14885)
SQLkerdes Creative Commons License 2011.05.18 0 0 14885

=RIGHT(A1,LEN(A1)-MAX((MID(A1,ROW(INDIRECT("a1:a"&LEN(A1))),1)=" ")*ROW(INDIRECT("a1:a"&LEN(A1)))))

 

Ctrl+Shift+Enter-rel lezárva.

A1 tartalmazza a szöveget.

Előzmény: SQLkerdes (14884)
SQLkerdes Creative Commons License 2011.05.18 0 0 14884

A cella tartalmát felbontod betűkre egy MID tömbfüggvény alkalmazásával.

Minden betűre megvizsgálod, hogy az szóköz-e (IGEN=1, NEM=0), ezt az eredményt megszorzod az adott betű sorszámával és ezeknek a szorzatoknak a maximumát keresed egy MAX függvénnyel.

A kapott eredmény az utolsó szót megelőző szóköz pozíciója.  Innen már csak egy sima RIGHT függvény.

 

Ha vannak a cellatartalom végén szóközök akkor az egész fenti cuccot nem a cella tartalmára, hanem a cella TRIM-melt tartalmára végzed el.

 

Lesz kb 3 sor a függvény, de működni fog.

Előzmény: wawabagus (14883)
wawabagus Creative Commons License 2011.05.18 0 0 14883

Még szeretnék tőletek kérdezni valamit.

Hogyan lehet egy tetszőleges hosszúságú és db szóból álló cella utolsó szavát kiszedni?

 

Ha pl csak 3, esetleg 4-5 szóból álló celláról van szó, akkor a LEN, FIND, RIGHT segítségével ezt meg tudom oldani, ha tudom mennyi a maximális szó mennyiség.

 

De hogyan oldható ez meg ha nem tudom mennyi lehet a maximális szó a cellában?

 

Köszi a segítséget!!

Y

 

wawabagus Creative Commons License 2011.05.18 0 0 14882

Sziasztok!

Azt szereteném az exceltől kérni makróban, hogy egy megadott folderban lévő összes munkafüzetet nyisson ki, majd mindenek az első lapját másolja egy master fájlba.

De nem akar működni.

 

Hol rontottam el szerintetek?

Köszi a segítséget!!

 

--------

 

Sub MergeSheets()

Dim wbMaster As Workbook
Dim NumbSht As Integer
Dim BegSht As Integer

Application.ScreenUpdating = False

útvonal = "S:AdHoc AnalysisMACROExperiment"

Workbooks.Add 1
ActiveWorkbook.SaveAs Filename:=útvonal & "Master.xls"

With Application.FileSearch
    .LookIn = útvonal
    .FileType = msoFileTypeExcelWorkbooks
    .Execute
    
For i = 1 To .FoundFiles.Count
     Workbooks.Open .FoundFiles(i)
     
     BkName = ActiveWorkbook.Name
     BegSht = 1
   
             Workbooks(BkName).Sheets(BegSht).Move Before:=Workbooks("Master.xls").Sheets(1)
   Next
End With

Application.ScreenUpdating = True
End Sub

SQLkerdes Creative Commons License 2011.05.18 0 0 14881

Kuldtem e-mailt a profilodban megadott e-mailcímre.

Előzmény: Xooo (14876)
Sznida Creative Commons License 2011.05.18 0 0 14880

Biztosan a sinus olyan tartományában használtad, ahol nem volt feltűnő a különbség, gondolom...

 

Üdv: Sznido

Előzmény: Axi-Maxi (14879)
Axi-Maxi Creative Commons License 2011.05.18 0 0 14879

Az előző szinusznál fok volt és ott működött itt is fok de a tangesnél már nem, most hogy kitöröltem jó.

Előzmény: Sznida (14878)
Sznida Creative Commons License 2011.05.18 0 0 14878

El kellene döntened, hogy a bemenő adatod az radián, vagy fok, amennyiben radián, akkor a képlet jó, amit kelan összefűzött, amennyiben fok, akkor a képletből töröld ki az összes "fok" szót!

 

Üdv: Sznido

Előzmény: Axi-Maxi (14877)
Axi-Maxi Creative Commons License 2011.05.18 0 0 14877

2 fok 46 perc 50,7 mp kéne kijönnie

Előzmény: Sznida (14871)
Xooo Creative Commons License 2011.05.18 0 0 14876

Az mondjuk pont nem lenne lényeges :D Azt az egy hónapot kiszámoljuk manuálisan :)

Előzmény: SQLkerdes (14875)
SQLkerdes Creative Commons License 2011.05.18 0 0 14875

Azt kell mondjam excelben ez sem halálos probléma.

Ha a worksheet-ek neve egységesítve van (pld 2011+PONT+SZÓKÖZ+HÓNAPTELJESNEVE), akkor még egy durva kinézetű OFFSET-tel is meg lehet csinálni.

Ha a worksheetek nevét nem lehet valamilyen logikai lánc alapján előállítani akkor meg ott van régi barátunk az UDF.

 

A 2011. január 5-e viszont valszeg szíven döfi a rendszert, mert ahogy látom az egy teljesen más file-ban van (mármint a 2010 decemberi adat).  Bár...  ;-)

Előzmény: Xooo (14873)
Xooo Creative Commons License 2011.05.18 0 0 14874

A termékek neve alatti oszlopokról van szó, tehát I5, M5 stb

Előzmény: Xooo (14873)
Xooo Creative Commons License 2011.05.18 0 0 14873

 

Így néz ki a táblázat. Amint látjátok az első fülre egy összesítőt tettem, ami gyakorlatilag ugyanez a táblázat csak leegyszerűsítve, ebbe kellene az utolsó 20 nap eredménye. DE jogos a kérdés, mi van ha február 5-én szeretném megtudni... itt kezdődik a baj. A táblázatom egy évre van bontva ahogy a képen látszik, tehát pl febr 5-én január 15-ig kellene hogy visszaszámoljon, viszont a hónapok különböző hosszúságúak... pfff. :(

Előzmény: Sznida (14870)
SQLkerdes Creative Commons License 2011.05.18 0 0 14872

Vagy (xl2007 és fölötte esetén) lehet az IFERROR-t használni:

=IFERROR(SUM(INDIRECT("B"&(DAY(TODAY())+1-20&"":B"&DAY(TODAY()+1);SUM(INDIRECT("B2:"&DAY(TODAY()+1)))

 

Ekkor mindíg megpróbál 20 napot visszamenni az időben, de ha még nincs 20-a akkor hibát kap, az IFERROR hiba ágon pedig más B2-től számoltatja.

Szárazon írtam a fenti függvényt, szóval akár rossz is lehet szintaktikailag.

Előzmény: Sznida (14870)
Sznida Creative Commons License 2011.05.18 0 0 14871

Az nem jó?

2,78075 radián az 159,3252°

 

Üdv: Sznido

 

 

Előzmény: Axi-Maxi (14869)
Sznida Creative Commons License 2011.05.18 0 0 14870

A mai nappal kibővítve, az új képlet:

 

=HA(NAP(MA())>=20;SZUM(INDIREKT("B"&(NAP(MA())+1)-20&":B"&(NAP(MA())+1)));SZUM(INDIREKT("B2:B"&(NAP(MA())+1))))

 

Üdv: Sznido

Előzmény: SQLkerdes (14867)
Axi-Maxi Creative Commons License 2011.05.18 0 0 14869

 2,78075 erre az értékre 159fok 19 perc 30,86 szögmásodpercet ír

Előzmény: Sznida (14866)
Sznida Creative Commons License 2011.05.18 0 0 14868

Igazad van..., lehet ma nem kellene hozzászólnom semmihez, mert szétszórt vagyok...

 

Üdv: Sznido

Előzmény: SQLkerdes (14867)
SQLkerdes Creative Commons License 2011.05.18 0 0 14867

Szerintem ez nem jó, mert csak a hónap utolsó 20 napját összesíti.

A megoldásba be kell építeni a TODAY() függvényből vett adott napi napot és abból levonni 20-at (ha több mint 20, egyébként 1-től kezdeni az összesítést).

 

Vagy félreértettem a feladatot.

Előzmény: Sznida (14865)
Sznida Creative Commons License 2011.05.18 0 0 14866

Mi a hiba? Lehet annak a szögnek nem érvényes a tangense?

 

Üdv: Sznido

Előzmény: Axi-Maxi (14861)
Sznida Creative Commons License 2011.05.18 0 0 14865

És most talán sikerül úgy elküldenem, hogy minden jó lesz.... :(

 

 

Üdv: Sznido

Előzmény: Sznida (14864)
Sznida Creative Commons License 2011.05.18 0 0 14864

Itt a kép is!

Előzmény: Sznida (14863)
Sznida Creative Commons License 2011.05.18 0 0 14863

Szia,

 

Csatolva a kép, ahol látszik a képlet!

A képletben a "B" át kell írni az aktuális oszlop számára, amikor másolod jobbra a képletet!

 

Üdv: Sznido

 

Előzmény: Xooo (14858)
SQLkerdes Creative Commons License 2011.05.18 0 0 14862

Ez a videó megválaszolja minden kérdésedet.

A megoldás az OFFSET függvény használata, amit úgy paraméterezel be, hogy egy dinamikusan változó tartományt adjon vissza.  Az OFFSET-tel "létrehozott" tartományt elnevezed (named range) és a Chartod bemeneti adata ez a Név lesz.

Vigyázz, van egy trükk (bug) amikor a chart bemeneti adatának név hivatkozást használsz, szépen megmutatja a videóban (kell a név elé a munkalap neve).

 

Sok sikert.  Ha van kérdésed a videó után, vágd hozzánk nyugodtan.

 

Előzmény: kelan (14852)
Axi-Maxi Creative Commons License 2011.05.18 0 0 14861

És tangensnél is mennie kellene

 

=KEREK.LE(FOK(S45);0)&"° "&KEREK.LE((FOK(S45)-KEREK.LE(FOK(S45);0))*60;0)&"' "&SZÖVEG((((FOK(S45)-(KEREK.LE(FOK(S45);0)))*60)-(KEREK.LE((FOK(S45)-(KEREK.LE(FOK(S45);0)))*60;0)))*60;"0,00")&"''"

 

??

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