Telefonszámunk: 1-472-0679

[Resolved] Tördelt sorok száma egyesített cellában

Kezdőlap Fórumok Excel témák [Resolved] Tördelt sorok száma egyesített cellában

Topic Resolution: Resolved
16 bejegyzés megtekintése - 1-16 / 16
  • Szerző
    Bejegyzés
  • #9922
    Adri0324
    Felhasználó

      Az lenne a kérdésem, létezik e valamilyen módszer arra, hogy megszámoljuk egy összevont cellában hány sor adat található? Van egy adatlapunk, aminek az egyik cellájában sok adatot kell tárolni, de mivel összevont cella, a sortörés után sem állítja be a sor magasságát. Valamilyen egyszerű módszerrel meg kéne számolnom, hogy hány sor lett.

      #9923
      eNFeri
      Felhasználó

        Szia
        Szerintem a legegyszerűbb módszer, hogy a sortöréseket megszámolni, és hozzáadni 1-et. A sortörés karaktere hexadecimálisan „0A”. Ha ezt meg lehetne számolni, akkor hozzáadni egyet, és kész is.
        Nem tudom, hogy ezt hogyan lehet megszámolni, tehát amit találtam megoldásnak:
        másolatot csinálsz a cellából, és kitörölsz minden látható és nem látható karaktert (betűk, számok, írásjelek, space, stb). Utána csak a sortörés karakter marad benne, amit a „=hossz” függvénnyel meg lehet számolni. Az összes karaktert meg a reguláris kifejezéssel lehet egyszerre kitörölni (keresés és csere) „|” karakter segítségével így:
        a|b|c| |A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|0|1|2|3|4|5|6|7|8|9|!|,|:|.|;

        #9924
        Adri0324
        Felhasználó

          Szia.

          Köszi szépen, ez nagyon jó, valószínűleg meg is oldja a problémánkat, de a csere azon a módon nem működik, ahogy írtad. Ha beírjuk a karaktereket „|” karakterrel ahogy a példában írtad, hibaüzenetet küld. Egyesével megcsinálta, működik is. de ez nem sikerül, hogy az összes karaktert cseréljük. Erre van ötleted? Azt írja, hogy nem található cserélendő adat. Néha pedig azt, hogy nem találjuk amit keres.
          Köszönöm a segítséget.

          #9925
          verax
          Felhasználó

            Szia Adri0324!

            …enFeri alapötletéből elindulva…
            A sortörés karaktere a nem nyomtatható karakterek közé tartozik. A nem nyomtatható karakterek eltávolítására létezik egy függvény. Tisztít()
            Ha nincs a cellában más nem nyomtatható karakter(a szóköz nem számít annak), akkor ezzel a képlettel megszámlálhatod a sortöréseket: =Hossz(szöveg)-Hossz(Tisztít(szöveg))

            üdvözlettel
            verax

            • A hozzászólás módosításra került: 10 months, 3 weeks telt el-verax.
            #9927
            Adri0324
            Felhasználó

              Sziasztok!

              eNFeri és verax! nagyon köszönöm!
              A kettőtök válasza együtt a tökéletes megoldás.
              eNFeri köszi, így már meg tudjuk számolni a sortöréseket, és verax köszi, így el tudjuk távolítani a többi karaktert.
              Szóval a kettő együtt működik. Még egyszer köszi. 🙂

              Üdv! Adri

              #9931
              verax
              Felhasználó

                Szívesen… azonban
                A sormagasság beállítása munkalap esemény, ezért hiába számoltatnád ki az optimális megjelenítéshez szükséges sorok számát. Ettől még nem történne semmi érdemi változás. Kódolni kell. Ha pedig kódolsz, akkor arra az esetre léteznek megoldások.
                Én játszottam egy kicsit. Nem állítom, hogy hibátlan, de legalább lehet tanulni a hibáimból. 😉

                üdvözlettel
                verax

                #9932
                verax
                Felhasználó

                  zippelve …

                  Attachments:
                  You must be logged in to view attached files.
                  #9939
                  Adri0324
                  Felhasználó

                    Kedves verax!

                    Megírtad helyettem a makrót! 🙂 Nagyon köszi. 😀 Így lehet haladni a munkával. 😀

                    Még egyszer köszönöm a sok segítséget.

                    #9940
                    Adri0324
                    Felhasználó

                      Kedves verax!

                      Segítenél még egy makró kérdésben?

                      Azt szeretném, ha a makró egy adott tábla végére beszúrna sorokat (eddig megy nekem is), de úgy, hogy egy cellában lévő szám legyen a beszúrt sorok száma. Ez a szám változni fog, a makró mindig annyit kell beszúrjon, amilyen szám van az adott cellában. ű
                      Mitől tud lefutni a makró? Az megoldható, hogy a mentéskor lefusson? Vagy ha az adott cella értéke nagyobb mint „0”? Ezt tudja folyamatosan figyelni? De ha nem, akkor jó úgy is, ha mentéskor fut le.

                      Nagyon köszönöm, ha segítesz.

                      #9942
                      verax
                      Felhasználó

                        Kedves Adri!

                        Tábla végére beszúrni sorokat? Ott eleve vannak sorok. Tudnál egy példa fájlt mellékelni? Kézzel elkészíted az előtte – utána állapotokat és akkor már látjuk, hogy mit is kellene automatizálni.
                        (Egyébként a makró rögzítés lehetőséget használva , majd a létrejött kódot elemezve sok tapasztalatot lehet szerezni.)

                        Az előre meghatározott mennyiségű sor beszúrására két lehetőség is kínálkozik. ÉS hogy mitől tud lefutni az utasítás? Kattintásra, munkalap eseményre (változásra) vagy ahogy magad is sejted, akár kilépéskor.

                        üdvözlettel
                        verax

                        #9943
                        verax
                        Felhasználó

                          Kedves Adri!

                          Tábla végére beszúrni sorokat? Ott eleve vannak sorok. Tudnál egy példa fájlt mellékelni? Kézzel elkészíted az előtte – utána állapotokat és akkor már látjuk, hogy mit is kellene automatizálni.
                          (Egyébként a makró rögzítés lehetőséget használva , majd a létrejött kódot elemezve sok tapasztalatot lehet szerezni.)
                          Táblázatként formázott adattárolásban gondolkodtál már? Azzal a megoldással egy újabb adat felvitelekor automatikusa bővül a kezelt tartomány.

                          Az előre meghatározott mennyiségű sor beszúrására két lehetőség is kínálkozik. ÉS hogy mitől tud lefutni az utasítás? Kattintásra, munkalap eseményre (változásra) vagy ahogy magad is sejted, akár kilépéskor.

                          üdvözlettel
                          verax

                          #9944
                          Adri0324
                          Felhasználó

                            Kedves Verax!
                            Mutatom a konkrét feladatot…. a csatolt táblázatban a nyers export fülbe kerülnek a programunkból kinyert adatok, ez állandóan változó hosszúságú táblázat lesz.
                            A soreltérés fülben az ID export oszlopba bekerülnek az azonosítók. Pontosan annyi, ahány sora van a nyers exportnak.
                            Az állapot fülbe szintén bekerülnek a nyers exportban lévő azonosítók. Majd az állapot fülben az ID oszlopok értékét átmásoljuk az ID érték oszlopba, mely adatok vissza kerülnek a soreltérés fül ID Állapot oszlopába. Az lenne a makró feladata, hogy a soreltérés fülön megvizsgálja a hiány oszlop végösszegét, majd az állapot fül táblázatának a végére beszúrjon annyi sort, amilyen értéket ott talált, ezután pedig az állapot oszlopból az összes értéket beillessze az ID Érték oszlopba. (tehát a képletet ne). Az lenne a legjobb, ha a makró akkor futna le, ha a soreltérés fül hiány oszlopának végösszege nagyobb, mint nulla. Remélem érthető voltam…:) Ha ez nem kivitelezhető, akkor az is jó lenne, ha minden mentéskor lefutna. Csak rövid ideje próbálkozom a makrózással, ezt még nem tudom megoldani sajnos. Nagyon megköszönném, ha segítenél.

                            Attachments:
                            You must be logged in to view attached files.
                            #9946
                            verax
                            Felhasználó

                              Kedves Adri!

                              Mellékeltem egy lehetséges megoldást. Nézegesd!

                              üdvözlettel
                              verax

                              Attachments:
                              You must be logged in to view attached files.
                              #9950
                              Adri0324
                              Felhasználó

                                Kedves Verax!

                                Szuper, nagyon köszönöm. Majdnem tökéletes, de az érték oszlopot azért kell beszúrni, hogy a soreltérés végül 0 legyen (Miután lefutott a makró.) De ezt már meg is oldottam, köszönöm. Kicsit átalakítottam ezt-azt, így már majdnem tökéletes….
                                Még egy feladat merült fel ezzel kapcsolatban… Azt hogy tudom megoldani, hogy utolsó lépésként ha az állapot fülben az ID (Érték) oszlopban talál 0-át, azt az egész sort törölje. Tehát, ha a makró lefut, de közben nem több lett a sor a nyers exportban hanem kevesebb, akkor az üres sorokat törölje az állapot fülből.

                                Üdv!

                                Adri

                                #9955
                                verax
                                Felhasználó

                                  Szia Adri

                                  Abból, amit írtál azt feltételezem, hogy az „Állapot” munkalap „D” oszlopából hiányoznak olykor az ID (érték) adatok. A „C” oszlop mindig tartalmazza a „Nyers export” munkalap „D” oszlopának PLU azonosítóit. Így tehát „C” oszlopot segítségül hívva megállapíthatjuk utolsó, még adatot tartalmazó celláját és ebből az értékből indulva egy egyszerű, de praktikusan visszafelé haladó ciklussal végig lehet lépkedni a 2. sorig. Közben pedig minden körben megvizsgáljuk az azonos (i-edik) sorban, de a „D” oszlopban lévő cella értékét. Ha ez üres vagy nulla értékű, akkor töröljük az aktuális sort. Valami ilyesféleképpen:

                                  Sub ÜresIDÉrtékSorokTörlése ()
                                  
                                    dim i, utolsóSor as Integer
                                    utolsóSor = WorksheetFunction.CountA(Range("C:C"))
                                    For i=utolsóSor to 2 step -1
                                      If Cells(i, 4)=0 Then
                                        Rows(i & ":" & i).Select
                                        Selection.Delete Shift:=xlUp
                                      End If
                                    Next i
                                  
                                  End sub

                                  Na persze, … a makró futása előtt (vagy a futás elején) gondoskodni kell arról, hogy a soron következő utasítások az „Állapot” munkalapon hajtódjanak végre. Egy ügyesen elhelyezett

                                  Worksheets("Állapot").Select

                                  parancs éppen megfelelő erre a célra.

                                  üdvözlettel
                                  verax

                                  #9960
                                  Adri0324
                                  Felhasználó

                                    Kedves Verax,

                                    nem tudok elég hálás lenni a sok segítségért.
                                    Úgy tűnik elkészült ez a feladat is. Sikerült úgy átalakítanom, hogy egy makró leköveti a nyers export minden változását és hozzá alakítja a többi munkafüzetet.
                                    Akár több adatról akár kevesebbről van szó, szépen beszúrja és törli a sorokat, másolja a cellákat. Még sokszor fogom elemezni amit küldtél, igyekszem tanulni belőle. 🙂

                                    Még egyszer nagyon köszönöm

                                    Üdv

                                    Adri

                                  16 bejegyzés megtekintése - 1-16 / 16
                                  • Be kell jelentkezni a hozzászóláshoz.