[Megoldva] Cella összevonás probléma

Táblázatkezelő

[Megoldva] Cella összevonás probléma

HozzászólásSzerző: cortech » 2019. szeptember 25., szerda 22:53

A problémámat az alábbi mintával mutatom be.

Kiinduló táblázat két oszloppal:

alma Jonathan
alma Idared
alma Gold
alma Gála
alma Starking
körte Bosc kobak
körte Vilmos
körte Clapp kedveltje
körte Piros Vilmos
körte Bohusné
cseresznye Szomolyai
cseresznye Germersdorfi óriás
cseresznye Sunbrust
cseresznye Carmen
cseresznye Bigarreau Burlat

Átalakított táblázat, szintén két oszloppal.

alma Jonathan, Idared, Gold, Gála, Starking
körte Bosc kobak, Vilmos, Clapp kedveltje, Piros Vilmos, Bohusné
cseresznye Szomolyai, Germersdorfi óriás, Sunbrust, Carmen, Bigarreau Burlat

Próbáltam már mindenhogy (Libre, Excel), de nem tudtam megoldani.
Van esetleg valakinek ötlete, hogy hogyan lehetne ezt az "összevonást" automatizálni.
Kb. 1500 sorom van, és hosszú idő lenne egyesével összevonni...
Előre is köszönök minden ötletet!
LibreOffice 6.0.7.3 az Ubuntu 18.04 LTS-en
cortech
 
Hozzászólások: 8
Csatlakozott: 2019. szeptember 25., szerda 22:37

Re: Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. szeptember 26., csütörtök 10:49

Konkrét .ods mintafájlokat töltsél fel, abból minden kiderül a tesztelő számára. Szövegesen képtelenség minden körülmény leírni, és lehet, hogy a megoldás/a probléma gyökere éppen az általad le nem írt részben van...

A fájlméret limit 128 KiB ezen a fórumon.
Az Új hozzászólás gombra kattints (ne a Gyors válasz-ra), és akkor a szerkesztőablak alatt megtalálod a fájlcsatolási lehetőséget.
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. szeptember 26., csütörtök 12:00

Átalakított táblázat, szintén két oszloppal.

Kód: Egész kijelölése   KinyitásÖsszecsukás
alma | Jonathan, Idared, Gold, Gála, Starking
körte | Bosc kobak, Vilmos, Clapp kedveltje, Piros Vilmos, Bohusné
cseresznye | Szomolyai, Germersdorfi óriás, Sunbrust, Carmen, Bigarreau Burlat


Mihez kezdesz az egyetlen cellába összegyűlő hosszú szöveggel? Azért kérdem, mert hátha a főfeladatot máshogy is meg lehet oldani...

Makróként megírt cellafüggvénnyel egyébként viszonylag könnyen összefűzhető az azonos "első oszlop-tartalommal" bíró, második oszlopbeli cellák tartalma...
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. szeptember 26., csütörtök 12:40

A mellékelt fájl tartalmazza az általam most megírt ConcatIf() függvény makrókódját. A makró futását engedélyezned kell, és előtte "Közepesre" kell állítanod a Makróbiztonságot.

ConcatIf_sample.ods
(14.12 KiB) 10 alkalommal.

De itt van külön is a kód:

Kód: Egész kijelölése   KinyitásÖsszecsukás
REM  *****  BASIC  *****
Option Explicit

Function ConcatIf(Condition as string, MyRange as Array, Separator as string)
Dim Result as string
Dim iRow as Integer


   'LoadXray
   'Xray MyRange
   Result = ""
   if NOT IsArray(MyRange) Then
      Result = "Hibás átadott tartomány"
    else
       if UBound(MyRange, 2) <> 2 then
          Result = "Nem kétoszlopos az átadott tartomány"
      else
         for iRow = LBound(MyRange, 1) To UBound(MyRange, 1)
            If MyRange(iRow, 1) = Condition then
               If Result = "" then
                  Result = Result + MyRange(iRow,2)
               else
                  Result = Result + Separator + MyRange(iRow,2)
               end if
            end if   
           next
        end if
     end If
   
ConcatIf = Result
End function


Az Xray egy objektumvizsgáló kiterjesztés. Makróíráshoz elengedhetetlen a használata, ha nem tudsz mindent fejből a kezelt objektumokról. (és lehetetlen MINDENT tudni...) A másik hasonló eszköz az MRI.
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Cella összevonás probléma

HozzászólásSzerző: cortech » 2019. szeptember 26., csütörtök 15:53

Köszönöm, hogy ilyen gyorsan segítségem akadt! :super:

Kipróbáltam a küldött mintát, de ezt a hibát kaptam: "Hiba történt a BASIC-program futattása közben. A változó nincs definiálva."

