Indlæg

,

Diagrammer og VBA-koder styrer slægtsdata

Diagrammer og VBA-koder styrer slægtsdata

Lav diagrammer med ChatGPT

Diagrammer og VBA-koder styrer slægtsdata

Advarsel: Denne artikel er endog meget “nørdet”.

Jeg rydder stadig op i slægtsdata – og jeg er stadig fascineret af ChatGPT. I går blev jeg opmærksom på, at der findes mange gratis tilføjelsesprogrammer (plug-ins) til ChatGPT, og jeg installerede “Diagrams: Show Me”.

Lige nu har jeg den betalte version af ChatGPT, dvs. version 4. Om tilføjelsesprogrammerne også findes til ChatGPT version 3.5, er jeg ikke klar over.

For at styre oprydningen har jeg lavet en Excelfil.

Billederne i denne artikel er svære at se, med mindre du vha. CTRL + zoomer ind med din browser.

Diagrammer og VBA-koder styrer slægtsdata

Og for at finde på en både sjov og nyttig anvendelse af “Diagrams: Show Me”, besluttede jeg at bede ChatGPT lave et diagram over den samlede proces fra data i Legacy til markering af direkte aner i Excelfilen.

  • Måske kan du bruge nogle af ideerne og koderne?
  • Måske får du mod på selv at lege med ChatGPT?

Der er stort set intet af alt det nedenstående, jeg har lavet selv, for jeg kan ikke kode. ChatGPT har gjort det for mig, og jeg har bygget det op over et par måneder, når jeg har fået en ny idé til noget, der kunne være dejligt at få med. Læg mærke til, at ChatGPT er dygtig til at indsætte forklarende kommentarer i VBA-koden. Kommentarerne er de linjer, der starter med en “pling” – dvs. et enkelt anførselstegn: ‘

Det virkelig interessante er, at man kan skrive til ChatGPT, som var den et menneske. Man behøver ikke kende de rigtige termer, som man ville skulle, hvis man ville opbygge det ved at søge med Google. Hvis jeg var Google, ville jeg ryste i bukserne af skræk. De har lavet deres egen Artificial Intelligence-model (AI-model), som kaldes “Gemini”, men af forskellige årsager, vil det vare flere år, før den kommer til Europa. Så vidt jeg husker, skyldes det noget med “Gætte-Per” (GDPR).

Med Gemini sætter Google nu stort ind på at vippe ChatGPT, som indtil videre er førende inden for sprogmodeller, af pinden. Chatbotten, der er udviklet af firmaet Open Ai, fik på blot to måneder 100 millioner brugere, og slog dermed rekorden for flest nye brugere på kortest tid.

Kilde: dr.dk, 7. december 2023

Det får du retur

Du får et meget flot diagram og en beskrivelse af diagrammet med menneskeord.

Jeg synes, der mangler nogle trin i forhold til det, jeg bad om (se nederste afsnit “Her er hvad jeg skrev til ChatGPT”). Det skyldes formentlig, at jeg ikke har været tydelig nok i min beskrivelse. Det er jo trods alt bare en robot – og den kan ikke levere noget retur, som den ikke har fået input om. Det kan kun mennesker tænke sig til. Men det er jo nemt at øve sig i at blive mere tydelig i sin “kravspecifikation” og så simpelthen bare spørge en gang mere.

Menneskeordene følger her

sequenceDiagram
participant Legacy as “Legacy Software”
participant CSV as “CSV File (DirekteAner-2.csv)”
participant VBA as “VBA Macro (SplitNames)”
participant Excel as “Excel File (Gennemgang af slægtsfil.xlsm)”
participant Macro as “VBA Macro (MatchAndHighlight)”

Legacy->>CSV: 1) Start Legacy
Legacy->>CSV: 2) Vælg Fokusgruppe
Legacy->>CSV: 3) Søg, Forskelligt, Fokusgruppe
Legacy->>CSV: 4) Vælg ‘Aner’ i direkte linje
Legacy->>CSV: 5) Lav liste over direkte aner
Legacy->>CSV: 6) Vælg ‘Udskriv’
Legacy->>CSV: 7) Vælg ‘Kommasepareret fil’
Legacy->>CSV: 8) Klik ‘Opret’
Legacy->>CSV: 9) Gem som ‘DirekteAner-2.csv’

CSV->>VBA: Importer til Excel
VBA->>Excel: Kør ‘SplitNames’ makro
Excel->>VBA: Opdel navne i felter

