Keresés

Részletes keresés

tbando Creative Commons License 2014.02.01 0 0 23955

Ráadásul nem akármelyik február 1-t, hanem 1900. febr. 1-t :)))). 

Előzmény: tbando (23954)
tbando Creative Commons License 2014.02.01 0 0 23954

Hát nem leányálom valóban. Pl. épp most jöttem rá, hogy a Neomatiknak javasolt nap() függvény használata se 100-as, mert az meg a hónapokat vágja le. Tehát a nap(32) eredménye is 1, mert a febr 1 napját jelöli :))).

Előzmény: Fferi50 (23952)
tbando Creative Commons License 2014.01.31 0 0 23953

Még annyit hozzáfűznék: Ha a szumma idő formátumát átállítod általánosra 1,279942-t fog mutatni, amiből a törtrész a 6:43:07, amihez 1*24-t kell hozzáadnod, ha órákban akarod a teljes időhosszt kifejezni. 

Előzmény: tbando (23950)
Fferi50 Creative Commons License 2014.01.31 0 0 23952

Szia!

 

Ó, ez kiváló!

 

(De azért időadatokkal számolni akkor sem leányálom szerintem.)

 

Üdv.

Előzmény: tbando (23950)
Fferi50 Creative Commons License 2014.01.31 0 0 23951

Szia!

 

Az idő és dátum adatok nagyon ravaszul viselkednek az excelben. Ami a legfontosabb:

Az excel ezeket is számként tárolja és számként számol velük, a következők szerint:

A szám egész része jelenti a dátumot, a törtrésze pedig az időt. Ezért a megformázott idővel különösen nehéz bánni, célszerű a számolások idejére átalakítani számmá:

1 nap=24 óra =1, tehát 12 óra=0,5 , 3 óra 20 perc (=3*60+20)/24

 

Ezután már minden összeadás "normális számként" múködik. Utána pedig megformázhatod időnek.

Nekem legalábbis így sikerült használható és jó  időadatokat kapni.

 

(De az időformátumból közvetlenül számított értékekben soha nem bízok meg, az sajnos az excel "jóindulatától" függ, mennyire stimmel.) Na jó, biztos van erre valami más szabály is, de arra még nem jöttem rá.

 

Üdv.

Előzmény: NeomatiK (23949)
tbando Creative Commons License 2014.01.31 0 0 23950

Nem rontottál el semmit. Nem kell csinálnod semmit. Csak engedni, hogy az excel [ó]:pp:mp formátumban közölje az eredményt. Vagy ha nem abban adja, átállítod manuálisan.  Az ó:pp:mp formátum ugyanis csak az utolsó (töredék) nap óra-perc-mp-t mutatja. Tehát ennél a formátumnál a nap() függvény is kell a korrekt időhosszhoz.

Előzmény: NeomatiK (23949)
NeomatiK Creative Commons License 2014.01.31 0 0 23949

Vannak a D oszloban időtartamok kb 350db (minden sorban egy), ó:pp:mm formátum a cella.

 

Ha összeadom őket és ennek a formátum megegyezik, akkor hülyeség jön ki. Viszont ha [ó]:pp:mm lesz, akkor jól jön ki.

 

ó:pp:mm formátummal az oszlop összege 6:43:07

[ó]:pp:mm formátummal az oszlop összege 30:43:07 - ez a jó.

 

Ha ezt a lentit akarom átszámolni percekre, akkor (1-es sor az összeadás eredményének sora)

=(ÓRA(D1))*60+PERC(D1)+(MPERC(D1)/60) eredménye 403:7

ahelyett, hogy 30*60+43 lenne a percek helyén, azaz 1843.

 

Mit rontottam el?

Fferi50 Creative Commons License 2014.01.31 0 0 23948

Szia!

 

Sajnos a cellának nincs görgetési lehetősége.

A legegyszerűbb megoldás a sor magasságának állítása:  range("A1").rows.autofit /vagy a menüben kezdőlap-formátum-automatikus sormagasság. Persze ekkor az egész cellatartalmat látod.

 

Üdv.

 

Előzmény: NeomatiK (23947)
NeomatiK Creative Commons License 2014.01.31 0 0 23947

Szia!

 

Köszi, hogy ennyit dolgoztál vele. Azt hittem, van ennél egyszerűbb megoldás, a beállítások terén vagy valami ilyesmi :) Őszinte leszek: nagyobb az esélye, hogy ezt a makrót nem fogom alkalmazni, mint az, hogy fogom alkalmazni.

