Just nu i M3-nätverket
Gå till innehåll
MvS

EXCEL ─ Räkna upp stegvis för varje instans

Rekommendera Poster

MvS
Postad (redigerade)

Hej!
Nu har jag slitit mitt hår i förtvivlan över ett problem som jag tycker borde vara busenkelt för Excel att klara men jag måste tänka helt fel  - det är i alla fall vad Excel tycker...
Problemet:

Har en databas på ett Excel-ark där data är importerat från en släktdatabas. Vid importen kommer alla fält och poster i lodrät formering men jag vill transponera data så att fälten kommer vågrätt för vidare export till Access. Varje post ligger alltså travad under den andra där varje fält upprepas i respektive post vilket gör en tabell på 230 poster att bli nästan 8000 rader i Excel-arket!
Vad jag vill göra:

Jag vill försöka separera posterna med primärnycklar i form av ID, ett för varje person. Så jag tänkte först i min naiva enfald att det bara går att fixa med villkorsformel, men ack vad jag bedrog mig!

1531786345_Bild1.jpg.0051366bc621b3f7dc883156a7ede880.jpg

Jag har försökt med ett "OM" villkor att få Excel att för varje återkommande "ID" paginera så att Varje "ID" räknas upp ett steg från 1, 2, 3.. osv samt att alla andra fältnamn får samma värde som respektive "ID" typ:

ID 1

FNAMN 1

ENAMN 1

ADRESS 1

TELEFON 1

ID 2

FNAMN 2

ENAMN 2

ADRESS 2

TELEFON 2

etc. men det är fullkomligt tji att få till det då det blir lätt en massa cirkelreferenser som ställer till det!

Någon på E-forum som har ett listigt knep att delge hur jag ska få till det?

 

 

 

 

 

Redigerad av MvS

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Automan
Postad (redigerade)

Markera det du vill ha ut

image.png.ca0466325f9514d61c48f502fbbbb849.png

 

Välj Copy i Excel

image.png.26dd54bb2c1939ece25bca47a9b623d4.png

 

Markera den cell du vill ha in datan i rader

Välj Paste - Transpose

image.png.a413fbe794ba65fe6381d009cf07ad8a.png

 

Nu ska du ha din data i kolumner istället för rader

 

image.png

Redigerad av Automan
Dublett av en bild

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
MvS

Tack för svar!

Vore det så enkelt... Nä, det enda som då sker är att jag får 8000 kolumner i stället för rader och det blir lika illa...

Jag vill försöka ge unika ID:n åt alla 230 posterna så att jag därifrån kan ställa upp en matris med EN uppsättning fältrubriker.
//Magnus

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
MH_

Kan du lägga in en liten tabell (röda) med hittepå-data (en liten men med ojämnheter och undantag du vill hantera).  Du kan bifoga excelfiler här på forumet (rensa bort personlig info med hjälp av: Arkiv->Info->Kontrollera fel)

 

Undringar:

Det är väl fler än en post (annars funkar Automans lösning)

Är det något slags oregelbundenhet? Eller kommer data alltid i samma ordning? Det kan inte finnas 2 telefonnummer t.ex?

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Automan
Postad (redigerade)
21 minuter sedan, skrev MvS:

Nä, det enda som då sker är att jag får 8000 kolumner i stället för rader och det blir lika illa...

Jag vill försöka ge unika ID:n åt alla 230 posterna så att jag därifrån kan ställa upp en matris med EN uppsättning fältrubriker.

Ok, prova med följande lösning förutsatt att din data ligger som i mitt exempel nedan

 

image.png.347eb6deb0a3b21b69b1faaba814e1b0.png

 

Skapa en rubrik för dina 2 kolumner

Lägg därefter till ett filter för bägge kolumnerna

Välj att visa endast ID i kolumn 1

Kopiera alla ID:n i kolumn 2 och lägg dem i din kolumn för ID

Upprepa detta för FNAMN, ENAMN, ADRESS, TELEFON.

 

image.png.21e36c32dd3400e62e67b45d6dc63740.png

 

Det blir en del manuellt arbete, men då du bara behöver upprepa detta 5 gånger för att få ditt resultat kanske det duger som lösning.

 

 

 

 

Redigerad av Automan
Förtydligande om kopiering

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
MH_

Jag vet fortfarande inte hur dina data ser ut.

Men om cellen börjar med texten "ID" varje gång en ny person dyker upp OCH det alltid finns lika många poster på varje gubbe så kan du testa någonting i den här stilen (i cell C2).

=OM(VÄNSTER($A2;1)<>"ID";"";FÖRSKJUTNING($A2;KOLUMN(C2)-KOLUMN($C:$C);0))

Kopiera ett lämpligt antal celler åt höger och hela vägen ned till rad 8000. Nu borde du få ut data radvis på "ID" raderna.

Kopiera och klistra in som text någonstans och sortera.

 