ConcatIf-el próbálkoztam én is régebben, de beletört a bicskám. :(

Feltöltöttem egy minta ods-t, hogy mit szeretnék elérni.
A problémát nem definiáltam pontosan, elnézést érte. A lényeget a mellékelt ods mutatja.
A 5-ös csoportokban van 1-1 önálló rekord véletlenszerűen, amit meg szeretnék tartani.

Nagyon köszönöm mégegyszer előre is, nagyon sokat segítene!
Csatolmányok
gyumolcslista2.ods
(11.32 KiB) 10 alkalommal.
LibreOffice 6.0.7.3 az Ubuntu 18.04 LTS-en
cortech
 
Hozzászólások: 8
Csatlakozott: 2019. szeptember 25., szerda 22:37

Re: Cella összevonás probléma

HozzászólásSzerző: cortech » 2019. szeptember 26., csütörtök 16:33

Közben megnéztem a kapott makrót.
Ezt dobja:
Kód: Egész kijelölése   KinyitásÖsszecsukás
REM  *****  BASIC  *****
Option Explicit

Function ConcatIf(Condition as string, MyRange as Array, Separator as string)
Dim Result as string
Dim iRow as Integer


   LoadXray
   'Xray MyRange
   Result = ""
   if NOT IsArray(MyRange) Then
      Result = "Hibás átadott tartomány"
    else
       if UBound(MyRange, 2) <> 2 then
          Result = "Nem kétoszlopos az átadott tartomány"
      else
         for iRow = LBound(MyRange, 1) To UBound(MyRange, 1)
            If MyRange(iRow, 1) = Condition then
               If Result = "" then
                  Result = Result + MyRange(iRow,2)
               else
                  Result = Result + Separator + MyRange(iRow,2)
               end if
            end if   
           next
        end if
     end If
   
ConcatIf = Result
End function]
LibreOffice 6.0.7.3 az Ubuntu 18.04 LTS-en
cortech
 
Hozzászólások: 8
Csatlakozott: 2019. szeptember 25., szerda 22:37

Re: Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. szeptember 26., csütörtök 16:37

Töröld, vagy rem-eld ki az Xray-ra vonatkozó sorokat (a betöltést és a vizsgálatot):

LoadXray
'Xray MyRange

mert nálad - gondolom - még nincs feltelepítve ez a nagyon hasznos eszköz, így hiába próbálom meg betölteni és használni. (Benne felejtettem a kódban.) Ráadásul a LoadXray is egy saját szubrutin neve, ami nem a mellékelt fájlban van benne, hanem nálam a Saját makrók Standard könyvtárában...
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. szeptember 26., csütörtök 16:44

Az új mintádban nincsenek elválasztó karakterek a kigyűjtött neveknél, pedig vannak több szóból álló nevű fajták. Ez így nem zavaró?
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. szeptember 26., csütörtök 16:55

Tábla1: névvel rendelkező tartomány (sárgával jelölve: ezt bátran bővítheted a táblán BELÜLI sor beszúrásával)
Navigátor: Range names/Tartománynév
Ekkor nem kell folyton átírnod a másik lap képleteiben a tartomány hivatkozás koordinátáit, ha bővíted a tartományt, mert mindig a tartomány neve fog benne szerepelni...

gyumolcslista2_KT.ods
(17.26 KiB) 12 alkalommal.
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Cella összevonás probléma

HozzászólásSzerző: cortech » 2019. szeptember 26., csütörtök 17:02

Felraktam az Xray-r is és az MRI-t is.
Kivettem amit ki kell és működik!, de ....
Mellékelek egy újabb ods-t, most nevekkel. Az ötös csoportok véletlenül jönnek, nincs benne rendszer. A sorszám viszont folyamatosan emelkedik, csak ahol öt név van, ott ötször van sorszám. Én egy sorszámhoz szeretném az embereket rakni. Valmikor 10-30 sor után jön egy-egy ötös csoport, amikor mindenkinek ugyanaz az a száma. :crazy:
Csatolmányok
neveklista.ods
(11.97 KiB) 9 alkalommal.
LibreOffice 6.0.7.3 az Ubuntu 18.04 LTS-en
cortech
 
Hozzászólások: 8
Csatlakozott: 2019. szeptember 25., szerda 22:37

Re: Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. szeptember 26., csütörtök 17:12

Az utóbbi fájloddal pont ugyanúgy működik a makró.

Ha bővül a számsor, csak húzd lentebb az utolsó sort a kigyűjtött tartományban.

Vagy te a számok kigyűjtését is automatizálni akarod?
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Cella összevonás probléma

HozzászólásSzerző: cortech » 2019. szeptember 26., csütörtök 17:27

Nagyon köszönöm ezt is, de még mindig nem kerek :-|, elnézést a sok fakszniért...
A számokat is szeretném automatikusan kigyűjteni, de úgy, hogy adott számhoz csak az adott öt név kerüljön, tehát vagy 1 szám 1 név, vagy 1 szám 5 név.
Tehát nem az a cél, hogy egy adott számhoz gyűljenek a nevek korlátlanul.
LibreOffice 6.0.7.3 az Ubuntu 18.04 LTS-en
cortech
 
Hozzászólások: 8
Csatlakozott: 2019. szeptember 25., szerda 22:37

Re: Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. szeptember 26., csütörtök 17:59