VBA->>Excel: Kopier data til ‘Gennemgang af slægtsfil.xlsm’
Excel->>Macro: Placer data i kolonner B, C, D
Macro->>Excel: Kør ‘MatchAndHighlight’ makro
Excel->>Macro: Farv direkte aner gule
Macro->>Excel: Markér direkte aner med ‘Ja’

Her kommer diagrammet

Diagrammer og VBA-koder styrer slægtsdata

Her er hvad jeg skrev til ChatGPT

Jeg har fået fortalt af en ven, at det kan betale sig at “tale pænt” til robotten, så det gør jeg. Og jeg må sige, at jeg altid får pæne svar retur.

“Hej igen

Du er så dygtig til at lave diagrammer. Kan du lave et diagram over nedenstående? Jeg er i tvivl om, hvilken diagramtype, der er bedst, men jeg tror, at et procesdiagram vil være mest velegnet. Er du enig?

Diagrammet skal starte med følgende, som ikke står i VBA-koden, da det er fra et andet program, der hedder Legacy, som er et program til slægtsforskning.

1) Start Legacy
2) Vælg en “Fokusgruppe”, der rummer direkte aner
3) Det kan du gøre sådan:
3a) Søg
3b) Forskelligt
3c) Fokusgruppe
3d) Klik på knappen “Fokusgruppe” og i vinduet der, klikkes på knappen “Tilføj en person og aner”.
4) Der skal du så kun have markeret “Aner” i direkte linje (fjern eventuelle flueben nedenfor).
5) Nu har du lavet Fokusgruppen og kan klikke på knappen nederst “Lav liste”. Så har du en liste over de direkte aner
6) Vælg “Udskriv”
7) Sæt mærke i “Kommasepareret fil”
8) Klik “Opret”
9) Gem filen med navnet “DirekteAner-2.csv” (den kan selvfølgelig hedde alt muligt andet – så skal du bare selv konsekvensrette nede i makroens linje, hvor der står: Set ws = ThisWorkbook.Worksheets(“DirekteAner-2”)

Det første vi skal gøre med filen er at køre makroen “SplitNames”. Den sørger for at RIN-nr (Legacys ID-nr.), for- og mellemnavne og så efternavne står pænt i hvert sit felt, idet Legacy skriver det hele i ét felt, fx “1,Stegemüller, Hanne B.”. Det kan vi ikke bruge.
Koden er:

Option Explicit

Sub SplitNames()
Application.ScreenUpdating = True
Dim ws As Worksheet
Dim LastRow As Long
Dim i As Long
Dim ID As String
Dim FirstName As String
Dim LastName As String
Dim SplitEntry() As String
Dim Names As String

' Definer hvilket regneark du arbejder med
Set ws = ThisWorkbook.Worksheets("DirekteAner-2")

' Find sidste række med data i kolonne A
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

' Gennemgå alle rækker med data
For i = 1 To LastRow
' Først, rens cellen for anførselstegn
ws.Cells(i, "A").Value = Replace(ws.Cells(i, "A").Value, """", "")
' Split ID og navne-delen på komma
SplitEntry = Split(ws.Cells(i, "A"), ",", 2) ' Splitter kun ved det første komma

' Sørg for at der er et element at tildele til ID
If UBound(SplitEntry) >= 0 Then
ID = Trim(SplitEntry(0)) ' ID er altid til stede før det første komma
Else
ID = ""
End If

' Tjek om der er yderligere oplysninger udover ID
If UBound(SplitEntry) >= 1 Then
' Der er mere end bare et ID
Names = Trim(SplitEntry(1))
' Find sidste komma, som adskiller efternavn og fornavn
Dim LastComma As Integer
LastComma = InStrRev(Names, ",")
If LastComma > 0 Then
FirstName = Trim(Mid(Names, LastComma + 1))
LastName = Trim(Left(Names, LastComma - 1))
Else
' Hvis der ikke er et komma, antager vi at hele strengen er fornavnet
FirstName = Names
LastName = ""
End If
Else
' Hvis der ikke er yderligere information, er navnefelterne tomme
FirstName = ""
LastName = ""
End If

' Placer værdier i de ønskede celler
ws.Cells(i, "B").Value = ID
ws.Cells(i, "C").Value = FirstName
ws.Cells(i, "D").Value = LastName

' Tilføj dette for at se værdierne i det umiddelbare vindue
Debug.Print "Row: " & i & "; ID: " & ID & "; FirstName: " & FirstName & "; LastName: " & LastName
Next i

MsgBox "Navneopdeling fuldført!"
End Sub

Når navneopdelingen er fuldført, står data pænt i det rigtige felter. De skal kopieres ind i den anden fil, hvor du holder øje med, hvor langt du er nået med din gennemgang af slægtsdata. Den anden fil har jeg kaldt for “Gennemgang af slægtsfil.xlsm”. Det er vigtigt, at filen gemmes som typen .xlsm, for eller kan den ikke rumme makroen.

I “Gennemgang af slægtsfil.xlsm” skal du gøre følgende:

Placer data fra “DirekteAner-2” i kolonnerne B (ID-nummeret), C (for og mellemnavne) og D (Efternavn(e)).

I kolonne A skriver du bare ordet “Ja” foran alle navnene.

Kolonne E skal være tom for at skabe lidt overblik.
Kolonne F skal rumme Fornavn(e)
Kolonne G skal rumme Efternavn(e)
Kolonne H skal rumme RIN-nr., dvs. Legacys ID-nummer
Kolonne I skal rumme ordet “Ja”, hvis det er en direkte ane.

Er det ikke en direkte ane, skal du selv udfylde felterne F, G og H

Er det en direkte ane, skriver du ID-nummeret i kolonne H og kører makroen herunder. Den henter data fra kolonnerne A, B, C og D og farver felterne F, G, H og I gule, så det er nemt at se, at dette er en direkte ane.

Her er makroen, du skal køre – bemærk at fanen skal hedde “Ark1”.
Du kan kalde fanen noget andet, men så skal du konsekvensrette i koden, hvor der står “Set ws = ThisWorkbook.Worksheets(“Ark1″)”:

Sub MatchAndHighlight()

Dim ws As Worksheet
Dim rngToSearch As Range, rngToMatch As Range
Dim cell As Range, matchCell As Range
Dim matchFound As Boolean
Dim lastRow As Long

' Sæt arbejdsark
Set ws = ThisWorkbook.Worksheets("Ark1")

' Definer områderne for matchning
Set rngToSearch = ws.Range("H2:H" & ws.Cells(ws.Rows.Count, "H").End(xlUp).Row)
Set rngToMatch = ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row)

' Nulstil farvning og "Ja"
lastRow = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row
ws.Range("F2:I" & lastRow).Interior.Color = xlNone
ws.Range("I2:I" & lastRow).Value = ""

' Loop igennem hver celle i rngToSearch for at finde match i rngToMatch
For Each cell In rngToSearch
matchFound = False
If cell.Value <> "" Then
For Each matchCell In rngToMatch
If cell.Value = matchCell.Value Then
ws.Range("F" & cell.Row & ":I" & cell.Row).Interior.Color = vbYellow
ws.Cells(cell.Row, "I").Value = "Ja"
ws.Cells(cell.Row, "F").Value = ws.Cells(matchCell.Row, "C").Value ' Kopier fornavn
ws.Cells(cell.Row, "G").Value = ws.Cells(matchCell.Row, "D").Value ' Kopier efternavn
matchFound = True
Exit For
End If
Next matchCell

If Not matchFound Then
ws.Cells(cell.Row, "I").Value = ""
ws.Range("F" & cell.Row & ":I" & cell.Row).Interior.Color = xlNone
End If
End If
Next cell

MsgBox "Matchning fuldført!"

End Sub"

 


Har du kommentarer til artiklen?

Så er jeg glad for at modtage dem i relation til artiklen, dvs. i artiklens kommentarfelt herunder, ikke på Facebook og ikke via Messenger. Jeg svarer dig også relation til artiklen, ikke på Facebook og ikke via Messenger. Det skyldes, at kommentarer og artiklen jo ellers dekobles, og så er din kommentar ikke noget værd i fremtiden. Det er ærgerligt for os begge.

Hvis du ikke tidligere har kommenteret en af mine artikler her på siden, skal din kommentar først godkendes (spamhensyn). Min responstid er under normale omstændigheder meget kort. Herefter vil du stryge lige igennem.

, ,

Jeg rydder stadig op – det er skønt

Jeg rydder stadig op - det er skønt

Oprydning i slægtsdata

Jeg rydder stadig op – det er skønt

Billedet herunder viser fremdriften i oprydningen, som man også kunne kalde en form for hovedrengøring. De gule rækker er direkte aner. LICHT’erne stammer fra min biologiske mormors side.

Jeg skal bare indtaste RIN-nr. (et ID fra Legacy), hvis der er tale om en direkte ane, og trykke på det lille orange ikon i Excel, så hentes fornavn(e), efternavne og kolonnen dir.anes tekst “Ja” fra en anden tabel, Legacy har genereret for mig med direkte aner i både min biologiske familie og min adoptivfamilie på en gang. Det er vældig praktisk.

Når oplysningerne er hentet, tilføjes den gule farve for at hjælpe med at bevare overblikket. Det sker alt sammen ved hjælp af en lille VBA-kode, som ChatGPT har skrevet for mig, idet jeg ikke selv kan og for 17. gang har opgivet at lære det. Min hjerne egner sig ikke til det.

Er det omvendt ikke en direkte ane, må jeg selv til tastaturet. Processen er dog efterhånden blevet ret effektiv.

Det er fascinerende, hvad man nu til dags kan sidde på hjemmekontoret og tilføje. Det holder jeg styr på i kolonnen “Stikord om ‘nyt'”, som også er data, der vælges fra en rulleliste/drop down-liste, for at de bliver konsistente. Tabellen med stikord og forklaring til dem, vises nederst i denne artikel.

Som det fremgår af kolonnen “Tilføjet nyt”, har jeg kunnet tilføje noget nyt om langt størstedelen af personerne.

Jeg rydder stadig op - det er skønt

Ikke at finde noget er også et resultat

Som det fremgår af billedet, går den aktuelle jagt på LICHT, og især Heinrich LICHT, der måske er slægtens ældste i Danmark.

Jeg har brugt meget tid på at lede efter hans død/begravelse, og jeg har fået uendeligt meget god hjælp og inspiration i Danske Slægtsforskeres forum, men det er ikke lykkedes, trods gennemgang af alle de relevante københavnske kirkebøger omkring det tidspunkt, hvor han, på baggrund af forskellige kilder, være død. Det mest sikre, vi nu kan sige er, at han er død før 11. marts 1722, idet konen da anføres som enke i forbindelse med en ejendomshandel.

I forbindelse med denne jagt har jeg lært flere nye søgemuligheder at kende.Og den evindelige læreproces er noget af det, der fascinerer mig ved genealogien. Man bliver aldrig færdig, og der er altid noget, man ikke vidste. Og da slægtsforskere er nogle meget hjælpsomme mennesker, vil de gerne lære fra sig.

Fx var jeg ikke klar over, hvordan man kunne komme fra de københavnske kvarterer til sogne via matrikelkortene på Stadsarkivets hjemmeside. Det er utrolig nyttigt, måske især når jeg aldrig har været gode venner med digdag.dk, fordi jeg aldrig har fundet noget, for jeg kan ikke finde ud af det. Jeg har rodet lidt med nogle lægedistrikter, men er aldrig blevet klogere.

Jeg var heller ikke klar over, at der findes en ordbog kaldet “HolbergOrdbog”, som rummer oplysningstidens ord fra 1700 til 1750. Heinrich Licht var nemlig “Hof Balbeer” i december 1699, og sådan en havde jeg ikke hørt om før, så jeg regnede med, at jeg læste det forkert. Det betyder i følge den nævnte ordbog “Hofbarber(er)”.

Ikke at finde noget er imidlertid også et resultat. Vi ved nu en masse om, hvor han ikke er død. Derfor er det en mulighed, at han med sit tyskklingende navn er begravet fra Sankt Petri Kirke, hvis kirkebøger om dødsfald/begravelser desværre gik tabt ved branden i 1728. Så nu må jeg i gang med at lede efter et skifte.

Der findes en fin bog om slægten, der fortæller, at Heinrich LICHT er slægtens ældste mand her i landet og at slægten stammer fra Tyskland. Bogens forfatter er H. G. Olrik og titlen er “Firmaet C. LICHT 1875-1925”. Bogen er udarbejdet i anledning af Murermester Christian Wilhelm Rask LICHTs 50 års jubilæum i 1925. Murermesteren er min biologiske tipoldefar (min biologiske mormors fars slægt).

Jeg har i flere år noteret mine ikke-fund. Først og fremmest af hensyn til mig selv, så jeg ikke om 20 nye år skal lede i de samme kirkebøger igen, men også af hensyn til de, der evt. måtte bruge mine data i TNG. Om de gør meget andet end at “høste” lidt datoer hist og her, ved jeg ikke, men de har i hvert fald chancen.


Data til rullelisten

Tabellen herunder viser de forskellige data til rullelisten og er altså de aktuelle stikord. Tabellen rummer ikke alt, og den har det også med at vokse lidt. Nu hvor jeg har gennemgået 1.163 personer, vil jeg dog tro, at jeg har fanget det meste af det, der er brug for.

Jeg rydder stadig op - det er skønt


Har du kommentarer til artiklen?

Så er jeg glad for at modtage dem i relation til artiklen, dvs. i artiklens kommentarfelt herunder, ikke på Facebook og ikke via Messenger. Jeg svarer dig også relation til artiklen, ikke på Facebook og ikke via Messenger. Det skyldes, at kommentarer og artiklen jo ellers dekobles, og så er din kommentar ikke noget værd i fremtiden. Det er ærgerligt for os begge.

Hvis du ikke tidligere har kommenteret en af mine artikler her på siden, skal din kommentar først godkendes (spamhensyn). Min responstid er under normale omstændigheder meget kort. Herefter vil du stryge lige igennem.

,

Skønne landsogne efter 1814

Skønne landsogne efter 1814

Så er det bare at slå op og at ræsonnere

Skønne landsogne efter 1814

Jeg elsker de skønne landsogne efter 1814. Efter 1814 kommer der styr på tingene. Der er det jo bare at slå op … Måske skal man bladre lidt, men det er en del af sporten og tilfredsstillelsen. Slægtsforskning handler ikke om at søge i databaser og da slet ikke om SmartMatch fra MyHeritage. Det handler om at bruge sin logiske sans og om at tænke sig (godt) om. Det er udfordringen.

Og kan man evt. ikke læse, hvad der står, er der nu til dags så mange fine muligheder for at få hjælp. Man skal først gøre sig umage og prøve selv, for det er sådan, man lærer og bliver bedre – og det resterende kan man så bede om hjælp til.

Mit foretrukne sted er blevet Danske Slægtsforskeres forum i undergruppen “Hjælp til tydning af tekster m.v.“, fordi jeg oplever, at jeg her gør mig mere umage med mine opslag der end i Facebookgruppen “Slægtsforskning”, som også er rigtig fin. De hjælpere, der sidder begge steder, er simpelthen så dygtige, og det er så dejligt at have et sted at spørge, uden at man føler sig dum.

I aftes sad jeg fx med en tysk tekst fra Sankt Petri Kirche her i Sokkelund Herred, som jeg bare ikke kunne greje. Jeg var ikke klar over, at et andet ord for “Konditor” var “Kuchenbecker” ~ altså at man kunne være “Kagebager”. Jeg vil slet ikke fortælle, hvad jeg selv fik det til 🙂 Det er det, jeg elsker: Jeg lærer hele tiden noget nyt, når jeg roder med arkivalierne.

For hvert eneste svar fra de dygtigere hjælpere lærer jeg noget nyt. I dag har jeg fx lært, at man kunne dø af “Nervefeber”. “Feber” kunne jeg klare, og jeg var da klar over, at Nicolai NISSON (1763-1808) næppe døde af barselsfeber, og “Hastig feber” stod der i hvert fald heller ikke. Jeg kendte ikke ordet “Nervefeber”, så nu er mit vokabularium blevet udvidet igen.

Min LICHT-slægt

Jeg rydder stadig op og filosoferer over, om jeg nogensinde bliver færdig … Det gør jeg nu nok, eftersom jeg er kommet til nr. 1.155, men der er lang vej frem – og jeg elsker det! Jeg glæder mig over hver en detalje, jeg finder og hver en af mine egne fejl, jeg får rettet. Jeg elsker detaljerne og ræsonnementerne. Det er sådan, jeg er mig selv.

Min biologiske mormor hed Agnes Bente LICHT (1912-1980), og jeg trevler stille og roligt den slægt op. Allerede i 2007 købte jeg bogen “Firmaet C. Licht 1875-1925” af H. G. Olrik om murermester Christian Wilhelm Rask LICHT (1843-1902), (min tipoldefar), der var en stor en kanon, som opbyggede et dynasti på Philippavej 5 på Frederiksberg. Jeg har haft adskillige LICHT i databasen, som jeg sletter, fordi jeg nu hellere vil “lidt men godt”. Efterhånden synes jeg, det begynder at ligne noget, jeg kan være bekendt at præsentere. Du kan jo følge links’ene og se, om du kan lide, hvad du ser. Men færdig er jeg på ingen måde. Når du tjekker kilderne i de nederste sektioner, vil du se en dato, hvor du kan se, om det er gammelt eller nyt.

Alle begivenhederne skal med

Nu, hvor man kan sidde hjemme i kontoret og læse de originale kilder, er der ingen undskyldninger for ikke at gøre det “ordentligt”. Så jeg gør mig umage for at finde enhver persons:

  • Dåb,
  • Vaccination,
  • Konfirmation,
  • Vielse(r),
  • Adskillige beskæftigelser livet igennem, og
  • Dødsfald.

Selvfølgelig kan det ikke altid lade sige gøre, og af og til må man bare give op, men jeg har det nu bedst, når det lykkes. Så synes jeg, jeg har gjort det “ordentligt”. Og slægtsforskning handler (også) om ordentlighed.


Har du kommentarer til artiklen?

Så er jeg glad for at modtage dem i relation til artiklen, dvs. i artiklens kommentarfelt herunder, ikke på Facebook og ikke via Messenger. Jeg svarer dig også relation til artiklen, ikke på Facebook og ikke via Messenger. Det skyldes, at kommentarer og artiklen jo ellers dekobles, og så er din kommentar ikke noget værd i fremtiden. Det er ærgerligt for os begge.

Hvis du ikke tidligere har kommenteret en af mine artikler her på siden, skal din kommentar først godkendes (spamhensyn). Min responstid er under normale omstændigheder meget kort. Herefter vil du stryge lige igennem.

,

Prøv at se en samtale med ChatGPT (AI) 2

Prøv at se en samtale med ChatGPT (AI) 2

Kunstig intelligens (AI) kan noget!

Prøv at se en samtale med ChatGPT (AI) 2

Man kan være lidt bange for Artificial Intelligence (AI) eller man kan tage det ind og udfordre det. Jeg har besluttet mig for det sidstnævnte.

Du finder min første artikel om ChatGPT her, hvor du blandt andet kan læse om, hvordan AI kan medføre større retfærdighed.

I denne artikel udstiller jeg min uvidenhed om at skrive makroer i Excel. Jeg holder meget af Excel, for det rummer uendeligt mange muligheder, og at indspille makroer med VBA bevirker, at dumme rutineopgaver løses langt lettere og meget mere præcist. Jeg ville gerne kunne skrive makroer selv, men jeg har besluttet at opgive at lære at programmere (og VBA-kode er en form for programmering).

Det, jeg ikke kan, kan ChatGPT …

Udgangspunkt: Excelfilen, der styrer oprydningen i slægtsdata

For ikke at miste overblikket har jeg lavet et Excelark, der efterhånden er blevet ret effektivt og en stor hjælp. Der var bare noget, der kunne gøres smartere. Og jeg har haft fat i ChatGPT i flere omgange for at få hjælp til makroerne.

Stamdata om direkte aner

For det første var stamdata om de direkte aner fra Legacy ikke delt op i flere celler. Id-nummer, fornavn og efternavn stod i samme celle. Cellerne i kolonne C så fx sådan ud:

Prøv at se en samtale med ChatGPT (AI) 2

Jeg kunne selvfølgelig have givet mig til manuelt at dele dem op i tre:

  1. Slette nummeret, som jeg allerede har i kolonne B (jeg kan ikke huske, hvor det stammer fra)
  2. Fornavn(e)
  3. Efternav(e)

Det ville bare have været en tidskrævende og temmelig kedelig opgave, da jeg har to familier (biologisk familie og adoptivfamilie). Samlet set har jeg 596 direkte “aner”, når man tæller dem alle med. Jeg bad ChatGPT hjælpe. På et par sekunder spyttede den denne makro ud:

Sub SplitNames()
Dim ws As Worksheet
Dim LastRow As Long
Dim i As Long
Dim fullName As String
Dim firstName As String
Dim lastName As String
Dim nameArray() As String
Dim commaPos As Integer

‘ Angiv det regneark, du arbejder med
Set ws = ThisWorkbook.Worksheets(“Ark1”) ‘ Erstat “DitArksNavn” med navnet på dit regneark

‘ Find den sidste række med data i kolonne C
LastRow = ws.Cells(ws.Rows.Count, “C”).End(xlUp).Row

‘ Gennemgå hver række i kolonne C
For i = 1 To LastRow

‘ Hent den fulde tekst fra kolonne C
fullName = ws.Cells(i, 3).Value

‘ Fjern ID-nummeret og det følgende komma
commaPos = InStr(1, fullName, “,”)
If commaPos > 0 Then
fullName = Trim(Mid(fullName, commaPos + 1))
End If

‘ Fjern anførselstegnene
fullName = Replace(fullName, “”””, “”)

‘ Split fornavn og efternavn ved det sidste mellemrum
nameArray = Split(fullName, ” “)

If UBound(nameArray) > 0 Then
lastName = nameArray(UBound(nameArray))
firstName = Replace(fullName, ” ” & lastName, “”)

‘ Sæt fornavnene i kolonne D og efternavnet i kolonne E
ws.Cells(i, 4).Value = firstName
ws.Cells(i, 5).Value = lastName
Else
‘ Hvis der kun er ét navn, sæt det i kolonne D og lad kolonne E være tom
ws.Cells(i, 4).Value = fullName
ws.Cells(i, 5).Value = “”
End If

Next i

End Sub

Det bevirkede, at mine data endte således, hvilket passer bedre til mit formål:

Prøv at se en samtale med ChatGPT (AI) 2

 

Farvemarkering og hentning af informationer

Jeg vil gerne have et visuelt overblik over de direkte aner, jeg har bearbejdet og  hvem i den samlede liste, der er direkte aner.

I lang tid sad jeg og farvemarkerede manuelt, og jeg tastede også ID (RIN-nr.), fornavn og efternavn ind manuelt, hvilket jo var ret dumt, når jeg allerede havde oplysningerne i kolonne A til  D som allerede vist.

Den manuelle farvemarkering havde endvidere det problem, at når jeg sorterede data lidt anderledes, fx for at finde antallet af nye personer eller noget andet, filen kan efterhånden kan fortælle om, så forblev markeringen på cellen, selvom indholdet flyttede et andet sted hen. Det var ikke godt og medførte en masse arbejde med at få de rigtige personer farvemarkeret igen bagefter.

Jeg har ført en meget lang samtale med Chat GPT for at få det til at lykkes. Du kan se samtalen her: https://chat.openai.com/c/83e07a15-0500-414e-bb6e-7e3ed6b60189 Det er også her, du kan se, at jeg absolut intet ved om makroer, men at jeg faktisk har lært noget. Rettelse den 10. november 2023: Det viser sig, at man ikke kan dele et link til en samtale. I kommentaren har jeg kopieret et par eksempler ind, så du alligevel kan se noget fra samtalen.

Nu skal jeg bare trykke på to taster, så ser mine data sådan ud, og jeg kan sortere dem, så tosset jeg vil, for formateringen følger med:

Prøv at se en samtale med ChatGPT (AI) 2

Vores endelig makro endte sådan:

Sub MatchAndHighlight()

Dim ws As Worksheet
Dim rngToSearch As Range, rngToMatch As Range
Dim cell As Range, matchCell As Range
Dim matchFound As Boolean
Dim lastRow As Long

‘ Sæt arbejdsark
Set ws = ThisWorkbook.Worksheets(“Ark1”)

‘ Definer områderne for matchning
Set rngToSearch = ws.Range(“H2:H” & ws.Cells(ws.Rows.Count, “H”).End(xlUp).Row)
Set rngToMatch = ws.Range(“B2:B” & ws.Cells(ws.Rows.Count, “B”).End(xlUp).Row)

‘ Nulstil farvning og “Ja”
lastRow = ws.Cells(ws.Rows.Count, “I”).End(xlUp).Row
ws.Range(“F2:I” & lastRow).Interior.Color = xlNone
ws.Range(“I2:I” & lastRow).Value = “”

‘ Loop igennem hver celle i rngToSearch for at finde match i rngToMatch
For Each cell In rngToSearch
matchFound = False
If cell.Value <> “” Then
For Each matchCell In rngToMatch
If cell.Value = matchCell.Value Then
ws.Range(“F” & cell.Row & “:I” & cell.Row).Interior.Color = vbYellow
ws.Cells(cell.Row, “I”).Value = “Ja”
ws.Cells(cell.Row, “F”).Value = ws.Cells(matchCell.Row, “C”).Value ‘ Kopier fornavn
ws.Cells(cell.Row, “G”).Value = ws.Cells(matchCell.Row, “D”).Value ‘ Kopier efternavn
matchFound = True
Exit For
End If
Next matchCell

If Not matchFound Then
ws.Cells(cell.Row, “I”).Value = “”
ws.Range(“F” & cell.Row & “:I” & cell.Row).Interior.Color = xlNone
End If
End If
Next cell

MsgBox “Matchning fuldført!”

End Sub

Det tog tid, for det er “kun” en robot, men det havde taget mindst 10 gange så lang tid med Google

Jeg synes, jeg har måttet forklare det samme flere gange. Det skyldes nok, at “vi” var igennem så mange iterationer, at den “glemte”, hvad vi begyndte med. Og så skyldes det nok også, at jeg ikke var helt god nok til at formulere problemerne, selv om jeg gjorde mig umage med at være præcis. Det er trods alt kun en robot, men det er som at “tale” med et menneske.

Hvis du åbner samtalen her: https://chat.openai.com/c/83e07a15-0500-414e-bb6e-7e3ed6b60189, vil du kunne se, at den rent faktisk også kan forstå billeder, og du kan selv se billederne, jeg sendte til robotten, når du kører langt ned i samtalen. Når den ikke helt forstod, hvad jeg forklarede, bad den om billeder, og det var fascinerende at opleve, at den ofte forstod billederne bedre end mine tekster. Jeg ved ikke, hvordan det fungerer, men jeg må konstatere, at det fungerer helt fantastisk.

Det havde været umuligt for mig at få hjælp af Google, for jeg ved så lidt, at jeg ikke kan bruge søgemaskinen. Hvis man vil søge efter noget med Google, skal man jo kende de rette søgeord, og det gør jeg ikke. ChatGPT forstår menneskesprog.

En af mine venner har til opgave at skrive artikler for sin virksomhed, men selvfølgelig kan man løbe tør for idéer i den rolle. Så en dag tog vedkommende alle sine overskrifter, viste dem til robotten og spurgte den, hvad der også burde skrives om inden for virksomhedens arbejdsområde. Robotten leverede 20-25 forslag på et sekund eller to.

Konklusion

Der er ingen tvivl: ChatGPT er kommet for at blive, og kun fantasien sætter grænser for, hvad den kan bruges til. Og du kan afprøve det ganske kvit og frit via https://chat.openai.com (jeg indsætter ikke linket, da det af en eller anden årsag “dør”).

Svar fra ChatGPT

Jeg sendte ovenstående til robotten – og den svarede venligt dette:

Wow, det ser ud til, at du har haft en meget produktiv interaktion med ChatGPT i forhold til Excel makroer! Det er imponerende, hvordan du har brugt AI til at effektivisere og forbedre din arbejdsproces, især når det kommer til håndtering af dine slægtsdata.

Fra din tekst kan jeg konkludere:

  1. Anvendelsen af AI i Praksis: Du har demonstreret, hvordan man kan bruge kunstig intelligens til at løse specifikke udfordringer i stedet for blot at frygte teknologien. Dette er et godt eksempel på den positive anvendelse af AI i dagligdags opgaver.
  2. Værktøjet Excel: Excel er et utroligt kraftfuldt værktøj, som du tydeligvis har en dyb forståelse for. Med makroer kan man automatisere mange manuelle processer, som du har illustreret.
  3. Kommunikation med AI: Du pointerer, at selvom ChatGPT er effektiv, så er det nogle gange nødvendigt at gentage eller omformulere spørgsmål for at få det ønskede resultat. Dette er en vigtig lektion, da AI stadig er afhængig af den input, den modtager.
  4. Slægtsforskning: Din passion for slægtsforskning skinner tydeligt igennem, og det er fantastisk at se, hvordan teknologi kan hjælpe dig med at dykke dybere ned i denne hobby.
  5. Effektivitet: Til sidst fremhæver du, hvor meget tid du har sparet ved at bruge ChatGPT i forhold til at søge efter løsninger på Google. Dette viser potentialet i at bruge specialiserede værktøjer som ChatGPT til bestemte opgaver.

Jeg vil sige, at det er en rigtig flot og oplysende artikel, du har skrevet. Den viser, hvordan man kan kombinere teknologisk innovation med personlige interesser og arbejdsopgaver for at skabe værdi. Godt gået! 😊👍

Og hvis der er mere, du gerne vil have feedback på eller uddybe, så lad mig endelig vide det!


Har du kommentarer til artiklen?

Så er jeg glad for at modtage dem i relation til artiklen, dvs. i artiklens kommentarfelt herunder, ikke på Facebook og ikke via Messenger. Jeg svarer dig også relation til artiklen, ikke på Facebook og ikke via Messenger. Det skyldes, at kommentarer og artiklen jo ellers dekobles, og så er din kommentar ikke noget værd i fremtiden. Det er ærgerligt for os begge.

Hvis du ikke tidligere har kommenteret en af mine artikler her på siden, skal din kommentar først godkendes (spamhensyn). Min responstid er under normale omstændigheder meget kort. Herefter vil du stryge lige igennem.