MEN. Det är ganska orealistiska förutsättningar. En GED-com fil är exempelvis inte alls så regelbunden. Den gräver VBA eller ett m-script.

/M

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
MH_

Nu lekte jag lite med en GED-com fil

cell C2

=OM(ÄRFEL(SÖK("@ INDI";$A2));"";$A2)

cell D2

=OM(C2="";"";OM(PASSA("*"&D$1&"*";$A3:$A$8000;0)<PASSA("*@ INDI*";$A3:$A$8000;0);INDEX($A3:$A$8000;PASSA("*"&D$1&"*";$A3:$A$8000;0));" "))

Kopiera högerut och kopiera ner formelraden

 

Den kollar alltså efter "@ INDI" för att bestämma startrad.

Sen tittar den efter texten i rubriken (rad1) och returnerar nästa förekomst före nästa "@ INDI"

 

Ähh, lek med det.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
MvS
Postad (redigerade)
16 timmar sedan, skrev MH_:

Nu lekte jag lite med en GED-com fil

cell C2

=OM(ÄRFEL(SÖK("@ INDI";$A2));"";$A2)

cell D2

=OM(C2="";"";OM(PASSA("*"&D$1&"*";$A3:$A$8000;0)<PASSA("*@ INDI*";$A3:$A$8000;0);INDEX($A3:$A$8000;PASSA("*"&D$1&"*";$A3:$A$8000;0));" "))

Kopiera högerut och kopiera ner formelraden

 

Den kollar alltså efter "@ INDI" för att bestämma startrad.

Sen tittar den efter texten i rubriken (rad1) och returnerar nästa förekomst före nästa "@ INDI"

 

Ähh, lek med det.

Hej!
Stort tack för ditt engagemang ─ Det var precis i de här banorna jag också tänkte! Bilden jag bifogade tidigare var schematisk (för att jag ville se principen bakom en kodning) och när jag försöker omsätta din kod med de skarpa referenserna verkar det inte funka, sannolikt för att jag satt dessa fel...

Jag bifogar ett "tvättat" utdrag från originalfilen med 5 poster så att du kan se strukturen i GEDCOM-filen, och om du har tid & lust är jag dig tacksam om du kan titta på den och ge förslag på åtgärd.

 

mvh

//Magnus

 

P.S

För att förtydliga:
Jag vill alltså skapa ID:n som vidhäftas respektive post i.e. skapa primärnyckel för varje person i databasen!

Ds

 

Bok1.xlsx

Redigerad av MvS

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
MvS
2 timmar sedan, skrev MvS:

Hej!
Stort tack för ditt engagemang ─ Det var precis i de här banorna jag också tänkte! Bilden jag bifogade tidigare var schematisk (för att jag ville se principen bakom en kodning) och när jag försöker omsätta din kod med de skarpa referenserna verkar det inte funka, sannolikt för att jag satt dessa fel...

Jag bifogar ett "tvättat" utdrag från originalfilen med 5 poster så att du kan se strukturen i GEDCOM-filen, och om du har tid & lust är jag dig tacksam om du kan titta på den och ge förslag på åtgärd.

 

mvh

//Magnus

 

P.S

För att förtydliga:
Jag vill alltså skapa ID:n som vidhäftas respektive post i.e. skapa primärnyckel för varje person i databasen!

Ds

 

Bok1.xlsx 13 kB · 3 downloads

Jag hittade nu formeln för att plocka ut ID:
=OM([@DATA]="INDI";EXTEXT([@KAT];LÄNGD([@KAT])-1;1);"")

Det returnerar aktuellt post # men bara i de instanser där "INDI" förekommer. Lekte med idén att i OM-satsens "annars" (dvs längst till höger i strängen) hitta en relativ referens till föregående (ovanstående) cell om strängen returnerar "Falskt" men hittills gått bet!

Alltså, jag vill att formeln ger, om villkoret inte uppfylls, värdet från den relativa cellen ovanför (som inte är rubrikcell) . Kan det ordnas med t ex INDIREKT i någon elegant kombination?
//Magnus

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
MH_
Postad (redigerade)

Kolla bifogad fil för inspiration. Jag har lekt med din fil.

Det förekommer en del funktioner som kräver nyaste excel 365, men det är inte nödvändigt. 

 

ED

och filnamnet skulle naturligtvis vara "till Wide". Men vem bryr sig (mer än jag då..)

Ged_Till_Short_format.xlsx

Redigerad av MH_

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
MvS

Briljant! 

Du fick till det med flersiffrigt ID också (det grejade inte jag)!
Där ser man ─ Det behövdes alltså inga jätteoperationer för att greja detta, det var väl det jag kände... Less is more! (Den Ockhams:ka Rakkniven är fortfarande giltig!)*

👍👍👍

Stort tack för dina inputs!

//Magnus

 

* Läs mer om Ockhams Rakkniv här >>>

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...