Előzmény: Fferi50 (23946)
Fferi50 Creative Commons License 2014.01.31 0 0 23946

Szia!

 

Ezt találtam ki:

 

Ha a cellából enterrel kilépsz, az utolsó 5 sort látod. Ha visszalépsz a cellára, akkor az elejétől látsz 5 sort. Most a FONTOS! Ha visszaléptél a cellára, F2 és utána enterrel lépj ki, akkor ismét az utolsó 5 sort fogod látni (ha nem így teszel, marad az első 5 sor). Ha alt+entert hagytál üresen a végén, azt levágja a makró.

 

Private Sub Worksheet_Change(ByVal Target As Range)
mutat Target
End Sub

 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
vmutat Target
End Sub

 

Function mutat(ByRef cl As Range)
Dim aml() As String, xx As Integer, yy As Integer
If Not IsEmpty(cl) Then
   Application.EnableEvents = False
   If Right(cl.Value, 1) = vbLf Then cl.Value = Left(cl.Value, Len(cl.Value) - 1)

   aml = Split(cl.Value, vbLf)
   yy = UBound(aml)
   If yy > 4 Then
      cl.Value = ""
      For xx = yy - 4 To yy
         cl.Value = cl.Value & aml(xx) & vbLf
      Next
      For xx = 0 To yy - 5
         cl.Value = cl.Value & aml(xx) & IIf(xx <> yy - 5, vbLf, "")
      Next
      cl.Value = cl.Value & "FORD"
   End If
   Application.EnableEvents = True
End If
End Function

Function vmutat(ByRef cl As Range)
Dim aml() As String, xx As Integer, yy As Integer
If Not IsEmpty(cl) Then
 If Right(cl.Value, 4) = "FORD" Then
   Application.EnableEvents = False
   cl.Value = Left(cl.Value, Len(cl.Value) - 4)
   aml = Split(cl.Value, vbLf)
   yy = UBound(aml)
   If yy > 4 Then
      cl.Value = ""
      For xx = 5 To yy
         cl.Value = cl.Value & aml(xx) & vbLf
      Next
      For xx = 0 To 4
         cl.Value = cl.Value & aml(xx) & IIf(xx <> 4, vbLf, "")
      Next
   End If
   Application.EnableEvents = True
 End If
End If
End Function

 

Előzmény: NeomatiK (23944)
Törölt nick Creative Commons License 2014.01.31 0 0 23945

Üdv. Rég láttalak.

Előzmény: Törölt nick (23942)
NeomatiK Creative Commons License 2014.01.31 0 0 23944

Hello!

Van egy cella, alt+enterrel több sor van benne. Kb 5 sor fér el láthatóan egymás alatt a cellában, mert ekkora a sormagasság. Ha 5-nél több sor van, akkor nem látszik ez a többi.

A cella aljába írok amint írnom kell valamit bele, azaz a legalsó sor az aktuális, ez a legfrissebb. De az igazításnál nem sikerült úgy beállítanom, hogy ez az alsó látszódjon mindig és felfelé "csorduljon". Van ilyenre megoldás?

 

Jelen helyzet:

 

-------------------- cella felső szegélye

1.sor

2.sor

3.sor

4.sor

5.sor

------------------- cella alsó szegélye

6.sor (nem látszik)

7.sor (nem látszik)

8.sor (nem látszik)

 

 

Kívánt helyzet:

 

 

1.sor (nem látszik)

2.sor (nem látszik)

3.sor (nem látszik)

-------------------- cella felső szegélye

4.sor

5.sor

6.sor

7.sor

8.sor

------------------- cella alsó szegélye 

Fferi50 Creative Commons License 2014.01.31 0 0 23943

Szia!

 

Az összesített adatokat megjelenítő adatsornak válassz egy másik diagramtípust, pl. vonaldiagramot.

Ez úgy mehet, hogy

  • hozzáadod az összesített adatokat
  • kijelölöd ezt az adatsort
  • jobb egérgomb - diagram típusának megváltoztatása
  • kiválasztod a vonaldiagramot és bejelölöd, hogy csak erre az adatsorra
  • ok

Az adatsor vonalszínét, jelölőjét az adatsort kijelölve változtathatod.

 

Én úgy szoktam, hogy nincs vonal, nincs jelölő, csak a pontok cimkéje van az adatpont felett beállítással.

 