Tehát ha egy 5-ös számcsoport után más szám jön, akkor ha a későbbiekben megint előfordul az előző szám, akkor azt külön sorba kell gyűjteni???
Ez azért nem ugyanaz a feladat!

- Egyrészt figyelni kell a következő sorban lévő szám tartalmú cellát, és ha az ugyanolyan tartalmú, mint az aktuális sorban lévő, akkor tovább kell lépni, ha nem, akkor ki kell ugrani a ciklusból.
- Másrészt akkor a két külön csoportban előforduló azonos számot meg kell valahogyan különböztetni...

De az előbbit már neked is meg kell tudnod valósítani.
Minden makrót nem fog valaki helyetted megírni.

Az utóbbit én se tudom, hogy hogyan lehetne hatékonyan megcsinálni. Lehet, hogy akkor mégse névvel rendelkező (teljesen abszolút módon megadott) tartomány kell neked, hanem dinamikusan változó kezdő koordinátájú tartomány...
Vagy valószínűleg kell egy segédoszlop és egy segédfüggvény, ami a két azonos számot/számcsoportot megkülönbözteti egymástól, és aminek az eredményét aztán a főfüggvény paramétereként használhatod.
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Cella összevonás probléma

HozzászólásSzerző: cortech » 2019. szeptember 26., csütörtök 20:24

A számsor növekszik és nem fordul elő újra.
Egyszerűen csak valamikor adott számhoz egy ember tartozik, máskor meg véletlenszerűen öt ember tartozik ugyanahoz a számhoz és ez öt sorban van.
Őket szeretném összerántani egy cellába szóközzel vagy vesszővel.

Igyekszem a dolgot magam is kalapálni, pont emiatt is fordultam ide, hogy kapjak ötleteket. :-)
Ha van valami ötleted, akkor szívesen veszem továbbra is, és az eddigieket is nagyon köszönöm Neked!
LibreOffice 6.0.7.3 az Ubuntu 18.04 LTS-en
cortech
 
Hozzászólások: 8
Csatlakozott: 2019. szeptember 25., szerda 22:37

Re: Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. szeptember 26., csütörtök 20:53

A számsor növekszik és nem fordul elő újra.
Egyszerűen csak valamikor adott számhoz egy ember tartozik, máskor meg véletlenszerűen öt ember tartozik ugyanahoz a számhoz és ez öt sorban van.
Őket szeretném összerántani egy cellába szóközzel vagy vesszővel.

De hát a makróm pont ezt csinálja: Minden egyedi számhoz odarakja az összes nevet, amelyek az azonos számok mellett vannak. Vagy nálad nem így működik??
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Cella összevonás probléma

HozzászólásSzerző: cortech » 2019. szeptember 26., csütörtök 21:42

A feladatot megoldottad!
Az azonos elnevezések ismétlése megzavart. Átírtam számokra, így egyértelműen látszik, hogy működik.
Nagyon szépen köszönöm a segítséged!

Közben Google Docsban is lett egy másik megoldás. Ha fixen megvan, holnap felrakom ide.
Mégegyszer köszönöm szépen!!!
LibreOffice 6.0.7.3 az Ubuntu 18.04 LTS-en
cortech
 
Hozzászólások: 8
Csatlakozott: 2019. szeptember 25., szerda 22:37

Re: Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. szeptember 27., péntek 7:08

OK. Kíváncsi vagyok a másik megoldásra.
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: [Megoldva] Cella összevonás probléma

HozzászólásSzerző: cortech » 2019. október 4., péntek 16:18

A Google Docs megoldást alkalmaztam végül.

A tiéd "csak" összerántotta a mezőket, de nem csinálta az ötös ismétlődéseknél az összerántást.
A Google Docsban két oszlopban ment a dolog.

Első oszlopban: sorszámok
Második oszlop: nevek
Harmadik oszlop képlet: =JOIN(", ";QUERY(A:B;"select B where A=" & A:A;FALSE))
Negyedik oszlop képlet: =ARRAYFORMULA(UNIQUE(A:A&", "&C:C))

Ez szépen ahol kellett összerántotta az 5-ös ismétlődéseket, de előtte egy cellába rakott mindent.

Mégegyszer k ö sz ö n ö m a segítséged! :super:
LibreOffice 6.0.7.3 az Ubuntu 18.04 LTS-en
cortech
 
Hozzászólások: 8
Csatlakozott: 2019. szeptember 25., szerda 22:37

Re: [Megoldva] Cella összevonás probléma

HozzászólásSzerző: Zizi64 » 2019. október 4., péntek 17:14

A tiéd "csak" összerántotta a mezőket, de nem csinálta az ötös ismétlődéseknél az összerántást.

Akkor ezek szerint mégsem értettem meg pontosan, hogy mire volt szükséged... (és most se értem).

Tudnál egy linket csinálni egy minta-Gsheet fájlhoz és az megosztani itt (vagy privát üzenetként)?
Sok sikert!
Kovács Tibor (Win7x64Prof/W10x64prof: LO6.1.6;
winPenPack/PortableApps: LO3.3.1-6.3.1, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3468
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest


Vissza: Calc

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég

cron