Üdv.

 

 

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

Sziasztok!

 

Az szeretném megkérdezni, hogyan lehet halmozott oszlop diagramnál az oszlopok szumma értékeit is beilleszteni, ill. megjeleníteni?

 

Fferi50 Creative Commons License 2014.01.30 0 0 23941

Szia!

 

Viszont a dim ho() as string az már működik. Ezért gondolom, hogy bug.

 

Üdv.

Előzmény: tbando (23940)
tbando Creative Commons License 2014.01.30 0 0 23940

Azért az valahol nem normális, hogy míg a split-re a Dim ho as Variant-ot képessé lehet tenni addig a Dim ho() as Variant-tal ez nem megy.  Én legalábbis hiába próbálkoztam. 

Előzmény: Fferi50 (23937)
tbando Creative Commons License 2014.01.30 0 0 23939

:)))))

 

Sőt! A ho = Replace("Valami", "m", "k")  helyett elég ho="valami".  Tehát az értékadás beállítja a $változótípust, amire a split nem képes valamiért. Lehet hogy bug. Viszont képes valami nagyon meglepőre. Ami szintén meghökkentett.  A makródban sima változóként definiált  ho-t, képes tömbbé alakítani. Amit aztán egy újabb értékadás visszalakít változóvá J)))) 

 

Sub bont()
Dim ho As Variant
ho = "valami"
Debug.Print ho
ho = Split("jan-feb-marc-apr-maj-jun-jul-aug-szept-okt-nov-dec", "-")
Debug.Print ho(11)
''Debug.Print ho ENNÉL KIAKAD
ho = "tbando"
Debug.Print ho
End Sub

Előzmény: Fferi50 (23937)
BraunBela Creative Commons License 2014.01.30 0 0 23938

Köszönöm, neked is és tbandonak is, hogy foglalkoztatok a problémával!

Most nem tudom kipróbálni, mert nincs itthon a gépem. Majd holnap.

Előzmény: Törölt nick (23935)
Fferi50 Creative Commons License 2014.01.30 0 0 23937

Szia!

Akkor most lehet lehidalni:

A következő kis makró működik:

 

Sub bont()
Dim ho As Variant
ho = Replace("Valami", "m", "k")
Debug.Print ho
ho = 12
Debug.Print ho
ho = Split("jan-feb-marc-apr-maj-jun-jul-aug-szept-okt-nov-dec", "-")
Debug.Print UBound(ho)
End Sub

 

Itt már nem kényes arra a split, hogy a ho változó variantnak van definiálva!

 

Lehet hogy csak egy bug szemétkedik???

 

Üdv.

 

 

 

Előzmény: tbando (23936)
tbando Creative Commons License 2014.01.30 0 0 23936

Kösz. Az első kérdésemmel kapcsolatban azonban van még egy kis hiányérzetem.  Miért nem jó a variant? Én abban a hiszemben voltam/vagyok, hogy a variant bármelyik változótípus helyett használható. Ezek szerint nem minden esetben. Tudsz még eseteket amikor nem? 

Előzmény: Fferi50 (23932)
Törölt nick Creative Commons License 2014.01.30 0 0 23935

Próbáld ki ezt:

 

Sub pamparam()
    Dim Sh As Object, bat As String, RC As Long
    Dim FilePath As String, rng As Range, ws1 As Worksheet, ws2 As Worksheet
    
    Set Sh = CreateObject("WScript.Shell")
    bat = "E:\valami.bat"
    RC = Sh.Run(bat, 1, True)
    
    Set ws1 = ActiveSheet
    FilePath = "E:\ez a textfájl készült.txt"
    Workbooks.OpenText FilePath, xlWindows, , xlFixedWidth
    Set ws2 = ActiveSheet
    Set rng = ws2.Range("A1").Resize(ws2.UsedRange.Rows.Count)
    rng.Offset(, 1).Formula = "=RIGHT(A1,8)"
    rng.Offset(, 1).Copy
    ws1.Range("A1").PasteSpecial xlPasteValues
    
    ThisWorkbook.Names.Add Name:="tabla", RefersTo:=ws1.Range("A1").Resize(rng.Rows.Count)
    ws2.Parent.Close SaveChanges:=False
End Sub

Én a favágós Opentext módszert használtam a szövegfájl magnyitására. Alternatively, használhatod a tbando által közreadott QueryTables módszert, nekem azzal csak az a bajom, hogy nem ismer(t)em, és nem áll rá a kezem.

Előzmény: BraunBela (23924)
Törölt nick Creative Commons License 2014.01.30 0 0 23934

Ez viszont nem jó:

 

Dim ho() As Variant 

ho = Split("Jan-feb-mar-apr-may-june-july-Aug-sept-oct-nov-dec", "-")

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

Dim ho As Variant 

ho = Split("Jan-feb-mar-apr-may-june-july-Aug-sept-oct-nov-dec", "-")

Hm..?

Előzmény: tbando (23931)
Fferi50 Creative Commons License 2014.01.30 0 0 23932

Szia!

 

1. A split eredménye string tömb.

 

2.Akkor érvényesül a compare, ha a delimiter nem különleges karakter, hanem pl. egy betű. Próbáld ki pl. a példát úgy, hogy a delimiter - helyett felváltva x és X.

A compare állásától függően más-más darabra bontja a szöveget.

 

Üdv.

Előzmény: tbando (23931)
tbando Creative Commons License 2014.01.30 0 0 23931

Jimmy jóvoltából ismerem a split  vba függvényt. Ezt a példát tette fel, ami hónap neveket írja be  a ho()-tömbbe:

 

ho = Split("Jan-feb-mar-apr-may-june-july-Aug-sept-oct-nov-dec", "-")

 

Két kérdésem lenne  a függvénnyel kapcsolatban:

  1. A ho()-tömböt miért kell explicit stringként definiálni. Miért nem jó neki a variant?
  2. A függvény  compare paraméterével kiválasztott  hasonlítás mit hasonlít mivel? 
Előzmény: tbando (23930)
tbando Creative Commons License 2014.01.30 0 0 23930

A backslashek természetesen nálam is megzabálódtak. Tehát remélhetőleg helyesen:

 

"TEXT;C:\Users\tbando\Documents\" & filenev, Destination:=Range("$a$1")) _  stb 

Előzmény: tbando (23929)
tbando Creative Commons License 2014.01.30 0 0 23929

Azt nem tudom, hogy az excelből, hogyan lehet bat filet futtatni. De ha már megvan txt file, akkor a vágólapos becopyzása már kiválható  a txt file megnyításával. Excel 2007-ben: Adatok/Külső adatok átvétele/Szövegből/file . A 2003-ban is hasonlóan: Adatok/Külső adatok importálás/Adatforrás/file. A többit tudod.  Majd a végén töröld az adatokat.  Ha folyamat elkezdésekor bekapcsolod a makrórögzítőt kész is a nyers makród, amin nem sokat kell már csiszálni. Ahogy saccolom  csak a szövegfile nevének a specifikását kell megoldani és az adattörlést a makró elejére helyezni.  A szövegfile specifikálst valahogy így csinálnám:  Egy cellába mondjuk a H1-be beírnám a szövegfile nevét(xxxx.txt), majd  a beolvasó makróban ennyi változtatást:

 

With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:UserstbandoDocumentsxxxx.txt", Destination:=Range("$a$1")) _  stb  

 

helyett:

 

filenev:Range("h1")

With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:UserstbandoDocuments" & filenev, Destination:=Range("$a$1")) _  stb 

 

Előzmény: BraunBela (23924)
NeomatiK Creative Commons License 2014.01.30 0 0 23928

Köszönöm, működik!

 

Most, hogy leírtad a megoldást, bevillant, hogy mintha már kérdeztem volna hasonló problémáról. De nem kizárt, hogy megint ki fog menni a fejemből a megoldás :)

Előzmény: Fferi50 (23927)
Fferi50 Creative Commons License 2014.01.30 0 0 23927

Szia!

 

A Ctrl+F előtt másold le/jelöld ki a kicserélni kívánt karakter részt. Ha másoltad, akkor ESC utána.

Megnyitod a Ctrl+F-el a panelt. Itt vagy már ott van amit cserélni kívánsz, ha nincs akkor töröld ami benne van és utána Ctrl+V-vel másold be.

Szerintem így már meg fogja találni.

 

Az oka: az € és a 0 között nem space van, vagy nem egy space van.

 

Üdv.

Előzmény: NeomatiK (23926)
NeomatiK Creative Commons License 2014.01.30 0 0 23926

Még anynit hozzá, hogy a cella "általános".

Előzmény: NeomatiK (23925)

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